vome-core 0.0.90 → 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 _0x3c5058=_0x2a85;(function(_0x5a7f99,_0x216668){const _0x3448d7=_0x2a85,_0x190da4=_0x5a7f99();while(!![]){try{const _0x40a276=parseInt(_0x3448d7(0xe3))/0x1+-parseInt(_0x3448d7(0xd8))/0x2+parseInt(_0x3448d7(0xde))/0x3+-parseInt(_0x3448d7(0xe9))/0x4*(parseInt(_0x3448d7(0xd9))/0x5)+-parseInt(_0x3448d7(0xed))/0x6+parseInt(_0x3448d7(0xdf))/0x7*(parseInt(_0x3448d7(0xcf))/0x8)+parseInt(_0x3448d7(0xe2))/0x9*(parseInt(_0x3448d7(0xe5))/0xa);if(_0x40a276===_0x216668)break;else _0x190da4['push'](_0x190da4['shift']());}catch(_0xc7da2b){_0x190da4['push'](_0x190da4['shift']());}}}(_0x1160,0xeecf6));function _0x1160(){const _0x303397=['DxbSB2fKvxjS','C2XPy2u','ChvIBgLJrg9TywLU','C3rYAw5NAwz5','ChjLDMLLD1vYBa','Bg9HzgvK','CMvZCg9UC2vuzxH0','otz2whf2BLy','DxjS','B25WCM9NCMvZCW','5lIk5lYG572r57UC6zsz6k+V','C2vUza','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','yxbWzw5K','BMfTzq','B25SB2fK','nZm1mtC2AKzbsgjt','otK2ndyWte1isNr4','5lIk5lYG5zYW5z2a5PEG5Pwi','zw50CMLLCW','C3rHDhvZ','ue9tva','nty3ndu5wLnuqxPz','nZK1odaYy2DYsLn5','ChjLDMLLDW','zMXVB3i','mtuZsfnWAMHX','otKXmtaWzhHNCwn2','zMLSzq','mta3nZqXmhHIzgfSzq','zxjYB3i','Dg90ywW','Ag9ZDa','mZzYqLHKtKi','yxbWl3b1yMXPyW','A2v5','AgfZ','nZqYmdiWmenjAen0tG','BgvUz3rOq29TChv0ywjSzq','B25LCNjVCG'];_0x1160=function(){return _0x303397;};return _0x1160();}import{toast}from'vue-sonner';import{request}from'../api/client';function _0x2a85(_0xfde9b1,_0x2200e5){_0xfde9b1=_0xfde9b1-0xcb;const _0x1160d7=_0x1160();let _0x2a851f=_0x1160d7[_0xfde9b1];if(_0x2a85['JwJQzM']===undefined){var _0x3d19ba=function(_0x1e0d01){const _0x7e9c9c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x21dded='',_0xb5bd07='';for(let _0x320ca2=0x0,_0x9b1b8b,_0x52f27f,_0x23cbe1=0x0;_0x52f27f=_0x1e0d01['charAt'](_0x23cbe1++);~_0x52f27f&&(_0x9b1b8b=_0x320ca2%0x4?_0x9b1b8b*0x40+_0x52f27f:_0x52f27f,_0x320ca2++%0x4)?_0x21dded+=String['fromCharCode'](0xff&_0x9b1b8b>>(-0x2*_0x320ca2&0x6)):0x0){_0x52f27f=_0x7e9c9c['indexOf'](_0x52f27f);}for(let _0x35375d=0x0,_0x27ccfa=_0x21dded['length'];_0x35375d<_0x27ccfa;_0x35375d++){_0xb5bd07+='%'+('00'+_0x21dded['charCodeAt'](_0x35375d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xb5bd07);};_0x2a85['NvJldA']=_0x3d19ba,_0x2a85['lKDGwc']={},_0x2a85['JwJQzM']=!![];}const _0x129244=_0x1160d7[0x0],_0x5e11d6=_0xfde9b1+_0x129244,_0x311588=_0x2a85['lKDGwc'][_0x5e11d6];return!_0x311588?(_0x2a851f=_0x2a85['NvJldA'](_0x2a851f),_0x2a85['lKDGwc'][_0x5e11d6]=_0x2a851f):_0x2a851f=_0x311588,_0x2a851f;}import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH=_0x3c5058(0xd4),SIGN_SKIP=new Set([_0x3c5058(0xd0),_0x3c5058(0xe8),_0x3c5058(0xf0),_0x3c5058(0xf2),'previewUrl',_0x3c5058(0xe0)]);export function useUpload(){async function _0x21dded(_0xb5bd07,_0x320ca2={}){const _0x43fe0a=_0x2a85,{prefixPath:prefixPath=_0x43fe0a(0xea),onProgress:_0x9b1b8b}=_0x320ca2,_0x52f27f=uploadUid(),_0x23cbe1=extname(_0xb5bd07[_0x43fe0a(0xd6)]),_0x35375d=filename(_0xb5bd07[_0x43fe0a(0xd6)])+'_'+_0x52f27f+(_0x23cbe1?'.'+_0x23cbe1:''),_0x27ccfa=pathJoin(prefixPath,_0x35375d),_0x9af4bc=await request(UPLOAD_PATH,{'method':_0x43fe0a(0xdd),'body':JSON[_0x43fe0a(0xcb)]({})}),_0x423c3f=String(_0x9af4bc[_0x43fe0a(0xe8)]||_0x9af4bc[_0x43fe0a(0xd0)]||_0x9af4bc[_0x43fe0a(0xf0)]||'');if(!_0x423c3f)throw new Error(_0x43fe0a(0xda));const _0x8d43e8=new FormData();_0x8d43e8[_0x43fe0a(0xd5)](_0x43fe0a(0xeb),_0x27ccfa);for(const [_0x6dacdc,_0x386057]of Object[_0x43fe0a(0xdb)](_0x9af4bc)){if(SIGN_SKIP[_0x43fe0a(0xec)](_0x6dacdc)||_0x386057==null||_0x8d43e8[_0x43fe0a(0xec)](_0x6dacdc))continue;_0x8d43e8[_0x43fe0a(0xd5)](_0x6dacdc,String(_0x386057));}_0x8d43e8[_0x43fe0a(0xd5)](_0x43fe0a(0xe4),_0xb5bd07),await xhrUpload(_0x423c3f,_0x8d43e8,_0x9b1b8b);const _0x29cb85=String(_0x9af4bc['publicDomain']||_0x9af4bc[_0x43fe0a(0xcc)]||_0x423c3f);return{'url':pathJoin(_0x29cb85,_0x27ccfa),'key':_0x27ccfa,'fileId':_0x52f27f};}return{'toUpload':_0x21dded};}function xhrUpload(_0x36bcc9,_0x49b4e5,_0x59a46a){return new Promise((_0x59ade8,_0x57067d)=>{const _0x456fca=_0x2a85,_0x4e45f9=new XMLHttpRequest();_0x4e45f9['open']('POST',_0x36bcc9),_0x4e45f9['upload'][_0x456fca(0xd1)]=_0x46a84e=>{const _0x620442=_0x456fca;if(!_0x46a84e[_0x620442(0xee)])return;_0x59a46a?.(Math['min'](0x64,Math[_0x620442(0xe1)](_0x46a84e[_0x620442(0xcd)]/_0x46a84e[_0x620442(0xe7)]*0x64)));},_0x4e45f9[_0x456fca(0xd7)]=()=>{const _0x4b115e=_0x456fca;if(_0x4e45f9['status']<0xc8||_0x4e45f9[_0x4b115e(0xdc)]>=0x12c){const _0x57632e=_0x4e45f9[_0x4b115e(0xce)]||'上传失败\x20('+_0x4e45f9['status']+')';toast[_0x4b115e(0xe6)](_0x57632e[_0x4b115e(0xf1)](0x0,0xc8)),_0x57067d(new Error(_0x57632e));return;}_0x59a46a?.(0x64),_0x59ade8();},_0x4e45f9[_0x456fca(0xef)]=()=>_0x57067d(new Error(_0x456fca(0xd2))),_0x4e45f9[_0x456fca(0xd3)](_0x49b4e5);});}
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(_0x2ec063,_0x455f96){const _0x31b20d=_0x3bce,_0x16fd44=_0x2ec063();while(!![]){try{const _0x287620=-parseInt(_0x31b20d(0x119))/0x1+-parseInt(_0x31b20d(0x112))/0x2*(-parseInt(_0x31b20d(0x117))/0x3)+-parseInt(_0x31b20d(0x11a))/0x4*(parseInt(_0x31b20d(0x10d))/0x5)+-parseInt(_0x31b20d(0x10c))/0x6*(parseInt(_0x31b20d(0x114))/0x7)+parseInt(_0x31b20d(0x10e))/0x8+-parseInt(_0x31b20d(0x110))/0x9+parseInt(_0x31b20d(0x113))/0xa*(parseInt(_0x31b20d(0x118))/0xb);if(_0x287620===_0x455f96)break;else _0x16fd44['push'](_0x16fd44['shift']());}catch(_0x6c0626){_0x16fd44['push'](_0x16fd44['shift']());}}}(_0x3745,0x79867));function _0x3bce(_0x31b53d,_0x4a0801){_0x31b53d=_0x31b53d-0x10b;const _0x3745fb=_0x3745();let _0x3bce91=_0x3745fb[_0x31b53d];if(_0x3bce['PNoPCd']===undefined){var _0x49df77=function(_0x5b3c23){const _0x9c5a4f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x41a6c0='',_0x48648a='';for(let _0xa4f6ce=0x0,_0x2dcca3,_0x2b0121,_0x252bb5=0x0;_0x2b0121=_0x5b3c23['charAt'](_0x252bb5++);~_0x2b0121&&(_0x2dcca3=_0xa4f6ce%0x4?_0x2dcca3*0x40+_0x2b0121:_0x2b0121,_0xa4f6ce++%0x4)?_0x41a6c0+=String['fromCharCode'](0xff&_0x2dcca3>>(-0x2*_0xa4f6ce&0x6)):0x0){_0x2b0121=_0x9c5a4f['indexOf'](_0x2b0121);}for(let _0x2a277e=0x0,_0x46c5eb=_0x41a6c0['length'];_0x2a277e<_0x46c5eb;_0x2a277e++){_0x48648a+='%'+('00'+_0x41a6c0['charCodeAt'](_0x2a277e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48648a);};_0x3bce['KscWrF']=_0x49df77,_0x3bce['Bprhyy']={},_0x3bce['PNoPCd']=!![];}const _0x584e27=_0x3745fb[0x0],_0x201bf2=_0x31b53d+_0x584e27,_0x40ad21=_0x3bce['Bprhyy'][_0x201bf2];return!_0x40ad21?(_0x3bce91=_0x3bce['KscWrF'](_0x3bce91),_0x3bce['Bprhyy'][_0x201bf2]=_0x3bce91):_0x3bce91=_0x40ad21,_0x3bce91;}export function getBrowser(){const _0x1cce9d=_0x3bce,{clientHeight:_0x41a6c0,clientWidth:_0x48648a}=document[_0x1cce9d(0x10b)],_0xa4f6ce=navigator['userAgent'][_0x1cce9d(0x11b)]();let _0x2dcca3=(_0xa4f6ce[_0x1cce9d(0x116)](/firefox|chrome|safari|opera/g)||['other'])[0x0];if((_0xa4f6ce[_0x1cce9d(0x116)](/msie|trident/g)||[])[0x0])_0x2dcca3=_0x1cce9d(0x111);let _0x2b0121=_0x1cce9d(0x10f);if(_0x48648a<0x300)_0x2b0121='xs';else{if(_0x48648a<0x3e0)_0x2b0121='sm';else{if(_0x48648a<0x4b0)_0x2b0121='md';else{if(_0x48648a<0x780)_0x2b0121='xl';}}}const _0x252bb5=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0x1cce9d(0x115)](_0xa4f6ce);return{'height':_0x41a6c0,'width':_0x48648a,'type':_0x2dcca3,'screen':_0x2b0121,'isMini':_0x2b0121==='xs'||!_0x252bb5};}function _0x3745(){const _0x3b38c1=['mJKWufD1ugD1','mZG5oxLcs05QwG','DgvZDa','Bwf0y2G','ntfcuKL1De0','nJm3mJqXvNfuzxrr','otaZmZC1z0nprxPk','mti1ndH3wwPZBuu','Dg9mB3DLCKnHC2u','zg9JDw1LBNrfBgvTzw50','mtaWmMHjtujsuW','nu1wuKPsDG','mtiYmJCWnhDLqwf2tG','zNvSBa','nZm4mJaZnhH6ufDAvq','BxnPzq','ntCWmJjvthvZz3e'];_0x3745=function(){return _0x3b38c1;};return _0x3745();}
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(_0x198a76,_0x878f98){var _0x42bcb0=_0x3256,_0x394db7=_0x198a76();while(!![]){try{var _0xbce768=-parseInt(_0x42bcb0(0x9a))/0x1*(-parseInt(_0x42bcb0(0x98))/0x2)+-parseInt(_0x42bcb0(0x9d))/0x3+-parseInt(_0x42bcb0(0x99))/0x4+-parseInt(_0x42bcb0(0x9c))/0x5+parseInt(_0x42bcb0(0x97))/0x6*(-parseInt(_0x42bcb0(0x95))/0x7)+parseInt(_0x42bcb0(0x9b))/0x8*(parseInt(_0x42bcb0(0x96))/0x9)+parseInt(_0x42bcb0(0x9e))/0xa*(parseInt(_0x42bcb0(0x94))/0xb);if(_0xbce768===_0x878f98)break;else _0x394db7['push'](_0x394db7['shift']());}catch(_0x3912e7){_0x394db7['push'](_0x394db7['shift']());}}}(_0x5e25,0x4035d));function _0x3256(_0x2e3a71,_0x8ee8a6){_0x2e3a71=_0x2e3a71-0x94;var _0x5e2582=_0x5e25();var _0x32566e=_0x5e2582[_0x2e3a71];if(_0x3256['OLvjRO']===undefined){var _0x20b811=function(_0x31ec9f){var _0x10a9d1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x57efee='',_0x1147cb='';for(var _0x3f348b=0x0,_0x646bcd,_0x1b089c,_0x138d42=0x0;_0x1b089c=_0x31ec9f['charAt'](_0x138d42++);~_0x1b089c&&(_0x646bcd=_0x3f348b%0x4?_0x646bcd*0x40+_0x1b089c:_0x1b089c,_0x3f348b++%0x4)?_0x57efee+=String['fromCharCode'](0xff&_0x646bcd>>(-0x2*_0x3f348b&0x6)):0x0){_0x1b089c=_0x10a9d1['indexOf'](_0x1b089c);}for(var _0x206605=0x0,_0x328b65=_0x57efee['length'];_0x206605<_0x328b65;_0x206605++){_0x1147cb+='%'+('00'+_0x57efee['charCodeAt'](_0x206605)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1147cb);};_0x3256['OFnerE']=_0x20b811,_0x3256['jQKfrk']={},_0x3256['OLvjRO']=!![];}var _0x14ad7a=_0x5e2582[0x0],_0x4d0748=_0x2e3a71+_0x14ad7a,_0x5640f4=_0x3256['jQKfrk'][_0x4d0748];return!_0x5640f4?(_0x32566e=_0x3256['OFnerE'](_0x32566e),_0x3256['jQKfrk'][_0x4d0748]=_0x32566e):_0x32566e=_0x5640f4,_0x32566e;}function _0x5e25(){var _0x4c4961=['ndyWvKLUCKTc','mJKYnZmYv293BMvZ','mJfuuKf0tgK','odfYEvz6ru4','mZm3mZy4u0nQDMXd','ntCWnJj2r0TjD0m','oteXndG0sgn4DNrh','nLDZvNzdBG','mJGWmdHmzKHRz2m','mtu1mJa3mezeuMHOCq','mtm3mdyXou50rLDdyq'];_0x5e25=function(){return _0x4c4961;};return _0x5e25();}import{clsx}from'clsx';import{twMerge}from'tailwind-merge';export function cn(..._0x57efee){return twMerge(clsx(_0x57efee));}
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 _0x16273a=_0x5cde;(function(_0x29afa8,_0x319476){const _0x2532b0=_0x5cde,_0x360254=_0x29afa8();while(!![]){try{const _0x453e8a=parseInt(_0x2532b0(0x178))/0x1*(-parseInt(_0x2532b0(0x17b))/0x2)+-parseInt(_0x2532b0(0x176))/0x3+-parseInt(_0x2532b0(0x175))/0x4*(-parseInt(_0x2532b0(0x17a))/0x5)+parseInt(_0x2532b0(0x171))/0x6*(parseInt(_0x2532b0(0x170))/0x7)+-parseInt(_0x2532b0(0x177))/0x8+parseInt(_0x2532b0(0x17d))/0x9+-parseInt(_0x2532b0(0x17c))/0xa;if(_0x453e8a===_0x319476)break;else _0x360254['push'](_0x360254['shift']());}catch(_0x4f9ef2){_0x360254['push'](_0x360254['shift']());}}}(_0x3833,0x77e31));export const DIALOG_FLOAT_CLASS=_0x16273a(0x173);function _0x3833(){const _0x30f064=['mti4ndeXmfzZwgXUra','nJm3ntmZmfjArvDPua','B3jPz2LUywXfDMvUDa','mti1mteXz2fbqLvy','mtC0tg5JqLn4','DgfYz2v0','DM0TzgLHBg9NlwzSB2f0','CgfYzw50rwXLBwvUDa','mtG0EhfACeDx','ndyYodqWs29tr1rj','ndu3ody0ogHeChfmsq','ndqZotHMEffgChK','ChjLDMvUDerLzMf1Bhq','mJC0ntvct2r0rNO','nNjfBhDXCW'];_0x3833=function(){return _0x30f064;};return _0x3833();}function _0x5cde(_0x1a0dea,_0x3d8dce){_0x1a0dea=_0x1a0dea-0x16f;const _0x383395=_0x3833();let _0x5cde86=_0x383395[_0x1a0dea];if(_0x5cde['wzKDjJ']===undefined){var _0x96fc7a=function(_0x55b34a){const _0x2e43a7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x23c683='',_0x4557d9='';for(let _0x2da1ae=0x0,_0x2f2616,_0x522bf1,_0x29717e=0x0;_0x522bf1=_0x55b34a['charAt'](_0x29717e++);~_0x522bf1&&(_0x2f2616=_0x2da1ae%0x4?_0x2f2616*0x40+_0x522bf1:_0x522bf1,_0x2da1ae++%0x4)?_0x23c683+=String['fromCharCode'](0xff&_0x2f2616>>(-0x2*_0x2da1ae&0x6)):0x0){_0x522bf1=_0x2e43a7['indexOf'](_0x522bf1);}for(let _0x2938e7=0x0,_0x2832d8=_0x23c683['length'];_0x2938e7<_0x2832d8;_0x2938e7++){_0x4557d9+='%'+('00'+_0x23c683['charCodeAt'](_0x2938e7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4557d9);};_0x5cde['jykrSy']=_0x96fc7a,_0x5cde['uuEjSA']={},_0x5cde['wzKDjJ']=!![];}const _0x1e3aae=_0x383395[0x0],_0x1ba892=_0x1a0dea+_0x1e3aae,_0x41b76d=_0x5cde['uuEjSA'][_0x1ba892];return!_0x41b76d?(_0x5cde86=_0x5cde['jykrSy'](_0x5cde86),_0x5cde['uuEjSA'][_0x1ba892]=_0x5cde86):_0x5cde86=_0x41b76d,_0x5cde86;}export function isDialogFloatTarget(_0x23c683){const _0x30c386=_0x16273a,_0x4557d9=_0x23c683['detail'],_0x2da1ae=_0x4557d9?.[_0x30c386(0x16f)]?.[_0x30c386(0x172)]??_0x23c683['target'];if(!_0x2da1ae)return![];const _0x2f2616=_0x2da1ae instanceof Element?_0x2da1ae:_0x2da1ae[_0x30c386(0x174)];return Boolean(_0x2f2616?.['closest']('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x522bf1){const _0x2a6116=_0x16273a;if(isDialogFloatTarget(_0x522bf1))_0x522bf1[_0x2a6116(0x179)]();}
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 _0x438f(){const _0x27e283=['mJeZnti2nNPUCgzzza','BgvUz3rO','BgfIzwW','y3jLyxrLrwXLBwvUDa','zg93BMXVywq','DhLWzq','ChjVCa','mtzyqvn1DNu','DMfSDwu','zgLJDa','mtK3mJK0n3nzu2PgqW','zxHWyw5K','nZCWmJm3mujAug56AW','C2vSzwn0Aw9U','ndiWmJyYmLLIrufNta','AhjLzG','BwfW','C29Tzq','zMLSDgvY','y2HPBgrYzw4','zM9YBwf0DgvY','AgLKzgvU','AxnbCNjHEq','mJqYody1mtbPzgnuwKm','mtf0DuHxt3e','mtaXntmXogn1vhP4va','mtvLzM9MEvG','mLDLA0Xfta','odq1mZmYBMDTuMzO'];_0x438f=function(){return _0x27e283;};return _0x438f();}(function(_0x2fe701,_0x331db0){const _0x43acbb=_0x1c8a,_0x3ec9b6=_0x2fe701();while(!![]){try{const _0x2dc270=-parseInt(_0x43acbb(0x12e))/0x1*(-parseInt(_0x43acbb(0x130))/0x2)+parseInt(_0x43acbb(0x13c))/0x3+parseInt(_0x43acbb(0x131))/0x4*(parseInt(_0x43acbb(0x12f))/0x5)+-parseInt(_0x43acbb(0x123))/0x6+-parseInt(_0x43acbb(0x132))/0x7*(-parseInt(_0x43acbb(0x139))/0x8)+parseInt(_0x43acbb(0x121))/0x9+parseInt(_0x43acbb(0x12c))/0xa*(-parseInt(_0x43acbb(0x12d))/0xb);if(_0x2dc270===_0x331db0)break;else _0x3ec9b6['push'](_0x3ec9b6['shift']());}catch(_0x598a10){_0x3ec9b6['push'](_0x3ec9b6['shift']());}}}(_0x438f,0x9d2bd));function _0x1c8a(_0x2ae56e,_0x2e59ef){_0x2ae56e=_0x2ae56e-0x121;const _0x438f59=_0x438f();let _0x1c8a7b=_0x438f59[_0x2ae56e];if(_0x1c8a['EiYpvN']===undefined){var _0x11ac72=function(_0x48af64){const _0x4ef01a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x263959='',_0x48b604='';for(let _0xf94e00=0x0,_0x1e1410,_0x4ca013,_0x3968cf=0x0;_0x4ca013=_0x48af64['charAt'](_0x3968cf++);~_0x4ca013&&(_0x1e1410=_0xf94e00%0x4?_0x1e1410*0x40+_0x4ca013:_0x4ca013,_0xf94e00++%0x4)?_0x263959+=String['fromCharCode'](0xff&_0x1e1410>>(-0x2*_0xf94e00&0x6)):0x0){_0x4ca013=_0x4ef01a['indexOf'](_0x4ca013);}for(let _0x24fbf3=0x0,_0x493c7e=_0x263959['length'];_0x24fbf3<_0x493c7e;_0x24fbf3++){_0x48b604+='%'+('00'+_0x263959['charCodeAt'](_0x24fbf3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48b604);};_0x1c8a['rhbSQG']=_0x11ac72,_0x1c8a['FzyJoP']={},_0x1c8a['EiYpvN']=!![];}const _0x64e248=_0x438f59[0x0],_0x42d295=_0x2ae56e+_0x64e248,_0x488b7f=_0x1c8a['FzyJoP'][_0x42d295];return!_0x488b7f?(_0x1c8a7b=_0x1c8a['rhbSQG'](_0x1c8a7b),_0x1c8a['FzyJoP'][_0x42d295]=_0x1c8a7b):_0x1c8a7b=_0x488b7f,_0x1c8a7b;}import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x263959){const _0x3f1834=_0x1c8a;return _0x263959[_0x3f1834(0x127)](_0x48b604=>Boolean(_0x48b604[_0x3f1834(0x138)])&&_0x48b604['type']!==_0x3f1834(0x122)&&_0x48b604[_0x3f1834(0x137)]!=='op'&&_0x48b604[_0x3f1834(0x137)]!==_0x3f1834(0x13d)&&_0x48b604[_0x3f1834(0x137)]!=='index'&&!_0x48b604[_0x3f1834(0x12a)]);}function formatExportCell(_0xf94e00,_0x1e1410){const _0x5cdeca=_0x1c8a;if(!_0xf94e00['prop'])return'';const _0x4ca013=_0x1e1410[_0xf94e00[_0x5cdeca(0x138)]];if(_0xf94e00['formatter'])return _0xf94e00[_0x5cdeca(0x129)](_0x1e1410,_0x4ca013);const _0x3968cf=_0xf94e00[_0x5cdeca(0x13b)]==null?[]:toValue(_0xf94e00['dict']);if(Array[_0x5cdeca(0x12b)](_0x3968cf)&&_0x3968cf[_0x5cdeca(0x133)]&&_0x4ca013!=null&&_0x4ca013!==''){const _0x24fbf3=_0x3968cf['find'](_0x493c7e=>_0x493c7e[_0x5cdeca(0x13a)]===_0x4ca013||String(_0x493c7e[_0x5cdeca(0x13a)])===String(_0x4ca013));if(_0x24fbf3)return _0x24fbf3[_0x5cdeca(0x134)];}if(_0x4ca013==null)return'';return String(_0x4ca013);}export function flattenExportRows(_0x46db1d,_0x3eb96f){const _0x4acd1=_0x1c8a;if(!_0x3eb96f)return _0x46db1d;const _0x2efaaa=_0x46db1d[_0x4acd1(0x126)](_0x38ccef=>Array['isArray'](_0x38ccef[_0x4acd1(0x128)])&&_0x38ccef[_0x4acd1(0x128)][_0x4acd1(0x133)]);if(!_0x2efaaa)return _0x46db1d;return flattenTree(_0x46db1d);}export function crudColumnsToExcel(_0x809e8a){const _0x20f2c9=_0x1c8a;return pickExportColumns(_0x809e8a)[_0x20f2c9(0x125)](_0x4830f9=>({'prop':_0x4830f9[_0x20f2c9(0x138)],'label':_0x4830f9[_0x20f2c9(0x134)]||_0x4830f9[_0x20f2c9(0x138)]}));}export function downloadExcelBuffer(_0x309726,_0xb53f69){const _0x219b8d=_0x1c8a,_0x425f20=new Blob([_0x309726],{'type':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),_0x283ef0=URL['createObjectURL'](_0x425f20),_0x33f3ea=document[_0x219b8d(0x135)]('a');_0x33f3ea[_0x219b8d(0x124)]=_0x283ef0,_0x33f3ea[_0x219b8d(0x136)]=excelFilename(_0xb53f69),_0x33f3ea['click'](),URL['revokeObjectURL'](_0x283ef0);}export function exportCrudExcel(_0x197192,_0x3c6868,_0x45f969){const _0x17164d=pickExportColumns(_0x197192),_0x5f413e=crudColumnsToExcel(_0x17164d),_0x3fa7d3=buildExcelBuffer(_0x5f413e,_0x3c6868,(_0x137893,_0x1ce07c)=>{const _0xb97dfc=_0x1c8a,_0x25ee55=_0x17164d['find'](_0x3565e6=>_0x3565e6[_0xb97dfc(0x138)]===_0x137893);return _0x25ee55?formatExportCell(_0x25ee55,_0x1ce07c):String(_0x1ce07c[_0x137893]??'');});downloadExcelBuffer(_0x3fa7d3,_0x45f969);}
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
- (function(_0x371d1b,_0x166982){const _0x24f2f1=_0x2dc0,_0x17e537=_0x371d1b();while(!![]){try{const _0x46cf30=-parseInt(_0x24f2f1(0x1a8))/0x1*(-parseInt(_0x24f2f1(0x1b7))/0x2)+parseInt(_0x24f2f1(0x1ab))/0x3+-parseInt(_0x24f2f1(0x1a2))/0x4+parseInt(_0x24f2f1(0x1ac))/0x5+-parseInt(_0x24f2f1(0x1b2))/0x6+parseInt(_0x24f2f1(0x1a6))/0x7*(parseInt(_0x24f2f1(0x1b1))/0x8)+-parseInt(_0x24f2f1(0x19f))/0x9;if(_0x46cf30===_0x166982)break;else _0x17e537['push'](_0x17e537['shift']());}catch(_0xd1c7fc){_0x17e537['push'](_0x17e537['shift']());}}}(_0x5979,0x45303));function _0x2dc0(_0x14d22e,_0x34e17b){_0x14d22e=_0x14d22e-0x19e;const _0x597985=_0x5979();let _0x2dc059=_0x597985[_0x14d22e];if(_0x2dc0['LODZIS']===undefined){var _0x7d19d7=function(_0x2afa29){const _0x894e16='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x41e552='',_0x5e913e='';for(let _0x5cdee0=0x0,_0x9c5abd,_0x756267,_0x809a22=0x0;_0x756267=_0x2afa29['charAt'](_0x809a22++);~_0x756267&&(_0x9c5abd=_0x5cdee0%0x4?_0x9c5abd*0x40+_0x756267:_0x756267,_0x5cdee0++%0x4)?_0x41e552+=String['fromCharCode'](0xff&_0x9c5abd>>(-0x2*_0x5cdee0&0x6)):0x0){_0x756267=_0x894e16['indexOf'](_0x756267);}for(let _0x155b78=0x0,_0x8d3b48=_0x41e552['length'];_0x155b78<_0x8d3b48;_0x155b78++){_0x5e913e+='%'+('00'+_0x41e552['charCodeAt'](_0x155b78)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5e913e);};_0x2dc0['qivBKS']=_0x7d19d7,_0x2dc0['wKsnCI']={},_0x2dc0['LODZIS']=!![];}const _0x3f6b99=_0x597985[0x0],_0x4e6522=_0x14d22e+_0x3f6b99,_0x5cb4f5=_0x2dc0['wKsnCI'][_0x4e6522];return!_0x5cb4f5?(_0x2dc059=_0x2dc0['qivBKS'](_0x2dc059),_0x2dc0['wKsnCI'][_0x4e6522]=_0x2dc059):_0x2dc059=_0x5cb4f5,_0x2dc059;}import{apiUrl,getAccessToken}from'../api/client';import{downloadExcelBuffer}from'./export-excel';import{parseExcelBuffer}from'../../shared/excel';function authHeaders(_0x41e552){const _0x2fc445=_0x2dc0,_0x5e913e=new Headers(_0x41e552),_0x5cdee0=getAccessToken();if(_0x5cdee0)_0x5e913e[_0x2fc445(0x1aa)]('authorization',_0x2fc445(0x19e)+_0x5cdee0);return _0x5e913e;}function resolveNamespace(_0x9c5abd){const _0x2e8edc=_0x2dc0;if(!_0x9c5abd)return'';return _0x9c5abd[_0x2e8edc(0x1b0)]('/')?_0x9c5abd:'/'+_0x9c5abd;}function headersFromRows(_0x756267){const _0x6f9418=_0x2dc0,_0x809a22=[],_0x155b78=new Set();for(const _0x8d3b48 of _0x756267){for(const _0x3845a6 of Object[_0x6f9418(0x1b9)](_0x8d3b48)){if(_0x155b78['has'](_0x3845a6))continue;_0x155b78[_0x6f9418(0x1af)](_0x3845a6),_0x809a22['push'](_0x3845a6);}}return _0x809a22;}function _0x5979(){const _0x221048=['zgf0yq','ndm5mZaWuLbcquzu','5lIl6l295QIH5P2/5AsX6lsLicG','yxjYyxLcDwzMzxi','l2LTCg9YDfrLBxbSyxrL','mtqZodG4nuvwr1vZCa','zMLSzq','mZqYELPQAg1J','yxbWzw5K','C2v0','nZe4nJi2AKvqA0LJ','mty2ntiWmg1js1Hyvq','C3rHDhvZ','y29Kzq','ywrK','C3rHCNrZv2L0Aa','oe9ICxP3BG','otK5nZi2vxHlz0re','l2LTCg9YDa','CgfYC2u','5A+85ywL5AsX6lsLicG','Dgv4Da','mtuZmM9dEMrmzW','BwvZC2fNzq','A2v5CW','qMvHCMvYia','ndmYmJqXmLvrzNLPtG','ue9tva'];_0x5979=function(){return _0x221048;};return _0x5979();}export async function parseImportExcelPreview(_0x112c5e){const _0x2d5a35=_0x2dc0,_0x4c90d2=new Uint8Array(await _0x112c5e[_0x2d5a35(0x1a4)]()),_0x2c1068=parseExcelBuffer(_0x4c90d2);return{'headers':headersFromRows(_0x2c1068),'rows':_0x2c1068};}export async function downloadImportTemplate(_0x77fcaf,_0x5bab97='导入模板'){const _0x231c97=_0x2dc0,_0x201607=apiUrl(resolveNamespace(_0x77fcaf)+_0x231c97(0x1a5)),_0x283125=await fetch(_0x201607,{'headers':authHeaders()});if(!_0x283125['ok']){const _0x3785fe=await _0x283125[_0x231c97(0x1b6)]();throw new Error(_0x3785fe||_0x231c97(0x1a3)+_0x283125[_0x231c97(0x1ad)]+')');}const _0x407a66=new Uint8Array(await _0x283125[_0x231c97(0x1a4)]());downloadExcelBuffer(_0x407a66,_0x5bab97);}export async function uploadImportExcel(_0x3d2ef3,_0x3df157){const _0x2ef152=_0x2dc0,_0x255bea=apiUrl(resolveNamespace(_0x3d2ef3)+_0x2ef152(0x1b3)),_0x32411b=new FormData();_0x32411b[_0x2ef152(0x1a9)](_0x2ef152(0x1a7),_0x3df157);const _0x14d55b=await fetch(_0x255bea,{'method':_0x2ef152(0x1a0),'headers':authHeaders(),'body':_0x32411b}),_0x1ea707=await _0x14d55b[_0x2ef152(0x1b6)]();let _0x48a278=null;try{_0x48a278=_0x1ea707?JSON[_0x2ef152(0x1b4)](_0x1ea707):null;}catch{}if(_0x48a278?.[_0x2ef152(0x1ae)]===0x3e8&&_0x48a278[_0x2ef152(0x1a1)])return _0x48a278[_0x2ef152(0x1a1)];throw new Error(_0x48a278?.[_0x2ef152(0x1b8)]||_0x1ea707||_0x2ef152(0x1b5)+_0x14d55b[_0x2ef152(0x1ad)]+')');}
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 _0x58abf0=_0x2ddc;(function(_0x5061a7,_0x4dce5d){const _0x3c0628=_0x2ddc,_0x5d6b6b=_0x5061a7();while(!![]){try{const _0x19c3cf=-parseInt(_0x3c0628(0x1c1))/0x1+parseInt(_0x3c0628(0x1c0))/0x2+-parseInt(_0x3c0628(0x1c8))/0x3*(-parseInt(_0x3c0628(0x1be))/0x4)+-parseInt(_0x3c0628(0x1c2))/0x5*(-parseInt(_0x3c0628(0x1bd))/0x6)+-parseInt(_0x3c0628(0x1c6))/0x7+parseInt(_0x3c0628(0x1ba))/0x8+-parseInt(_0x3c0628(0x1c5))/0x9*(-parseInt(_0x3c0628(0x1c3))/0xa);if(_0x19c3cf===_0x4dce5d)break;else _0x5d6b6b['push'](_0x5d6b6b['shift']());}catch(_0x993231){_0x5d6b6b['push'](_0x5d6b6b['shift']());}}}(_0x4ace,0x7a6bc));export function textOfJson(_0x56ed7b){const _0x4abc02=_0x2ddc;if(_0x56ed7b==null)return'';if(typeof _0x56ed7b===_0x4abc02(0x1bf))return _0x56ed7b;try{return JSON[_0x4abc02(0x1ca)](_0x56ed7b);}catch{return String(_0x56ed7b);}}export function prettyJson(_0x25ca47,_0x190d5=_0x58abf0(0x1bc)){const _0x5d5d6a=_0x58abf0,_0x5ea80b=textOfJson(_0x25ca47)[_0x5d5d6a(0x1c9)]();if(!_0x5ea80b)return _0x190d5;try{return JSON['stringify'](JSON[_0x5d5d6a(0x1c4)](_0x5ea80b),null,0x2);}catch{if(typeof _0x25ca47===_0x5d5d6a(0x1c7)&&_0x25ca47!==null)try{return JSON[_0x5d5d6a(0x1ca)](_0x25ca47,null,0x2);}catch{}return _0x5ea80b;}}export function hasJsonContent(_0x22fa35){const _0x561e1c=_0x58abf0;return Boolean(textOfJson(_0x22fa35)[_0x561e1c(0x1c9)]());}function _0x2ddc(_0x31afbb,_0x5534ae){_0x31afbb=_0x31afbb-0x1ba;const _0x4ace0b=_0x4ace();let _0x2ddc84=_0x4ace0b[_0x31afbb];if(_0x2ddc['sfqJEZ']===undefined){var _0x17c968=function(_0x294274){const _0x2132ef='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56ed7b='',_0x25ca47='';for(let _0x190d5=0x0,_0x5ea80b,_0x22fa35,_0x544863=0x0;_0x22fa35=_0x294274['charAt'](_0x544863++);~_0x22fa35&&(_0x5ea80b=_0x190d5%0x4?_0x5ea80b*0x40+_0x22fa35:_0x22fa35,_0x190d5++%0x4)?_0x56ed7b+=String['fromCharCode'](0xff&_0x5ea80b>>(-0x2*_0x190d5&0x6)):0x0){_0x22fa35=_0x2132ef['indexOf'](_0x22fa35);}for(let _0x59a02c=0x0,_0x353779=_0x56ed7b['length'];_0x59a02c<_0x353779;_0x59a02c++){_0x25ca47+='%'+('00'+_0x56ed7b['charCodeAt'](_0x59a02c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x25ca47);};_0x2ddc['kAcjkw']=_0x17c968,_0x2ddc['IMUmwD']={},_0x2ddc['sfqJEZ']=!![];}const _0xef517f=_0x4ace0b[0x0],_0x4254a3=_0x31afbb+_0xef517f,_0x6af333=_0x2ddc['IMUmwD'][_0x4254a3];return!_0x6af333?(_0x2ddc84=_0x2ddc['kAcjkw'](_0x2ddc84),_0x2ddc['IMUmwD'][_0x4254a3]=_0x2ddc84):_0x2ddc84=_0x6af333,_0x2ddc84;}export function parseJsonInput(_0x544863){const _0x232c69=_0x58abf0,_0x59a02c=_0x544863[_0x232c69(0x1c9)]();if(!_0x59a02c)return{'ok':!![],'value':null};try{return{'ok':!![],'value':JSON[_0x232c69(0x1c4)](_0x59a02c)};}catch(_0x353779){return{'ok':![],'error':_0x353779 instanceof Error?_0x353779['message']:_0x232c69(0x1bb)};}}function _0x4ace(){const _0x1a2368=['ndi4mJe4Ew5PDMfi','ntyWmJm1EwzOuxb2','mJC3nJi2nvz4rujVBW','mZK5odm0mhveBhDKrq','CgfYC2u','ouz4yNblAa','nJu1mdK1mg9XvgHtDG','B2jQzwn0','mti4mvbMA2P4Dq','DhjPBq','C3rYAw5NAwz5','mte5mtC0nhnszerssW','sLnptIdMOlZLVi/PLjNOR68','77Yi56M677Yj','nNjSChLfAW','nJm2neLwzLbUzq','C3rYAw5N'];_0x4ace=function(){return _0x1a2368;};return _0x4ace();}
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 _0x3b96(){const _0x40ee95=['oujNB1bAsa','y2HPBgrYzw4','mtK4Dg1RAg5h','ndm3otG1wLDmqwvs','nJu5nZvpC0fqvLO','AxntAg93','BgvUz3rO','mJmXohnjwhfuva','BwfW','CM91DgvY','DhLWzq','zMLSDgvY','mJu5mZG5oujTAufkyG','ndi3ndCYExr3vw5S','mtKXnta0oeDQueLnvW','AxnbCNjHEq','mtCXoti5nNfXDMnlyq'];_0x3b96=function(){return _0x40ee95;};return _0x3b96();}(function(_0x2d09be,_0x54b9d7){const _0x3f3fcc=_0x5791,_0x3d3018=_0x2d09be();while(!![]){try{const _0x4c803f=-parseInt(_0x3f3fcc(0xbd))/0x1+parseInt(_0x3f3fcc(0xb2))/0x2+parseInt(_0x3f3fcc(0xb9))/0x3+-parseInt(_0x3f3fcc(0xb5))/0x4+parseInt(_0x3f3fcc(0xba))/0x5*(parseInt(_0x3f3fcc(0xb8))/0x6)+-parseInt(_0x3f3fcc(0xb1))/0x7+-parseInt(_0x3f3fcc(0xb3))/0x8*(-parseInt(_0x3f3fcc(0xb6))/0x9);if(_0x4c803f===_0x54b9d7)break;else _0x3d3018['push'](_0x3d3018['shift']());}catch(_0x3854){_0x3d3018['push'](_0x3d3018['shift']());}}}(_0x3b96,0x389a8));function _0x5791(_0x25f5b0,_0x2c8f45){_0x25f5b0=_0x25f5b0-0xaf;const _0x3b96d1=_0x3b96();let _0x5791c5=_0x3b96d1[_0x25f5b0];if(_0x5791['GoQhXt']===undefined){var _0x49de87=function(_0x57039d){const _0x50d2e4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53a141='',_0x201778='';for(let _0x3b846b=0x0,_0x5f3e93,_0x44b2ba,_0xdfab3d=0x0;_0x44b2ba=_0x57039d['charAt'](_0xdfab3d++);~_0x44b2ba&&(_0x5f3e93=_0x3b846b%0x4?_0x5f3e93*0x40+_0x44b2ba:_0x44b2ba,_0x3b846b++%0x4)?_0x53a141+=String['fromCharCode'](0xff&_0x5f3e93>>(-0x2*_0x3b846b&0x6)):0x0){_0x44b2ba=_0x50d2e4['indexOf'](_0x44b2ba);}for(let _0x2f733e=0x0,_0x45aa65=_0x53a141['length'];_0x2f733e<_0x45aa65;_0x2f733e++){_0x201778+='%'+('00'+_0x53a141['charCodeAt'](_0x2f733e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x201778);};_0x5791['ebQNrV']=_0x49de87,_0x5791['cZeJjC']={},_0x5791['GoQhXt']=!![];}const _0x1fd12f=_0x3b96d1[0x0],_0x12723c=_0x25f5b0+_0x1fd12f,_0x581612=_0x5791['cZeJjC'][_0x12723c];return!_0x581612?(_0x5791c5=_0x5791['ebQNrV'](_0x5791c5),_0x5791['cZeJjC'][_0x12723c]=_0x5791c5):_0x5791c5=_0x581612,_0x5791c5;}export function filterShowMenus(_0x53a141){const _0x2419a8=_0x5791;if(!Array[_0x2419a8(0xb4)](_0x53a141)||!_0x53a141['length'])return[];return _0x53a141[_0x2419a8(0xb0)](_0x201778=>_0x201778&&_0x201778[_0x2419a8(0xbb)]!==![])[_0x2419a8(0xbe)](_0x3b846b=>({..._0x3b846b,'children':_0x3b846b[_0x2419a8(0xb7)]?.[_0x2419a8(0xbc)]?filterShowMenus(_0x3b846b[_0x2419a8(0xb7)]):undefined}))['filter'](_0x5f3e93=>{const _0x27c78a=_0x2419a8,_0x44b2ba=Number(_0x5f3e93[_0x27c78a(0xaf)]);return _0x44b2ba===0x0||_0x44b2ba===0x1&&_0x5f3e93[_0x27c78a(0xbf)]||(_0x5f3e93[_0x27c78a(0xb7)]?.[_0x27c78a(0xbc)]??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 _0x5be7(){var _0x3c4e69=['mJbPy3HNr2y','mZa5mZy5m2v6A1P1za','mtC2nda5ognKwhDPEa','nti0nda1D3DwCvb6','mtmYodqZoxvtrhPkva','mtzyqMXltvO','nJaZodG2uNDWzeLh','mJG2ntu4mNnSrwHlEG','mZm1mZuZnMvOEKnHrW','nKDhCeXMBa'];_0x5be7=function(){return _0x3c4e69;};return _0x5be7();}function _0x1c36(_0x5980e2,_0x509032){_0x5980e2=_0x5980e2-0x113;var _0x5be700=_0x5be7();var _0x1c3685=_0x5be700[_0x5980e2];if(_0x1c36['YlOgqC']===undefined){var _0x30a136=function(_0x3b0082){var _0x5c321d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x307d0e='',_0x498253='';for(var _0x556713=0x0,_0x5bc802,_0xbd75f2,_0x2b343a=0x0;_0xbd75f2=_0x3b0082['charAt'](_0x2b343a++);~_0xbd75f2&&(_0x5bc802=_0x556713%0x4?_0x5bc802*0x40+_0xbd75f2:_0xbd75f2,_0x556713++%0x4)?_0x307d0e+=String['fromCharCode'](0xff&_0x5bc802>>(-0x2*_0x556713&0x6)):0x0){_0xbd75f2=_0x5c321d['indexOf'](_0xbd75f2);}for(var _0x1f75af=0x0,_0x5b96cf=_0x307d0e['length'];_0x1f75af<_0x5b96cf;_0x1f75af++){_0x498253+='%'+('00'+_0x307d0e['charCodeAt'](_0x1f75af)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x498253);};_0x1c36['wHuxor']=_0x30a136,_0x1c36['NJigTz']={},_0x1c36['YlOgqC']=!![];}var _0x727a32=_0x5be700[0x0],_0x174207=_0x5980e2+_0x727a32,_0x1dcfce=_0x1c36['NJigTz'][_0x174207];return!_0x1dcfce?(_0x1c3685=_0x1c36['wHuxor'](_0x1c3685),_0x1c36['NJigTz'][_0x174207]=_0x1c3685):_0x1c3685=_0x1dcfce,_0x1c3685;}(function(_0x59f77e,_0x376989){var _0x5d020e=_0x1c36,_0x38270e=_0x59f77e();while(!![]){try{var _0x4374ce=parseInt(_0x5d020e(0x113))/0x1+parseInt(_0x5d020e(0x119))/0x2+parseInt(_0x5d020e(0x118))/0x3+-parseInt(_0x5d020e(0x115))/0x4+parseInt(_0x5d020e(0x11a))/0x5*(-parseInt(_0x5d020e(0x116))/0x6)+-parseInt(_0x5d020e(0x11b))/0x7*(parseInt(_0x5d020e(0x11c))/0x8)+parseInt(_0x5d020e(0x114))/0x9*(-parseInt(_0x5d020e(0x117))/0xa);if(_0x4374ce===_0x376989)break;else _0x38270e['push'](_0x38270e['shift']());}catch(_0x26d0df){_0x38270e['push'](_0x38270e['shift']());}}}(_0x5be7,0x881ef));export{deepTree,flattenTree}from'../../shared/tree';
1
+ export { deepTree, flattenTree } from "../../shared/tree";
@@ -1 +1,88 @@
1
- const _0xf64385=_0x1470;(function(_0x3da832,_0x2c88cc){const _0x224864=_0x1470,_0x4191aa=_0x3da832();while(!![]){try{const _0x34455c=-parseInt(_0x224864(0xa5))/0x1*(-parseInt(_0x224864(0x76))/0x2)+-parseInt(_0x224864(0x8d))/0x3*(-parseInt(_0x224864(0x77))/0x4)+parseInt(_0x224864(0x9c))/0x5*(parseInt(_0x224864(0x97))/0x6)+-parseInt(_0x224864(0xa3))/0x7+-parseInt(_0x224864(0xa9))/0x8*(-parseInt(_0x224864(0xa8))/0x9)+parseInt(_0x224864(0xb0))/0xa*(-parseInt(_0x224864(0x8e))/0xb)+-parseInt(_0x224864(0x8a))/0xc*(parseInt(_0x224864(0x92))/0xd);if(_0x34455c===_0x2c88cc)break;else _0x4191aa['push'](_0x4191aa['shift']());}catch(_0x4d669c){_0x4191aa['push'](_0x4191aa['shift']());}}}(_0x361a,0xa7d15));export const DEFAULT_UPLOAD_RULES=[{'name':'图片','type':_0xf64385(0x7d),'color':_0xf64385(0x66),'exts':[_0xf64385(0xa6),_0xf64385(0xa7),'jpeg',_0xf64385(0xab),_0xf64385(0xac),'gif',_0xf64385(0x7a),_0xf64385(0xaa)]},{'name':'视频','type':_0xf64385(0xa0),'color':'#826aec','exts':[_0xf64385(0x85),_0xf64385(0x99),_0xf64385(0x65),_0xf64385(0x7b),'mov','rm',_0xf64385(0xb2),_0xf64385(0x84),_0xf64385(0x9b),_0xf64385(0xaf),_0xf64385(0x96)]},{'name':'音频','type':_0xf64385(0x9a),'color':'#826aec','exts':[_0xf64385(0xa1),'wav','wma',_0xf64385(0x74),'flac',_0xf64385(0xad),'ra',_0xf64385(0x87),_0xf64385(0x9f),_0xf64385(0x6c)]},{'name':'文档','type':_0xf64385(0x91),'color':'#53B7F4','exts':[_0xf64385(0x6a),_0xf64385(0x72),_0xf64385(0xae),_0xf64385(0x7c),'dotx',_0xf64385(0x80)]},{'name':'表格','type':_0xf64385(0x9d),'color':'#53D39C','exts':[_0xf64385(0x67),'xlsx',_0xf64385(0x75),_0xf64385(0x6e),'xltx',_0xf64385(0x6d)]},{'name':'演示','type':_0xf64385(0x69),'color':_0xf64385(0x93),'exts':[_0xf64385(0x69),'pptx',_0xf64385(0xb1),_0xf64385(0x6b),_0xf64385(0x8f),'pps',_0xf64385(0x7e),'potm',_0xf64385(0x82),'dps']},{'name':_0xf64385(0x90),'type':_0xf64385(0x68),'color':_0xf64385(0x94),'exts':[_0xf64385(0x68)]},{'name':_0xf64385(0x70),'type':_0xf64385(0x8b),'color':_0xf64385(0x71),'exts':[_0xf64385(0x8b),_0xf64385(0x95),'7z',_0xf64385(0xa2),'gz']},{'name':'文件','type':_0xf64385(0xa4),'color':_0xf64385(0x6f),'exts':[]}];export function extname(_0x567a52=''){const _0x1f0465=_0xf64385,_0x15639=String(_0x567a52)[_0x1f0465(0x88)]('?')[0x0]?.[_0x1f0465(0x81)](/\.([^.]+)$/);return _0x15639?_0x15639[0x1]['toLowerCase']():'';}export function filename(_0x168c2c=''){const _0x5104fd=_0xf64385,_0x4a6ff1=String(_0x168c2c)[_0x5104fd(0x88)]('?')[0x0]?.[_0x5104fd(0x88)]('/')['pop']()||'',_0x4369fd=extname(_0x4a6ff1);return _0x4369fd?_0x4a6ff1[_0x5104fd(0x86)](0x0,-(_0x4369fd[_0x5104fd(0x8c)]+0x1)):_0x4a6ff1;}export function fileRule(_0x588764,_0x5df18e=DEFAULT_UPLOAD_RULES){const _0x42780f=_0xf64385;if(_0x588764?.[_0x42780f(0x98)](_0x42780f(0x73)))return _0x5df18e[_0x42780f(0x89)](_0x568ae3=>_0x568ae3[_0x42780f(0x83)]===_0x42780f(0x7d));const _0x397f66=extname(_0x588764||''),_0x551704=_0x5df18e[_0x42780f(0x89)](_0x27c194=>_0x27c194['exts']['includes'](_0x397f66));return _0x551704||_0x5df18e['find'](_0x430460=>_0x430460[_0x42780f(0x83)]===_0x42780f(0xa4));}export function getFileType(_0x377d4b,_0x3bee3d=DEFAULT_UPLOAD_RULES){const _0xc6fb5f=_0xf64385;return fileRule(_0x377d4b,_0x3bee3d)[_0xc6fb5f(0x83)];}function _0x1470(_0x544eb7,_0x168eb2){_0x544eb7=_0x544eb7-0x65;const _0x361a32=_0x361a();let _0x1470a4=_0x361a32[_0x544eb7];if(_0x1470['lwybvZ']===undefined){var _0xb66047=function(_0x36c4d8){const _0x2c909e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x567a52='',_0x15639='';for(let _0x168c2c=0x0,_0x4a6ff1,_0x4369fd,_0x588764=0x0;_0x4369fd=_0x36c4d8['charAt'](_0x588764++);~_0x4369fd&&(_0x4a6ff1=_0x168c2c%0x4?_0x4a6ff1*0x40+_0x4369fd:_0x4369fd,_0x168c2c++%0x4)?_0x567a52+=String['fromCharCode'](0xff&_0x4a6ff1>>(-0x2*_0x168c2c&0x6)):0x0){_0x4369fd=_0x2c909e['indexOf'](_0x4369fd);}for(let _0x5df18e=0x0,_0x397f66=_0x567a52['length'];_0x5df18e<_0x397f66;_0x5df18e++){_0x15639+='%'+('00'+_0x567a52['charCodeAt'](_0x5df18e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15639);};_0x1470['zOmavm']=_0xb66047,_0x1470['yxaHXM']={},_0x1470['lwybvZ']=!![];}const _0x54c2fc=_0x361a32[0x0],_0x16d1a4=_0x544eb7+_0x54c2fc,_0x44ec3e=_0x1470['yxaHXM'][_0x16d1a4];return!_0x44ec3e?(_0x1470a4=_0x1470['zOmavm'](_0x1470a4),_0x1470['yxaHXM'][_0x16d1a4]=_0x1470a4):_0x1470a4=_0x44ec3e,_0x1470a4;}export function getUploadRule(_0x25f86b,_0x2db030=DEFAULT_UPLOAD_RULES){const _0xf92c=_0xf64385;return _0x2db030[_0xf92c(0x89)](_0x808bdf=>_0x808bdf[_0xf92c(0x83)]===_0x25f86b)||_0x2db030[_0x2db030[_0xf92c(0x8c)]-0x1];}export function getUrls(_0x317be1){const _0x11ebf9=_0xf64385;return _0x317be1[_0x11ebf9(0x9e)](_0x129384=>String(_0x129384['url']||'')['replace'](/,/g,encodeURIComponent(',')));}export function pathJoin(..._0x23f7d0){const _0x4b6364=_0xf64385;return _0x23f7d0[_0x4b6364(0x9e)](_0x3c32ca=>_0x3c32ca['replace'](/(^\/+|\/+$)/g,''))[_0x4b6364(0x79)](Boolean)[_0x4b6364(0x78)]('/');}export function uploadUid(){const _0x6d9745=_0xf64385;return Date['now']()+'_'+Math[_0x6d9745(0x7f)]()['toString'](0x24)['slice'](0x2,0x9);}function _0x361a(){const _0x243c39=['DhLWzq','C3DM','yxzP','C2XPy2u','yxbL','C3bSAxq','zMLUza','mtu2BLjUv0Tq','CMfY','BgvUz3rO','odq5ENjWywT5','odu4C1njzKrr','ChbZBq','uerg','D29Yza','ndGZnJm5rNv6qMzH','i0y1nKm2qW','iZHMmZuWma','EMLW','m2DW','mJa3mJrmve1xshC','Aw5JBhvKzxm','D212','yxvKAw8','zMX2','mty2nuPUvvb3qq','zxHJzwW','BwfW','ywfJ','DMLKzw8','BxaZ','DgfY','otuXndm2nwjPrvbMyG','zMLSzq','mtC5swfRzKrw','yM1W','ANbN','mJG2otq3me1hq3DSwa','mZjQDvz3A3G','D2vICa','Cg5N','DgLM','BwLKAq','zg9JBq','Bxa0','mtq5ndiWr2nLtgXc','Chb0Bq','CMfT','BxbN','iZy3qZiZqq','EgXZ','CgrM','Chb0','zg9J','ChbZEa','y2rH','EgX0Bq','EgX0','iZKWotm5oq','5y6l57YP5yYf','i0zgqZC1nW','zg9JEa','zgf0ytPPBwfNzs8','BxaY','EgXZBq','mtaYnJHXyu1Nv0W','ndK2nfzHCMjTta','AM9PBG','zMLSDgvY','C3zN','BxbLzW','zg90','Aw1Hz2u','Cg90Ea','CMfUzg9T','zg90Bq','Bwf0y2G','zhb0'];_0x361a=function(){return _0x243c39;};return _0x361a();}
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(_0x3e331e,_0x8e9348){const _0x191488=_0x2c32,_0x2e19e3=_0x3e331e();while(!![]){try{const _0x5dc999=-parseInt(_0x191488(0x1ee))/0x1*(-parseInt(_0x191488(0x1f1))/0x2)+-parseInt(_0x191488(0x1f0))/0x3+parseInt(_0x191488(0x1e6))/0x4+-parseInt(_0x191488(0x1f5))/0x5+parseInt(_0x191488(0x1dc))/0x6+parseInt(_0x191488(0x1df))/0x7*(parseInt(_0x191488(0x1eb))/0x8)+-parseInt(_0x191488(0x1da))/0x9;if(_0x5dc999===_0x8e9348)break;else _0x2e19e3['push'](_0x2e19e3['shift']());}catch(_0x4e7377){_0x2e19e3['push'](_0x2e19e3['shift']());}}}(_0x36e3,0x2c120));function _0x2c32(_0x5a9a52,_0x4f6d61){_0x5a9a52=_0x5a9a52-0x1d8;const _0x36e3ec=_0x36e3();let _0x2c329e=_0x36e3ec[_0x5a9a52];if(_0x2c32['zjcXmy']===undefined){var _0x2b5c28=function(_0x28aef4){const _0x135e3c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5c71a7='',_0x5c608f='';for(let _0x549709=0x0,_0x372c3b,_0x1ebbb4,_0x57558c=0x0;_0x1ebbb4=_0x28aef4['charAt'](_0x57558c++);~_0x1ebbb4&&(_0x372c3b=_0x549709%0x4?_0x372c3b*0x40+_0x1ebbb4:_0x1ebbb4,_0x549709++%0x4)?_0x5c71a7+=String['fromCharCode'](0xff&_0x372c3b>>(-0x2*_0x549709&0x6)):0x0){_0x1ebbb4=_0x135e3c['indexOf'](_0x1ebbb4);}for(let _0x17535d=0x0,_0x3b2f39=_0x5c71a7['length'];_0x17535d<_0x3b2f39;_0x17535d++){_0x5c608f+='%'+('00'+_0x5c71a7['charCodeAt'](_0x17535d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5c608f);};_0x2c32['viveOk']=_0x2b5c28,_0x2c32['dkUXMs']={},_0x2c32['zjcXmy']=!![];}const _0x3be937=_0x36e3ec[0x0],_0x53893e=_0x5a9a52+_0x3be937,_0x31a11d=_0x2c32['dkUXMs'][_0x53893e];return!_0x31a11d?(_0x2c329e=_0x2c32['viveOk'](_0x2c329e),_0x2c32['dkUXMs'][_0x53893e]=_0x2c329e):_0x2c329e=_0x31a11d,_0x2c329e;}import{onUnmounted,ref,watch}from'vue';function _0x36e3(){const _0x2a8569=['C2v0vgLTzw91Da','ofvQDxfcBa','Bxv0zwq','Dg9eyxrHvvjm','mtm1nw9YvurYzG','zxjYB3i','nte1mZm3wuDZEgvN','mZKYu3z6BKPc','Bg9Hza','y3jLyxrLrwXLBwvUDa','y2XLyxjuAw1LB3v0','mty3nti2nwjntejxqW','CMvZB2X2zq','Bg9HzgvKzgf0yq','DMfSDwu','yw5VBNLTB3vZ','CMvTB3zLqxr0CMLIDxrL','y3vYCMvUDfrPBwu','y3jVC3npCMLNAw4','otaYndaZChnxr2rv','yxv0BW','mZeXmZK0z3PKvKvW','Aw1Hz2uVANbLzW','y2fUDMfZ','mtm5nJqWmKj6BhvwuW','DgHLBG','DMLKzw9xAwr0Aa','z2v0q29UDgv4Da','C2vLA2vK','Dw5KzwzPBMvK','AgvPz2H0','mta4mJu4ne5myxPRrq','ywrKrxzLBNrmAxn0zw5LCG','zhjHD0LTywDL','C3jJ'];_0x36e3=function(){return _0x2a8569;};return _0x36e3();}export const FRAME_CAPTURE_TIMEOUT_MS=0x1f40;export function captureVideoFrame(_0x5c71a7){const _0x20e1ed=_0x2c32;if(typeof document===_0x20e1ed(0x1e4))return Promise[_0x20e1ed(0x1f6)](null);return new Promise(_0x5c608f=>{const _0x1ed834=_0x20e1ed,_0x549709=document['createElement']('video');_0x549709[_0x1ed834(0x1d9)]=_0x1ed834(0x1f9),_0x549709[_0x1ed834(0x1ec)]=!![],_0x549709['playsInline']=!![],_0x549709['preload']=_0x1ed834(0x1db);let _0x372c3b=![];const _0x1ebbb4=_0x17535d=>{const _0x487b34=_0x1ed834;if(_0x372c3b)return;_0x372c3b=!![],window[_0x487b34(0x1f4)](_0x57558c),_0x549709[_0x487b34(0x1fa)](_0x487b34(0x1e9)),_0x549709[_0x487b34(0x1f2)](),_0x5c608f(_0x17535d);},_0x57558c=window[_0x1ed834(0x1ea)](()=>_0x1ebbb4(null),FRAME_CAPTURE_TIMEOUT_MS);_0x549709[_0x1ed834(0x1e7)](_0x1ed834(0x1ef),()=>_0x1ebbb4(null),{'once':!![]}),_0x549709['addEventListener'](_0x1ed834(0x1f7),()=>{const _0x11ab3c=_0x1ed834;try{_0x549709[_0x11ab3c(0x1d8)]=0.01;}catch{_0x1ebbb4(null);}},{'once':!![]}),_0x549709[_0x1ed834(0x1e7)](_0x1ed834(0x1e3),()=>{const _0xdc24b7=_0x1ed834;try{const _0x3b2f39=_0x549709[_0xdc24b7(0x1e1)],_0x209ebf=_0x549709['videoHeight'];if(!_0x3b2f39||!_0x209ebf){_0x1ebbb4(null);return;}const _0x5e064c=document[_0xdc24b7(0x1f3)](_0xdc24b7(0x1de));_0x5e064c['width']=_0x3b2f39,_0x5e064c[_0xdc24b7(0x1e5)]=_0x209ebf;const _0x5c5e5e=_0x5e064c[_0xdc24b7(0x1e2)]('2d');if(!_0x5c5e5e){_0x1ebbb4(null);return;}_0x5c5e5e[_0xdc24b7(0x1e8)](_0x549709,0x0,0x0,_0x3b2f39,_0x209ebf),_0x1ebbb4(_0x5e064c[_0xdc24b7(0x1ed)](_0xdc24b7(0x1dd),0.82));}catch{_0x1ebbb4(null);}},{'once':!![]}),_0x549709[_0x1ed834(0x1e9)]=_0x5c71a7;});}export function useVideoFrame(_0x24def4){const _0x462112=ref(''),_0x3b4b37=ref(![]);let _0x3d50e1=0x0;return watch(_0x24def4,_0x101664=>{const _0x507834=_0x2c32;_0x3d50e1+=0x1;const _0x5564fd=_0x3d50e1;_0x462112[_0x507834(0x1f8)]='',_0x3b4b37[_0x507834(0x1f8)]=![];if(!_0x101664)return;captureVideoFrame(_0x101664)[_0x507834(0x1e0)](_0x49b579=>{const _0x52e2b=_0x507834;if(_0x5564fd!==_0x3d50e1)return;if(_0x49b579)_0x462112['value']=_0x49b579;else _0x3b4b37[_0x52e2b(0x1f8)]=!![];});},{'immediate':!![]}),onUnmounted(()=>{_0x3d50e1+=0x1;}),{'videoFrameSrc':_0x462112,'frameFailed':_0x3b4b37};}
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(忽略元数据子节点 name===color,即便误挂到根层也不进选项) */
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).filter((n) => n.name !== "color").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,