This commit is contained in:
plightfield 2024-09-13 18:27:39 +08:00
parent 3f292b3744
commit 3a5aa3d5d3
40 changed files with 1965 additions and 26 deletions

View File

@ -15,6 +15,7 @@
"dependencies": { "dependencies": {
"@ant-design/icons-vue": "^7.0.1", "@ant-design/icons-vue": "^7.0.1",
"@fingerprintjs/fingerprintjs": "^4.4.3", "@fingerprintjs/fingerprintjs": "^4.4.3",
"@pixi/spine-pixi": "^2.1.0",
"ali-oss": "^6.21.0", "ali-oss": "^6.21.0",
"ant-design-vue": "4.x", "ant-design-vue": "4.x",
"clsx": "^2.1.1", "clsx": "^2.1.1",
@ -24,6 +25,7 @@
"oh-vue-icons": "^1.0.0-rc3", "oh-vue-icons": "^1.0.0-rc3",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.3", "pinia-plugin-persistedstate": "^3.2.3",
"pixi.js": "^8.4.0",
"sortablejs": "^1.15.3", "sortablejs": "^1.15.3",
"ua-parser-js": "^1.0.38", "ua-parser-js": "^1.0.38",
"uuid": "^10.0.0", "uuid": "^10.0.0",

View File

@ -0,0 +1,175 @@
xiaohuli_aixin.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_dahulu.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_dazhaohu.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_dianji.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_duxin.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_shuixing.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_xiaoxitixing.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_xunhuan.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,175 @@
xiaohuli_yemianbuhuoyue.png
size:2048,2048
filter:Linear,Linear
pma:true
0
bounds:2,651,48,55
offsets:1,1,50,57
00
bounds:809,25,141,66
offsets:1,1,143,68
H
bounds:578,168,147,202
offsets:1,1,149,204
I
bounds:727,252,43,126
offsets:1,1,45,128
Left ear
bounds:1098,64,160,186
offsets:11,0,171,186
Left eye
bounds:309,690,30,16
Left eyebrow
bounds:966,1177,24,27
Left forearm
bounds:876,924,75,134
offsets:1,2,77,136
Left upper arm
bounds:344,43,123,164
offsets:11,2,137,167
rotate:90
Right ear
bounds:1545,63,193,253
offsets:0,1,193,254
rotate:90
Right eye
bounds:504,820,55,16
Right eyebrow
bounds:876,1144,38,31
Right leg
bounds:1390,72,164,172
offsets:0,2,164,176
Right leg1
bounds:1251,936,184,214
offsets:2,0,187,217
Right lower arm
bounds:1408,1059,150,140
offsets:0,0,163,142
rotate:90
Right lower arm 副本
bounds:2,31,151,148
offsets:0,0,163,148
rotate:90
Right lower arm 副本 3
bounds:661,46,116,146
rotate:90
Right upper arm
bounds:502,38,128,158
offsets:7,2,136,160
rotate:90
body
bounds:2,305,417,401
offsets:239,0,750,812
bu_youshou1
bounds:1232,68,157,182
offsets:0,0,158,184
bu_youshou2
bounds:1329,2,136,124
offsets:1,27,138,152
bu_zuoshou1
bounds:1799,78,156,165
offsets:2,0,158,165
bu_zuoshou2
bounds:193,54,164,140
offsets:0,0,164,141
rotate:180
face
bounds:876,923,413,286
offsets:2,0,433,286
ground
bounds:2,708,1618,99
offsets:1,1,1620,101
maple leaf
bounds:1426,922,115,90
meimao_y
bounds:52,683,38,23
meimao_z
bounds:876,1177,58,27
mouth
bounds:388,652,49,35
offsets:0,0,50,44
mouth2
bounds:451,814,51,22
mouth3
bounds:726,657,76,49
offsets:1,1,78,51
muzhuang
bounds:2,1193,608,430
offsets:1,1,610,432
qipao
bounds:379,372,89,63
tail
bounds:419,347,398,359
offsets:2,0,400,359
tanhao
bounds:1252,1166,43,153
rotate:90
upper lip
bounds:257,221,83,83
water_03_00005
bounds:451,838,423,353
offsets:1,1,424,354
water_03_00006
bounds:2,814,447,377
offsets:1,1,449,378
water_03_00007
bounds:1550,809,461,402
offsets:1,1,462,404
water_03_00008
bounds:1083,1211,465,412
offsets:1,1,467,414
water_03_00009
bounds:612,1206,469,417
offsets:1,0,471,418
water_03_00010
bounds:1550,1213,461,410
offsets:1,0,463,411
weijin2
bounds:1870,7,109,143
offsets:1,2,112,147
rotate:90
weijin_hou
bounds:727,86,145,392
offsets:0,7,145,401
rotate:90
weijin_q1
bounds:876,822,386,153
offsets:7,5,393,159
weijinq_2
bounds:2,177,129,254
offsets:3,1,133,260
rotate:90
xinfeng
bounds:1361,255,289,175
xinfeng2
bounds:1109,443,285,263
offsets:1,1,287,265
xinfeng3
bounds:819,443,288,263
offsets:1,1,290,265
xinfeng3 副本 2
bounds:1652,258,288,172
offsets:1,1,290,174
xinxin
bounds:819,202,268,239
xinzhi
bounds:1621,432,375,392
rotate:90
yanbai_y
bounds:424,678,35,28
yanbai_z
bounds:350,676,55,30
yantong_y
bounds:561,811,23,25
offsets:1,1,25,27
yantong_z
bounds:936,1177,28,27
offsets:1,1,30,29
z
bounds:343,168,233,202
offsets:1,1,235,204
zhifeiji
bounds:1262,809,238,111
offsets:1,1,240,113
图层 10
bounds:1089,252,270,189

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -11,6 +11,7 @@ import { computed } from 'vue'
import asyncLoader from './utils/asyncLoader' import asyncLoader from './utils/asyncLoader'
import useLayoutStore from './layout/useLayoutStore' import useLayoutStore from './layout/useLayoutStore'
const Grid = asyncLoader(() => import('./layout/grid')) const Grid = asyncLoader(() => import('./layout/grid'))
const Fox = asyncLoader(() => import('./fox'))
const settings = useSettingsStore() const settings = useSettingsStore()
const blockSize = computed(() => settings.state.blockSize + 'rem') const blockSize = computed(() => settings.state.blockSize + 'rem')
const blockPadding = computed(() => settings.state.blockPadding + 'rem') const blockPadding = computed(() => settings.state.blockPadding + 'rem')
@ -28,6 +29,9 @@ const layout = useLayoutStore()
<Sider /> <Sider />
<LoginModal /> <LoginModal />
<Grid v-if="layout.ready" /> <Grid v-if="layout.ready" />
<div class="fixed z-40 right-[14%] top-8">
<Fox />
</div>
</div> </div>
</template> </template>

134
src/fox/index.tsx Normal file
View File

@ -0,0 +1,134 @@
// 重构代码
import { Application, Assets } from 'pixi.js'
import 'pixi.js/unsafe-eval'
import '@pixi/spine-pixi'
import { Spine, TrackEntry } from '@pixi/spine-pixi'
import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'
import useRouterStore from '@/useRouterStore'
import useSearchStore from '@/layout/header/search/useSearchStore'
import useLayoutStore from '@/layout/useLayoutStore'
const stageStrList = [
'dazhaohu',
'xunhuan',
'yemianbuhuoyue',
'dahulu',
'shuixing',
'duxin',
'aixin',
'dianji',
'xiaoxitixing'
]
const load = async (stageStr: string) => {
await Assets.load({ alias: stageStr, src: `/fox/xiaohuli_${stageStr}.json` })
await Assets.load({
alias: stageStr + '_atlas',
src: `/fox/xiaohuli_${stageStr}.atlas`
})
}
export default defineComponent(() => {
let container: HTMLCanvasElement | null = null
const app = new Application()
let spine: Spine | null = null
let track: TrackEntry | null = null
const sleep = ref(false)
const run = (stageStr: string) => {
if (spine) {
app.stage.removeChild(spine)
spine.destroy()
}
spine = Spine.from({ skeleton: stageStr, atlas: stageStr + '_atlas' })
track = spine.state.setAnimation(0, stageStr, stageStr === 'xunhuan' || stageStr === 'dahulu')
spine.x = 80
spine.y = 200
spine.scale = 0.2
app.stage.addChild(spine)
const handle = () => {
if (track?.isComplete()) {
app.ticker.remove(handle)
if (stageStr !== 'xunhuan' && stageStr !== 'dahulu') {
run(sleep.value ? 'dahulu' : 'xunhuan')
}
}
}
app.ticker.add(handle)
}
watch(sleep, (val) => {
if (val) {
run('yemianbuhuoyue')
} else {
run('shuixing')
}
})
onMounted(async () => {
if (!container) return
await app.init({
width: 250,
height: 195,
backgroundAlpha: 0,
resolution: window.devicePixelRatio || 1,
autoDensity: true,
antialias: true,
background: 'transparent',
backgroundColor: 'transparent',
canvas: container
})
for (const str of stageStrList) {
await load(str)
}
watch(
() => layout.currentMode,
() => {
run('dazhaohu')
},
{ immediate: true }
)
const handle = () => {
if (document.visibilityState === 'visible') {
sleep.value = false
run('shuixing')
}
}
window.addEventListener('visibilitychange', handle)
let it: any = 0
const handleMove = () => {
clearTimeout(it)
sleep.value = false
it = setTimeout(() => {
sleep.value = true
}, 10000)
}
window.addEventListener('mousemove', handleMove)
onUnmounted(() => {
window.removeEventListener('visibilitychange', handle)
window.removeEventListener('mousemove', handleMove)
})
})
const router = useRouterStore()
const search = useSearchStore()
const layout = useLayoutStore()
watch(
() => [router.path, search.focus],
([a, b]) => {
if (a || b) {
run('duxin')
}
}
)
return () => (
<canvas
ref={(el) => (container = el as any)}
onMouseenter={() => {
run('dianji')
}}
onClick={() => {
run('aixin')
}}
/>
)
})

View File

@ -1,5 +1,117 @@
import { defineComponent } from 'vue' import { Button, Select, Slider } from 'ant-design-vue'
import { computed, defineComponent, ref, Transition, watch } from 'vue'
import useLayoutStore from '../useLayoutStore'
import Rect from '@/utils/Rect'
import useResource from './useResource'
import { DownloadOutlined, EyeInvisibleOutlined, SwapOutlined } from '@ant-design/icons-vue'
import SettingItem from '@/settings/SettingItem'
import useSettingsStore from '@/settings/useSettingsStore'
import { v4 as uuid } from 'uuid'
export default defineComponent(() => { export default defineComponent(() => {
return () => <div class="absolute left-0 top-0 w-full h-full p-4"></div> const layout = useLayoutStore()
const selected = ref(0)
watch(
() => layout.state.current,
(val) => {
selected.value = val
},
{ immediate: true }
)
const resource = useResource(
computed(() => layout.state.content[selected.value].background),
'background'
)
const settings = useSettingsStore()
return () => (
<div class="absolute left-0 top-0 w-full h-full p-4 overflow-y-auto">
<SettingItem
noBg
v-slots={{
label: () => <div></div>
}}
>
<Select
class="w-[100px]"
options={[
{ label: '游戏', value: 0 },
{ label: '工作', value: 1 },
{ label: '休闲', value: 2 }
]}
v-model:value={selected.value}
/>
</SettingItem>
<div class="px-4">
<div class="h-[180px]">
{resource.video && resource.type !== 'own' ? (
<video class="w-full h-full" src={resource.video} autoplay={false} controls />
) : (
<div
class="w-full h-full bg-center bg-no-repeat bg-cover"
style={{
backgroundImage: `url('${resource.image}')`
}}
></div>
)}
</div>
<div class="flex justify-between items-center py-4">
<Button type="primary" icon={<SwapOutlined />}>
</Button>
<Button
type="text"
icon={<DownloadOutlined />}
onClick={() => {
window.open(resource.video || resource.image, '_blank')
}}
>
</Button>
</div>
</div>
<SettingItem
noRoundedB
v-slots={{
label: () => <div></div>
}}
>
<Slider
v-model:value={settings.state.maskOpacity}
step={0.01}
tooltipOpen={false}
min={0}
max={0.7}
/>
</SettingItem>
<SettingItem
noRoundedT
v-slots={{
label: () => <div></div>
}}
>
<Slider
v-model:value={settings.state.maskFilter}
step={0.1}
tooltipOpen={false}
min={0}
max={20}
/>
</SettingItem>
<Transition>
{(settings.state.maskFilter > 0 || settings.state.maskOpacity > 0) && (
<div
class="flex justify-end mr-4"
onClick={() => {
settings.state.maskOpacity = 0
settings.state.maskFilter = 0
}}
>
<Button type="text" icon={<EyeInvisibleOutlined />}>
</Button>
</div>
)}
</Transition>
</div>
)
}) })

View File

@ -1,9 +1,11 @@
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import useLayoutStore from '../useLayoutStore' import useLayoutStore from '../useLayoutStore'
import useSettingsStore from '@/settings/useSettingsStore'
export default defineComponent({ export default defineComponent({
setup() { setup() {
const layout = useLayoutStore() const layout = useLayoutStore()
const settings = useSettingsStore()
return () => ( return () => (
<div class="absolute left-0 top-0 w-full h-screen z-0"> <div class="absolute left-0 top-0 w-full h-screen z-0">
{layout.background.video ? ( {layout.background.video ? (
@ -16,6 +18,14 @@ export default defineComponent({
}} }}
></div> ></div>
)} )}
<div
class="absolute left-0 top-0 w-[250px] h-[195px] bg-black"
style={{
zIndex: 1,
backgroundColor: `rgba(0,0,0,${settings.state.maskOpacity})`,
backdropFilter: `blur(${settings.state.maskFilter}px)`
}}
></div>
</div> </div>
) )
} }

View File

@ -8,7 +8,8 @@ const defaultBackground =
const defaultResource = { const defaultResource = {
image: '', image: '',
video: '', video: '',
brief: '' brief: '',
type: 'default' as 'default' | 'own' | 'third' | 'local'
} }
export default function useResource(tag: Ref<string>, type: string) { export default function useResource(tag: Ref<string>, type: string) {
const resource = reactive(defaultResource) const resource = reactive(defaultResource)
@ -42,7 +43,7 @@ export default function useResource(tag: Ref<string>, type: string) {
const item = res.find((item) => item.tag === val) const item = res.find((item) => item.tag === val)
if (item) { if (item) {
resource.video = URL.createObjectURL(item.file) resource.video = URL.createObjectURL(item.file)
resource.image = '' resource.type = 'local'
} else { } else {
// 不存在,需要存入 // 不存在,需要存入
fetch(val) fetch(val)
@ -53,7 +54,7 @@ export default function useResource(tag: Ref<string>, type: string) {
} }
res.unshift({ tag: val, file: blob }) res.unshift({ tag: val, file: blob })
resource.video = URL.createObjectURL(blob) resource.video = URL.createObjectURL(blob)
resource.image = '' resource.type = 'own'
}) })
} }
}) })
@ -62,6 +63,7 @@ export default function useResource(tag: Ref<string>, type: string) {
resource.image = val resource.image = val
resource.video = '' resource.video = ''
resource.brief = val + '?x-oss-process=image/resize,w_400,h_225' resource.brief = val + '?x-oss-process=image/resize,w_400,h_225'
resource.type = 'own'
} }
return return
} }
@ -71,11 +73,13 @@ export default function useResource(tag: Ref<string>, type: string) {
resource.image = val resource.image = val
resource.video = '' resource.video = ''
resource.brief = val resource.brief = val
resource.type = 'third'
return return
} }
resource.image = videoArr.includes(suffix) ? '' : val resource.image = videoArr.includes(suffix) ? '' : val
resource.video = videoArr.includes(suffix) ? val : '' resource.video = videoArr.includes(suffix) ? val : ''
resource.brief = val resource.brief = val
resource.type = 'third'
return return
} }
// 本地 // 本地
@ -88,6 +92,7 @@ export default function useResource(tag: Ref<string>, type: string) {
resource.image = item.type === 'image' ? url : '' resource.image = item.type === 'image' ? url : ''
resource.video = item.type === 'video' ? url : '' resource.video = item.type === 'video' ? url : ''
resource.brief = url resource.brief = url
resource.type = 'local'
} }
) )
}, },

View File

@ -2,7 +2,7 @@ import { defineStore } from 'pinia'
import type { Layout } from './layout.types' import type { Layout } from './layout.types'
import { computed, reactive, ref, toRaw, watch } from 'vue' import { computed, reactive, ref, toRaw, watch } from 'vue'
import db from '@/db' import db from '@/db'
import useResource from './background/getResource' import useResource from './background/useResource'
const defaultLayout: Layout = { const defaultLayout: Layout = {
content: [ content: [

View File

@ -0,0 +1,42 @@
import clsx from 'clsx'
import { defineComponent, type SlotsType, type VNode } from 'vue'
export default defineComponent({
props: {
noRoundedB: {
type: Boolean,
default: false
},
noRoundedT: {
type: Boolean,
default: false
},
noBg: {
type: Boolean,
default: false
}
},
slots: {} as SlotsType<{
label?: () => VNode[]
default?: () => VNode[]
end?: () => VNode[]
}>,
setup(props, ctx) {
return () => (
<div
class={clsx('flex items-center py-2 px-3 rounded-lg', {
'rounded-b-none': props.noRoundedB,
'rounded-t-none': props.noRoundedT,
'bg-black/5': !props.noBg
})}
style={{
marginBottom: props.noRoundedB ? 0 : '12px'
}}
>
<div class="text-sm text-black/60 mr-4">{ctx.slots.label?.()}</div>
<div class="w-0 flex-grow">{ctx.slots.default?.()}</div>
{ctx.slots.end?.()}
</div>
)
}
})

View File

@ -41,7 +41,7 @@ export default defineComponent(() => {
{/* 背景遮罩 */} {/* 背景遮罩 */}
{show.value && ( {show.value && (
<div <div
class="w-full h-screen backdrop-blur-sm" class="w-full h-screen"
onClick={() => { onClick={() => {
router.path = '' router.path = ''
}} }}

View File

@ -7,6 +7,8 @@ export default defineStore(
'settings', 'settings',
() => { () => {
const state = reactive({ const state = reactive({
maskOpacity: 0,
maskFilter: 0,
// 显示隐藏 // 显示隐藏
showSider: 'show' as VisibleState, showSider: 'show' as VisibleState,
showDock: 'show' as VisibleState, showDock: 'show' as VisibleState,

View File

@ -45,14 +45,12 @@ export default defineComponent(() => {
router.path = 'global-login' router.path = 'global-login'
}} }}
icon={<EditOutlined />} icon={<EditOutlined />}
type="primary"
> >
</Button> </Button>
<Tooltip title="退出登录">
<Button <Button
type="link" type="text"
danger
size="large"
icon={<LogoutOutlined />} icon={<LogoutOutlined />}
onClick={() => { onClick={() => {
Modal.confirm({ Modal.confirm({
@ -65,8 +63,9 @@ export default defineComponent(() => {
} }
}) })
}} }}
></Button> >
</Tooltip> 退
</Button>
</> </>
) : ( ) : (
<Button <Button

41
src/utils/Rect.tsx Normal file
View File

@ -0,0 +1,41 @@
import { defineComponent, onMounted, onUnmounted, ref } from 'vue'
// 特定比例显示矩形
export default defineComponent({
props: {
ratio: {
type: Number,
default: 1
}
},
setup(props, ctx) {
let dom: HTMLDivElement | null = null
const height = ref(0)
onMounted(() => {
if (!dom) return
const handle = () => {
if (!dom) return
const { width } = dom.getBoundingClientRect()
console.log(width)
height.value = width * props.ratio
}
const listen = new ResizeObserver(handle)
handle()
listen.observe(dom)
onUnmounted(() => {
listen.disconnect()
})
})
return () => (
<div
ref={(el) => (dom = el as any)}
class="w-full relative"
style={{
paddingBottom: height.value + 'px'
}}
>
<div class="absolute left-0 top-0 w-full h-full">{ctx.slots.default?.()}</div>
</div>
)
}
})

View File

@ -11,6 +11,10 @@ export default defineConfig({
server: { server: {
host: '0.0.0.0', host: '0.0.0.0',
port: 8100, port: 8100,
cors: {
origin: '*',
methods: '*'
},
proxy: { proxy: {
'/baiduSuggestion': { '/baiduSuggestion': {
target: 'https://suggestion.baidu.com', target: 'https://suggestion.baidu.com',