Skip to content

Commit a4dbe3b

Browse files
committed
add subtitle to nuoche;
1 parent cbef6c7 commit a4dbe3b

File tree

4 files changed

+80
-26
lines changed

4 files changed

+80
-26
lines changed

src/CodeWF/CodeWF.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageReference Include="CodeWF.Tools" Version="1.3.5" />
1212
<PackageReference Include="Hashids.net" Version="1.7.0" />
1313
<PackageReference Include="Markdig" Version="0.40.0" />
14-
<PackageReference Include="Known" Version="3.1.9" />
14+
<PackageReference Include="Known" Version="3.2.0" />
1515
<ProjectReference Include="..\AntBlazor\AntBlazor.csproj" />
1616
</ItemGroup>
1717

src/CodeWF/Pages/Tool/Converter/NuoChe.razor

Lines changed: 73 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@
3636
<label for="title">标题</label>
3737
<input type="text" id="title" placeholder="扫码挪车" value="扫码挪车" />
3838
</div>
39+
<div class="input-group">
40+
<div class="checkbox-container">
41+
<input type="checkbox" id="enableSubtitle" />
42+
<label for="enableSubtitle">添加小标题</label>
43+
</div>
44+
<input type="text" id="subtitle" placeholder="扫码联系车主或拨打电话: 16800000000" disabled />
45+
</div>
3946
<div class="button-group">
4047
<button class="primary-button" onclick="generateQrCode()">
4148
<i class="fas fa-qrcode"></i> 生成二维码
@@ -289,17 +296,48 @@
289296
.download-link:hover {
290297
text-decoration: underline;
291298
}
292-
</style>
293299
294-
<!-- 添加Font Awesome图标支持 -->
295-
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet">
300+
/* 添加小标题相关样式 */
301+
.checkbox-container {
302+
display: flex;
303+
align-items: center;
304+
margin-bottom: 8px;
305+
}
306+
307+
.checkbox-container input[type="checkbox"] {
308+
width: auto;
309+
margin-right: 8px;
310+
}
311+
312+
.checkbox-container label {
313+
margin-bottom: 0;
314+
font-weight: normal;
315+
}
316+
317+
#subtitle {
318+
transition: all 0.3s ease;
319+
}
320+
321+
#subtitle:disabled {
322+
background-color: #f5f5f5;
323+
color: #999;
324+
}
325+
</style>
296326

297-
<!-- 在页面底部添加script标签 -->
298-
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
299327
<script>
300328
async function generateQrCode() {
301329
const title = document.getElementById('title').value;
302330
const phoneNumber = document.getElementById('phoneNumber').value;
331+
const enableSubtitle = document.getElementById('enableSubtitle').checked;
332+
let subtitle = null;
333+
334+
if (enableSubtitle) {
335+
subtitle = document.getElementById('subtitle').value.trim();
336+
if (!subtitle) {
337+
subtitle = `扫码联系车主或拨打电话: ${phoneNumber || "16800000000"}`;
338+
document.getElementById('subtitle').value = subtitle;
339+
}
340+
}
303341
304342
if (!title || !phoneNumber) {
305343
alert('请输入标题和手机号码');
@@ -314,7 +352,8 @@
314352
},
315353
body: JSON.stringify({
316354
title: title,
317-
phoneNumber: phoneNumber
355+
phoneNumber: phoneNumber,
356+
subtitle: subtitle
318357
})
319358
});
320359
@@ -345,4 +384,32 @@
345384
alert('生成二维码失败,请稍后重试');
346385
}
347386
}
387+
388+
// 添加小标题复选框的事件处理
389+
document.addEventListener('DOMContentLoaded', function() {
390+
const enableSubtitleCheckbox = document.getElementById('enableSubtitle');
391+
const subtitleInput = document.getElementById('subtitle');
392+
const phoneInput = document.getElementById('phoneNumber');
393+
394+
if (enableSubtitleCheckbox && subtitleInput) {
395+
enableSubtitleCheckbox.addEventListener('change', function() {
396+
subtitleInput.disabled = !this.checked;
397+
if (this.checked) {
398+
if (!subtitleInput.value.trim()) {
399+
const phoneNumber = phoneInput.value.trim() || "16800000000";
400+
subtitleInput.value = `扫码联系车主或拨打电话: ${phoneNumber}`;
401+
}
402+
subtitleInput.focus();
403+
}
404+
});
405+
406+
// 当手机号码变化时,如果小标题已启用且使用的是默认格式,则更新小标题中的电话号码
407+
phoneInput.addEventListener('input', function() {
408+
if (enableSubtitleCheckbox.checked && subtitleInput.value.startsWith('扫码联系车主或拨打电话:')) {
409+
const phoneNumber = this.value.trim() || "16800000000";
410+
subtitleInput.value = `扫码联系车主或拨打电话: ${phoneNumber}`;
411+
}
412+
});
413+
}
414+
});
348415
</script>

src/WebSite/Controllers/ImageController.cs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,16 @@ public async Task<IActionResult> MergeGenerateIconAsync([FromForm] IFormFile sou
2222
{
2323
try
2424
{
25-
// 解析尺寸
2625
var convertSizes = sizes.Split(',').Select(uint.Parse).ToArray();
2726

28-
// 保存上传的文件
2927
var fullPath = await SaveFileAsync(sourceImage, env);
3028
var fileName = $"{Guid.NewGuid():N}.ico";
3129
var icoFullPath = Path.Combine(env.WebRootPath, IconFolder, fileName);
3230

33-
// 确保目录存在
3431
Directory.CreateDirectory(Path.Combine(env.WebRootPath, IconFolder));
3532

36-
// 生成图标
3733
await ImageHelper.MergeGenerateIcon(fullPath, icoFullPath, convertSizes);
3834

39-
// 返回可访问的URL
4035
var iconUrl = $"/{IconFolder}/{fileName}";
4136
return Ok(new { success = true, url = iconUrl });
4237
}
@@ -56,26 +51,20 @@ public async Task<IActionResult> SeparateGenerateIconAsync([FromForm] IFormFile
5651
{
5752
var convertSizes = sizes.Split(',').Select(uint.Parse).ToArray();
5853

59-
// 创建临时文件夹存放分离的图标
6054
var folderName = $"icons_{Guid.NewGuid():N}";
6155
var iconFolderPath = Path.Combine(env.WebRootPath, IconFolder, folderName);
6256
Directory.CreateDirectory(iconFolderPath);
6357

64-
// 保存上传的文件并生成图标
6558
var sourceFilePath = await SaveFileAsync(sourceImage, env);
6659
await ImageHelper.SeparateGenerateIcon(sourceFilePath, iconFolderPath, convertSizes);
6760

68-
// 创建压缩文件
6961
var zipFileName = $"{folderName}.zip";
7062
var zipFilePath = Path.Combine(env.WebRootPath, IconFolder, zipFileName);
7163

72-
// 压缩文件夹
7364
await Task.Run(() => sevenZipCompressor.Zip(iconFolderPath, zipFilePath));
7465

75-
// 清理临时文件夹
7666
Directory.Delete(iconFolderPath, true);
7767

78-
// 返回zip文件的URL
7968
var zipUrl = $"/{IconFolder}/{zipFileName}";
8069
return Ok(new { success = true, url = zipUrl });
8170
}
@@ -109,19 +98,16 @@ public async Task<IActionResult> NuoCheAsync([FromBody] NuoCheRequest request,
10998
var fileName = $"qrcode_{Guid.NewGuid():N}.png";
11099
var qrCodePath = Path.Combine(env.WebRootPath, IconFolder, fileName);
111100

112-
// 确保目录存在
113101
Directory.CreateDirectory(Path.Combine(env.WebRootPath, IconFolder));
114102

115-
// 生成二维码
116-
QrCodeGenerator.GenerateQrCode(request.Title, generatedUrl, qrCodePath);
103+
QrCodeGenerator.GenerateQrCode(request.Title, generatedUrl, qrCodePath, request.SubTitle);
117104

118-
// 返回可访问的URL
119105
var qrCodeUrl = $"/{IconFolder}/{fileName}";
120106
return Ok(new
121107
{
122108
success = true,
123-
qrCodeUrl = qrCodeUrl,
124-
generatedUrl = generatedUrl
109+
qrCodeUrl,
110+
generatedUrl
125111
});
126112
}
127113
catch (Exception ex)
@@ -146,5 +132,6 @@ public class NuoCheRequest
146132
{
147133
public string Title { get; set; }
148134
public string PhoneNumber { get; set; }
135+
public string? SubTitle { get; set; }
149136
}
150137
}

src/WebSite/WebSite.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="CodeWF.Tools.Image" Version="1.3.5.3" />
13+
<PackageReference Include="CodeWF.Tools.Image" Version="1.3.5.5" />
1414
<PackageReference Include="FluentValidation" Version="12.0.0-preview1" />
1515
<PackageReference Include="FluentValidation.AspNetCore" Version="11.3.0" />
16-
<PackageReference Include="Known.Core" Version="3.1.9" />
16+
<PackageReference Include="Known.Core" Version="3.2.0" />
1717
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.0-preview.1.25120.3" />
1818
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.2" />
1919
<PackageReference Include="Quartz.AspNetCore" Version="3.14.0" />

0 commit comments

Comments
 (0)