From 0d794d748f61b5c719d665bfcae24a4d9b2b6224 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期四, 08 五月 2025 15:02:49 +0800
Subject: [PATCH] 请验图片处理
---
Wms/Wms/Controllers/BllQualityController.cs | 162 +++++++++++++++++++++++++++
Wms/Model/ModelVm/IdVm.cs | 10 +
HTML/views/QualityControl/InspectionRequest.html | 148 +++++++++++++++++++++++-
3 files changed, 314 insertions(+), 6 deletions(-)
diff --git a/HTML/views/QualityControl/InspectionRequest.html b/HTML/views/QualityControl/InspectionRequest.html
index 3119fd9..fd0a743 100644
--- a/HTML/views/QualityControl/InspectionRequest.html
+++ b/HTML/views/QualityControl/InspectionRequest.html
@@ -22,6 +22,13 @@
.layui-table-grid-down {
display: none;
}
+
+ /* 鏍峰紡鐢ㄤ簬缇庡寲鍥剧墖灞曠ず */
+ .layui-table-cell img {
+ max-width: 100px;
+ max-height: 100px;
+ }
+
</style>
<script>
// 杩欓噷鏄渶瑕佸湪椤甸潰娓叉煋涔嬪墠鎵ц鐨勪唬鐮�
@@ -119,6 +126,21 @@
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>鎼滅储
</button>
+ </div>
+
+ <div style="display: none;" id="UploadImageView">
+
+ <div id="UploadImage" style="margin-left: 35px;margin-top: 30px;">
+ <label>涓婁紶鍥剧墖:</label><button type="button" class="layui-btn" id="uploadBtn" style="margin-left: 20px;" >娴忚</button>
+ <button type="button" class="layui-btn" id="upload" style="margin-left: 20px;">涓婁紶</button>
+
+ </div>
+ </div>
+
+ <div style="display: none;" id="ImagesShowView">
+ <div id="ImagesShow">
+
+ </div>
</div>
<!-- 纭鍑哄簱鍙e脊绐� -->
@@ -223,6 +245,10 @@
var html = '';
switch (d.Status) {
case "0" :
+ html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="upImage">
+ <i class="layui-icon layui-icon-add"></i>涓婁紶</a> `;
+ html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="ViewImage">
+ <i class="layui-icon layui-icon-add"></i>鏌ョ湅</a> `;
html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="add">
<i class="layui-icon layui-icon-add"></i>璇烽獙</a> `;
html += `<a class="layui-btn layui-btn-danger layui-btn-xs delClass" lay-event="del">
@@ -287,13 +313,14 @@
base: '../../layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰�
}).extend({
index: 'lib/index' //涓诲叆鍙fā鍧�
- }).use(['index', 'table', 'laypage', 'element', 'layer', 'laydate'], function () {
+ }).use(['index', 'table', 'laypage', 'element', 'layer', 'laydate','upload'], function () {
var table = layui.table,
form = layui.form,
- element = layui.element;
- laypage = layui.laypage,
- layer = layui.layer;
- laydate = layui.laydate;
+ element = layui.element,
+ laypage = layui.laypage,
+ layer = layui.layer,
+ laydate = layui.laydate,
+ upload = layui.upload;
var h1 = GetTableTabHeight();
laydate.render({
elem: '#StartTime'
@@ -379,7 +406,8 @@
{ field: 'Status', title: '鎵ц鐘舵��', align: 'center', width: 90, templet: '#templetStatus' },
{ field: 'RequestTime', title: '璇烽獙鏃ユ湡', align: 'center', width: 165, templet: '#templetCompleteTime' },
{ field: 'RequestUser', title: '璇烽獙浜�', align: 'center', width: 165 },
- // { field: 'UDF1', title: '鑷畾涔�1', align: 'center', width: 100 },
+ { field: 'UDF5', title: '鍥剧墖', align: 'center', width: 100 ,templet: function (d) {
+ return d.image ? '<img src="' + d.image + '" alt="鍥剧墖">' : '鏃犲浘鐗�';}},
// { field: 'UDF2', title: '鑷畾涔�2', align: 'center', width: 100 },
// { field: 'UDF3', title: '鑷畾涔�3', align: 'center', width: 100 },
// { field: 'UDF4', title: '鑷畾涔�4', align: 'center', width: 100 },
@@ -495,6 +523,65 @@
table.on('tool(InspectionRequest)', function (obj) {
var data = obj.data;
switch (obj.event) {
+ case "upImage":
+ layer.open({
+ type:1,
+ title: '涓婁紶鍥剧墖',
+ content: $('#UploadImageView'),
+ maxmin: true,
+ area: ['350px','215px'],
+ btn: ['纭畾'],
+ success: function(index, layero){
+ upload.render({
+ elem: '#uploadBtn',
+ url: IP + '/BllQuality/UploadImage',
+ accept: 'images',
+ exts:'jpg|png|gif',
+ multiple: false,
+ size: 1024 * 5, // 5MB
+ auto: false,
+ bindAction: '#upload',
+ headers: { ToKen: $.cookie('token') },
+ xhrFields: {
+ withCredentials: true // 鎼哄甫cookie
+ },
+ before: function(){
+ this.data = {
+ qualityId:data.Id
+ };
+ layer.load(1, {shade: [0.5, '#000']});
+ },
+ done: function(res){
+ layer.closeAll('loading');
+ if(res.code == 0){
+ layer.msg('涓婁紶鎴愬姛', {icon: 1});
+ // 涓婁紶鎴愬姛鍚庣殑鍥炶皟锛屽鍒锋柊琛ㄦ牸绛�
+ // table.reload('LAY-app-content-list');
+ } else {
+ layer.msg(res.msg || '涓婁紶澶辫触', {icon: 2});
+ }
+ },
+ error: function(){
+ layer.closeAll('loading');
+ layer.msg('涓婁紶澶辫触', {icon: 2});
+ }
+ });
+ }
+ });
+ break;
+ case "ViewImage":
+ layer.open({
+ type:1,
+ title: '鏌ョ湅鍥剧墖',
+ content: $('#ImagesShowView'),
+ maxmin: true,
+ area: ['650px','315px'],
+ btn: ['纭畾'],
+ success: function(index, layero){
+ getImage(data.Id);
+ }
+ });
+ break;
case "add":
layer.confirm('纭畾瑕佸彂璧疯楠岋紵', function (index) {
var param = {
@@ -627,6 +714,55 @@
}
});
+ function getImage(id)
+ {
+ var param = {
+ Id:id
+ }
+ sendData(IP + "/BllQuality/GetImage", param, 'post', function (res) {
+ if (res.code == 0) { //鎴愬姛
+ $("#ImagesShow").html('');
+ res.data.forEach(function (item) {
+ $("#ImagesShow").append('<div>'+
+ '<a href='+item+' target="_blank" class="image-item"><img src="'+ item + '" /></a>'+
+ '<button class="layui-btn layui-btn-primary layui-btn-sm delete-btn" data-type="customCols" data_Url='+item+' >鍒犻櫎</button>'+
+ '</div>');
+ })
+ $('.delete-btn').on('click', function ( ) {
+ var item = $(this);
+ var QualityId = id;
+ var imageUrl = item.attr('data_Url');
+ layer.confirm('纭畾鍒犻櫎鍚楋紵', function (index) {
+ var param = {
+ QualityId: QualityId,
+ ImageUrl: imageUrl
+ }
+ sendData(IP + "/BllQuality/DeleteImage", param, 'post', function (res) {
+ if (res.code == 0) { //鎴愬姛
+ layer.msg(res.msg, {
+ icon: 1,
+ time: 1000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }, function () {
+ getImage(id);
+ });
+ } else {
+ layer.msg(res.msg, {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ });
+ }
+ });
+ })});
+ } else { //涓嶆垚鍔�
+ $("#ImagesShow").html('');
+ res.msg, {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }
+ }
+ })
+ }
+
// 鍙栨牱鏄庣粏鍗曟満浜嬩欢
table.on('tool(SamplingDetails)', function (obj) {
var data = obj.data;
diff --git a/Wms/Model/ModelVm/IdVm.cs b/Wms/Model/ModelVm/IdVm.cs
index 414471a..6697160 100644
--- a/Wms/Model/ModelVm/IdVm.cs
+++ b/Wms/Model/ModelVm/IdVm.cs
@@ -8,4 +8,14 @@
public List<int> Ids { get; set; }
public string Code { get; set; }
}
+
+ /// <summary>
+ /// 璇烽獙鍥剧墖
+ /// </summary>
+ public class QualityImageVM
+ {
+ public int QualityId { get; set; }
+
+ public string ImageUrl { get; set; }
+ }
}
diff --git a/Wms/Wms/Controllers/BllQualityController.cs b/Wms/Wms/Controllers/BllQualityController.cs
index 9f93f4b..fffe319 100644
--- a/Wms/Wms/Controllers/BllQualityController.cs
+++ b/Wms/Wms/Controllers/BllQualityController.cs
@@ -9,6 +9,11 @@
using Model.ModelVm;
using Wms.Tools;
using Microsoft.Extensions.Options;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Linq;
+
namespace Wms.Controllers
{
@@ -164,6 +169,32 @@
}
}
+ [HttpPost]
+ public IActionResult upLoadRequest(IdVm model)
+ {
+ try
+ {
+ var claimsIdentity = this.User.Identity as ClaimsIdentity;
+ if (claimsIdentity == null)
+ {
+ return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+ }
+ var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
+ if (string.IsNullOrWhiteSpace(userId))
+ {
+ return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
+ }
+ var userName = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier)?.Value;
+
+
+ return Ok(new { code = 0, count = 0, msg = "涓婁紶鍥剧墖鎴愬姛!"});
+ }
+ catch (Exception e)
+ {
+ return Ok(new { code = 1, msg = e.Message });
+ }
+ }
+
/// <summary>
/// 鍙戦�佽楠屽崟鎹�
/// </summary>
@@ -292,6 +323,137 @@
return Ok(new { code = 1, msg = e.Message });
}
}
+
+ /// <summary>
+ /// 鍥剧墖涓婁紶
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="qualityId"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public async Task<IActionResult> UploadImage([FromForm] IFormFile file, [FromForm] int qualityId)
+ {
+ try
+ {
+ var claimsIdentity = this.User.Identity as ClaimsIdentity;
+ var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
+ if (file == null || file.Length == 0)
+ return BadRequest(new { code = 1, msg = "璇烽�夋嫨涓婁紶鏂囦欢" });
+
+ // 楠岃瘉鏂囦欢绫诲瀷
+ var allowedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };
+ var fileExtension = Path.GetExtension(file.FileName).ToLower();
+ if (!allowedExtensions.Contains(fileExtension))
+ return BadRequest(new { code = 2, msg = "鍙厑璁镐笂浼犲浘鐗囨枃浠�" });
+
+ // 闄愬埗鏂囦欢澶у皬 (5MB)
+ if (file.Length > 5 * 1024 * 1024)
+ return BadRequest(new { code = 3, msg = "鏂囦欢澶у皬涓嶈兘瓒呰繃5MB" });
+
+ // 鍒涘缓璐ㄩ噺鐩稿叧鐨勫浘鐗囩洰褰�
+ var uploadPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", qualityId.ToString());
+ if (!Directory.Exists(uploadPath))
+ Directory.CreateDirectory(uploadPath);
+
+ // 鐢熸垚鍞竴鏂囦欢鍚�
+ var fileName = $"{DateTime.Now:yyyyMMddHHmmss}_{userId}{fileExtension}";
+ var filePath = Path.Combine(uploadPath, fileName);
+
+ // 淇濆瓨鏂囦欢
+ using (var stream = new FileStream(filePath, FileMode.Create))
+ {
+ await file.CopyToAsync(stream);
+ }
+
+ // 杩斿洖鏂囦欢璁块棶璺緞
+ var fileUrl = $"/wwwRoot/uploads/quality/{qualityId}/{fileName}";
+
+ // 杩欓噷鍙互娣诲姞鏁版嵁搴撹褰曠瓑鎿嶄綔
+ // _qualityService.AddImageRecord(qualityId, userId, fileUrl, fileName);
+
+ return Ok(new
+ {
+ code = 0,
+ msg = "涓婁紶鎴愬姛",
+ data = new
+ {
+ url = fileUrl,
+ fileName = fileName
+ }
+ });
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, new { code = 500, msg = $"涓婁紶澶辫触: {ex.Message}" });
+ }
+ }
+
+ /// <summary>
+ /// 鍥剧墖鑾峰彇
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public IActionResult GetImage(BllQualityInspect model)
+ {
+ try
+ {
+
+ var fullPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", model.Id.ToString());
+ if (!Directory.Exists(fullPath))
+ {
+ return StatusCode(1, new { code = 1, msg = "鍥剧墖涓嶅瓨鍦�" });
+ }
+ var files = Directory.GetFiles(fullPath);
+ if (files.Length <= 0)
+ return StatusCode(1, new { code = 1, msg = "鍥剧墖涓嶅瓨鍦�" });
+ List<string> images = new List<string>();
+ foreach (var file in files)
+ {
+ images.Add($"{Request.Scheme}://{Request.Host}/uploads/quality/{model.Id.ToString()}/{Path.GetFileName(file)}");
+ }
+ return Ok(new
+ {
+ code = 0,
+ msg = "鍥剧墖" + files.Length + "寮�",
+ data = images
+ });
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, new { code = 500, msg = $"鑾峰彇鍥剧墖澶辫触: {ex.Message}" });
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍥剧墖
+ /// </summary>
+ /// <param name="data">鍥剧墖淇℃伅</param>
+ /// <returns></returns>
+ [HttpPost]
+ public IActionResult DeleteImage(QualityImageVM data)
+ {
+ try
+ {
+ string fileName = Path.GetFileName(data.ImageUrl);
+
+ var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot", "uploads", "quality", data.QualityId.ToString(), fileName);
+ if (System.IO.File.Exists(filePath))
+ {
+ System.IO.File.Delete(filePath);
+
+ return Ok(new { code = 0, msg = "鍒犻櫎鎴愬姛" });
+ }
+ else
+ {
+ return Ok(new { code = 1, msg = "鍥剧墖涓嶅瓨鍦�" });
+ }
+ }
+ catch (Exception ex)
+ {
+ return Ok(new { code = 1, msg = ex.Message });
+ }
+ }
#endregion
}
}
--
Gitblit v1.8.0