LayUI的table實現行上傳圖片+mvc

一、layUI+JQuery

@using AMes.Domain.Entity.SystemManage;
@{Layout = null;
}<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>不合格品處置申請</title><link href="~/Scripts/layui-v2.8.2/layui/css/layui.css" rel="stylesheet" /><style>body, html {height: 100%;margin: 10px;}/*彈窗右上角關閉按鈕*/.layui-layer-setwin span {font-size: 30px;}.layui-form-label {width: 120px !important; /* 或者具體寬度如 120px */white-space: nowrap; /* 防止文本換行 */overflow: visible; /* 確保內容不會溢出被隱藏 */}/* 強制禁用樣式 */.disabled-input {background-color: #f6f6f6 !important;border-color: #e6e6e6 !important;opacity: 0.7;cursor: not-allowed !important;}</style>
</head>
<body><from class="layui-form layui-form-pane">@*第一行*@<div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">項目號</label><div class="layui-input-inline"><input id="PROJN" type="text" name="PROJN" autocomplete="off" class="layui-input disabled-input " disabled></div></div><div class="layui-inline"><label class="layui-form-label">訂單號</label><div class="layui-input-inline"><input id="WorkOrderNumber" type="text" name="WorkOrderNumber" autocomplete="off" class="layui-input disabled-input" disabled></div></div><div class="layui-inline"><label class="layui-form-label">工位</label><div class="layui-input-inline"><input id="WorkUnit" type="text" name="WorkUnit" autocomplete="off" class="layui-input disabled-input" disabled></div></div><div class="layui-inline"><label class="layui-form-label">產品型號</label><div class="layui-input-inline"><input id="ProductModel" type="text" name="ProductModel" autocomplete="off" class="layui-input disabled-input" disabled></div></div></div>@*第二行*@<div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">物料編碼</label><div class="layui-input-inline"><input id="MaterialCode" type="text" name="MaterialCode" autocomplete="off" class="layui-input disabled-input" disabled></div></div><div class="layui-inline"><label class="layui-form-label">物料名稱</label><div class="layui-input-inline"><input id="MaterialName" type="text" name="MaterialName" autocomplete="off" class="layui-input disabled-input" disabled></div></div><div class="layui-inline"><label class="layui-form-label">內碼</label><div class="layui-input-inline"><input id="SerialNumberIn" type="text" name="SerialNumberIn" autocomplete="off" class="layui-input disabled-input" disabled></div></div><div class="layui-inline"><label class="layui-form-label">外碼</label><div class="layui-input-inline"><input id="SerialNumberOut" type="text" name="SerialNumberOut" autocomplete="off" class="layui-input disabled-input" disabled></div></div></div>@*第三行*@<div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">生產車間</label><div class="layui-input-inline"><input id="ProductArea" type="text" name="ProductArea" autocomplete="off" class="layui-input disabled-input" disabled>@*<select id="ProductArea" name="ProductArea" lay-filter="Industry-select-filter" lay-verify="required"><option value="" selected>請選擇車間</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["Dis_Workshop"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select>*@</div></div><div class="layui-inline"><label class="layui-form-label">產業</label><div class="layui-input-inline"><select id="Industry" name="Industry" lay-filter="Industry-select-filter" lay-verify="required"><option value="" selected>請選擇產業</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["Industry"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select></div></div><div class="layui-inline"><label class="layui-form-label">物料類別</label><div class="layui-input-inline"><select id="MaterialCategory" name="MaterialCategory" lay-filter="MaterialCategory-select-filter" lay-verify="required"><option value="" selected>請選擇物料類別</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["MaterialCategory"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select></div></div><div class="layui-inline"><label class="layui-form-label">不合格數</label><div class="layui-input-inline"><input id="NonConformanceQty" type="number" name="NonConformanceQty" lay-verify="required" autocomplete="off" class="layui-input"></div></div></div>@*第四行*@<div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">產品歸類</label><div class="layui-input-inline"><select id="ProductCategorization" name="ProductCategorization" lay-filter="ProductCategorization-select-filter"><option value="" selected>請選擇產品歸類</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["ProductCategorization"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select></div></div><div class="layui-inline"><label class="layui-form-label">不合格類別</label><div class="layui-input-inline"><select id="NonConformanceCategory" name="NonConformanceCategory" lay-filter="NonConformanceCategory-select-filter"><option value="" selected>請選擇不合格類別</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["NonConformanceCategory"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select></div></div><div class="layui-inline"><label class="layui-form-label">不合格程度</label><div class="layui-input-inline"><select id="NonConformanceDegree" name="NonConformanceDegree" lay-filter="NonConformanceDegree-select-filter" lay-verify="required"><option value="" selected>請選擇不合格程度</option>@foreach (var item in (List<ItemsDetailEntity>)ViewData["NonConformanceDegree"]){<option value="@item.F_Id">@item.F_ItemName</option>}</select></div></div></div>@*第五行*@<div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">問題發生時間</label><div class="layui-input-inline"><input id="OccurrenceTime" type="text" name="OccurrenceTime" lay-filter="OccurrenceTime" lay-verify="required" autocomplete="off" class="layui-input" placeholder="yyyy-MM-dd HH:mm:ss"></div></div><div class="layui-inline"><label class="layui-form-label">一級物料分類</label><div class="layui-input-inline"><select id="OneMaterialCode" name="OneMaterialCode" lay-filter="OneMaterialCode"></select></div></div><div class="layui-inline"><label class="layui-form-label">二級物料分類</label><div class="layui-input-inline"><select id="TwoMaterialCode" name="TwoMaterialCode" lay-filter="TwoMaterialCode"></select></div></div></div>@*第六行*@<div class="layui-form-item"><div class="layui-upload"><div><table class="layui-hide" id="InspectionItems" lay-filter="InspectionItems"></table></div><div style="text-align:right;padding:10px;"><button class="layui-btn" lay-submit lay-filter="table-submit" style="background-color:#006487">提交 <i class="layui-icon layui-icon-ok layui-font-12"></i></button></div></div></div></from><script type="text/html" id="TPL-select-DefectType"><select name="DefectType" class="layui-border DefectType" data-rowid="{{d.Id}}" lay-ignore><option value="">請選擇</option>@foreach (var item in (List<Base_DefectType_Entity>)ViewData["DefectType"]){<option value="@item.DefectTypeCode" {{ d.DefectType == '@item.DefectTypeCode' ? 'selected' : '' }}>@item.DefectTypeName</option>}</select></script><script type="text/html" id="TPL-select-DefectDes"><select name="DefectDes" class="layui-border DefectDes" data-rowid="{{d.Id}}" lay-ignore style="width:115px;"><option value="">請選擇</option>{{# layui.each(d._defectDesOptions || [], function(index, item){ }}<option value="{{ item.DefectDesCode }}" {{ d.DefectDes == item.DefectDesCode ? 'selected' : '' }}>{{ item.DefectDesName }}</option>{{# }); }}</select></script><!-- 操作列模板 --><script type="text/html" id="actionTpl"><div class="action-cell"><button class="layui-btn layui-btn-sm upload-btn" lay-event="upload"><i class="layui-icon">&#xe67c;</i> 上傳文件</button></div></script><script src="~/Scripts/jquery-3.3.1.min.js"></script><script src="~/Scripts/layui-v2.11.4/layui/layui.js"></script><script>var form;var loginUserCode = "@ViewData["LoginUserCode"]";//當前登錄人編號var loginUserName = "@ViewData["LoginUserName"]";//當前登錄人名稱var List_UploadFile = [];//文件結果列表中var workOrderOperationInfo = new Object();var edit = function (data) {workOrderOperationInfo = data;console.log("workOrderOperationInfo ===========================================", JSON.stringify(workOrderOperationInfo));$("#PROJN").val(workOrderOperationInfo.ProjectNo);//項目號$("#WorkOrderNumber").val(workOrderOperationInfo.OrderNo);//訂單號$("#WorkUnit").val(workOrderOperationInfo.Ps_Ppr);//工位$("#ProductModel").val(workOrderOperationInfo.Model);//型號$("#MaterialCode").val(workOrderOperationInfo.ProductCode);//物料編碼$("#MaterialName").val(workOrderOperationInfo.ProductDesc);//物料名稱$("#SerialNumberIn").val(workOrderOperationInfo.ProductBarCode);//內碼$("#SerialNumberOut").val(workOrderOperationInfo.outCode);//外碼$("#ProductArea").val(workOrderOperationInfo.WorkshopCode);//車間名稱}layui.use(function () {//得到各種內置組件var $ = layui.jquery;var layer = layui.layer //彈層, laypage = layui.laypage //分頁, laydate = layui.laydate //日期, table = layui.table //表格, upload = layui.upload //上傳element = layui.element;//元素操作form = layui.form;//時間控件laydate.render({elem: '#OccurrenceTime',type: 'datetime',fullPanel: true //});// 使用事件委托處理缺陷類型變更$(document).on('change', '.DefectType', function () {var value = this.value;var text = this.options[this.selectedIndex].text;var rowId = $(this).data('rowid');var tr = $(this).closest('tr');var index = tr.data('index');if (rowId) {var rowData = table.cache.InspectionItems[index];if (rowData) {rowData.DefectType = value;rowData.DefectTypeName = text; // 清空缺陷描述的值和選項rowData.DefectDes = '';rowData.DefectDesName = '';rowData._defectDesOptions = []; // 先清空,等加載完再設置GetDefectDes(value, rowId, function (defectDesList) {// 將缺陷描述列表保存到行數據的臨時屬性中rowData._defectDesOptions = defectDesList;// 更新行數據,以便重新渲染缺陷描述下拉框table.updateRow('InspectionItems', {index: index,data: rowData});});}}});// 使用事件委托處理缺陷描述變更$(document).on('change', '.DefectDes', function () {var value = this.value;var text = this.options[this.selectedIndex].text;var rowId = $(this).data('rowid');var tr = $(this).closest('tr');var index = tr.data('index');if (rowId) {var rowData = table.cache.InspectionItems[index];if (rowData) {rowData.DefectDes = value;rowData.DefectDesName = text;}}});setTimeout(() => {//不合格檢驗項列表table.render({elem: '#InspectionItems',id: 'InspectionItems'// 添加這行, url: '/ProcessInspectionManage/NonconformDispositionApplication/GetInspectionItemsTablePage'//數據接口, height: '400px', method: 'post', title: '不合格檢驗項列表'//, toolbar: '#toolbarDemo', cellMinWidth: 'auto', where: {QualityInspectionId: workOrderOperationInfo.F_Id}, page: true//開啟分頁, limit: 200//頁面大小, limits: [30, 50, 100, 200, 500], cols: [[ //表頭{ field: 'Id', title: 'ID', hide: true },{ field: 'CheckNo', title: '檢驗項編碼', align: 'center', width: 150, hide: false }, { field: 'CheckName', title: '檢驗項名稱', align: 'center', width: 150, hide: false }, { field: 'CheckContent', title: '檢驗內容', align: 'center', width: 150, hide: false }, { field: 'DefectType', title: '缺陷類型', align: 'center', width: 150, hide: false, templet: '#TPL-select-DefectType' }, { field: 'DefectDes', title: '缺陷描述', align: 'center', width: 150, hide: false, templet: '#TPL-select-DefectDes' }, { field: 'ProblemDes', title: '問題描述', align: 'center', width: 300, hide: false, edit: 'textarea' }, { field: 'FileName', title: '文件名稱', align: 'center', width: 150, hide: false }, { field: 'FileType', title: '文件類型', align: 'center', width: 150, hide: true }, { field: 'FileUrl', title: '文件地址', align: 'center', width: 150, hide: true }, { fixed: 'right', title: '操作', width: 134, minWidth: 125, templet: '#actionTpl' }]], done: function (res, curr, count) {//初始化上傳按鈕// 在表格渲染完成后綁定上傳按鈕$('.upload-btn').each(function () {var elem = $(this);var tr = elem.closest('tr');var index = tr.data('index');if (!elem.data('upload-initialized')) {initUpload(elem, index);elem.data('upload-initialized', true);}});}});}, 500);//提交form.on('submit(table-submit)', function (data) {console.log("table-submit-----------------" + JSON.stringify(data.field));var field = data.field; // 獲得表單字段field.ProductCategorizationName = $("#ProductCategorization option:selected").text();field.NonConformanceCategoryName = $("#NonConformanceCategory option:selected").text();field.NonConformanceDegreeName = $("#NonConformanceDegree option:selected").text();field.MaterialCategoryName = $("#MaterialCategory option:selected").text();field.IndustryName = $("#Industry option:selected").text();field.OneMaterialName = $("#OneMaterialCode option:selected").text();field.TwoMaterialName = $("#TwoMaterialCode option:selected").text();field.ReworkTaskNumber = workOrderOperationInfo.ReworkTaskNumber;field.ProductAreaName = $("#ProductArea option:selected").text();//field.List_UploadFile = List_UploadFile;var currentData = table.getData('InspectionItems');field.List_UploadFile = currentData;let postData = {createdUserCode: loginUserCode,createdUserName: loginUserName,F_Id: workOrderOperationInfo.F_Id,entity: JSON.stringify(field)}console.log("postData-----------------" + JSON.stringify(postData));           $.ajax({async: false, //true 異步  false為同步請求type: 'POST', url: '/ProcessInspectionManage/NonconformDispositionApplication/SaveNonconformDispositionOrder', data: postData, beforeSend: function () {//console.log("加載中...");},complete: function () {// console.log("加載更多");},success: function (data) {var res = data;if (res.code != 200) {layer.msg(res.msg, { icon: 5 });} else {layer.msg(res.msg, { icon: 1 });//當在iframe頁面關閉自身時,在iframe頁執行以下js腳本var index = parent.layer.getFrameIndex(window.name); //先得到當前iframe層的索引//parent.layer.close(index); //再執行關閉setTimeout(function () { parent.layer.close(index) }, 1000);}}});});//監聽一級物料分類下拉選擇form.on('select(OneMaterialCode)', function (data) {console.log(data)GetTwoMaterialCode(data.value)});// 初始化上傳函數function initUpload(elem, index) {var tr = elem.closest('tr');upload.render({elem: elem[0],url: '/ProcessInspectionManage/NonconformDispositionApplication/FileUpload',accept: 'file',size: 10 * 1024,auto: true, // 自動上傳choose: function (obj) {// 僅修改文本,不替換整個DOMelem.addClass('layui-btn-disabled').html('<i class="layui-icon">&#xe67c;</i> 上傳中...');},before: function () {var progress = $('<div class="upload-status"></div>');progress.append('<div class="layui-progress progress" lay-filter="progress-' + index + '">' +'<div class="layui-progress-bar layui-bg-blue" lay-percent="0%"></div></div>');tr.find('.file-info').html(progress);element.render('progress');},progress: function (n) {var percent = n + '%';element.progress('progress-' + index, percent);},done: function (res) {console.log("上傳結果==========================", JSON.stringify(res));if (res.success) {//let tableId = 'InspectionItems';//var allData = table.cache.InspectionItems;var allData = table.cache.InspectionItems;console.log("allData ==========================", JSON.stringify(allData));console.log("index ==========================", JSON.stringify(index));// 確保索引有效if (allData && allData[index]) {// 更新數據allData[index].FileName = res.data.fileName;allData[index].FileType = res.data.fileType;allData[index].FileUrl = res.data.filePath;console.log("allData[index]._defectDesOptions ==========================", JSON.stringify(allData[index]._defectDesOptions));console.log("allData[index] ==========================", JSON.stringify(allData[index]));console.log("allData =====after=====================", JSON.stringify(allData));// 更新指定行數據table.updateRow("InspectionItems", {index: index,data: allData[index]});let DefectTypeValue = allData[index].DefectType;let rowId = allData[index].Id;//   GetDefectDes(DefectTypeValue, rowId);GetDefectDes(DefectTypeValue, rowId, function (defectDesList) {// 將缺陷描述列表保存到行數據的臨時屬性中allData[index]._defectDesOptions = defectDesList;// 更新行數據,以便重新渲染缺陷描述下拉框table.updateRow('InspectionItems', {index: index,data: allData[index]});// 重新渲染表單// layui.form.render();});layer.msg('上傳成功');}} else {layer.msg('上傳失敗');}elem.removeClass('layui-btn-disabled').html('<i class="layui-icon">&#xe67c;</i> 上傳文件');},error: function () {elem.removeClass('layui-btn-disabled').html('<i class="layui-icon">&#xe67c;</i> 上傳文件');layer.msg('上傳失敗');}});}});$(function () {GetOneMaterialCode();});//獲取一級物料分類數據function GetOneMaterialCode() {$.post("/ProcessInspectionManage/NonconformDispositionApplication/GetMaterialClassA", "", function (res) {if (res.code == 1) {$("#OneMaterialCode").empty();var str = '<option value="">請選擇一級物料分類</option>';$.each(res.data, function (index, item) {str += '<option value="' + item.MaterialCode + '" >' + item.MaterialName + '</option>';})$("#OneMaterialCode").append(str);//重新渲染下拉框layui.use('form', function () {form.render();form.render('select', 'OneMaterialCode'); //刷新select選擇框渲染});}})}//獲取二級物料分類數據function GetTwoMaterialCode(_MaterialCode) {$.post("/ProcessInspectionManage/NonconformDispositionApplication/GetMaterialClassB", "MaterialCode=" + _MaterialCode, function (res) {if (res.code == 1) {$("#TwoMaterialCode").empty();var str = '<option value="">請選擇二級物料分類</option>';$.each(res.data, function (index, item) {str += '<option value="' + item.MaterialCode + '" >' + item.MaterialName + '</option>';})$("#TwoMaterialCode").append(str);//重新渲染下拉框layui.use('form', function () {form.render();form.render('select', 'TwoMaterialCode'); //刷新select選擇框渲染});}});}// 獲取缺陷描述數據(帶回調)function GetDefectDes(defectTypeCode, rowId, callback) {$.post("/ProcessInspectionManage/NonconformDispositionApplication/GetDefectDes",{ DefectTypeCode: defectTypeCode },function (res) {if (res.code == 1) {if (callback) {callback(res.data);}}});}// 獲取缺陷描述數據(使用行ID)function GetDefectDes2(defectTypeCode, rowId) {$.post("/ProcessInspectionManage/NonconformDispositionApplication/GetDefectDes",{ DefectTypeCode: defectTypeCode },function (res) {if (res.code == 1) {// 使用行ID查找對應的缺陷描述下拉框var $defectDes = $('select.DefectDes[data-rowid="' + rowId + '"]');$defectDes.empty();$defectDes.append('<option value="">請選擇</option>');$.each(res.data, function (index, item) {$defectDes.append($('<option></option>').val(item.DefectDesCode).text(item.DefectDesName));});// 重新渲染下拉框layui.form.render($defectDes.parent());}});}</script>
</body>
</html>

二、C# MVC

// 文件上傳API[HttpPost]public ActionResult FileUpload(){try{if (Request.Files.Count == 0)return Json(new { success = false, message = "沒有接收到文件" });HttpPostedFileBase file = Request.Files[0];if (file.ContentLength == 0)return Json(new { success = false, message = "文件為空" });// 創建上傳目錄(如果不存在)string uploadPath = Server.MapPath("~/Uploads/");if (!Directory.Exists(uploadPath)){Directory.CreateDirectory(uploadPath);}// 生成唯一文件名string fileName = $"{Guid.NewGuid().ToString()}_{Path.GetFileName(file.FileName)}";string filePath = Path.Combine(uploadPath, fileName);// 保存文件file.SaveAs(filePath);// 返回文件信息return Json(new{success = true,data = new{fileName = file.FileName,fileType = Path.GetExtension(file.FileName).ToUpper().TrimStart('.'),filePath = $"/Uploads/{fileName}"}});}catch (Exception ex){return Json(new { success = false, message = ex.Message });}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/911690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/911690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/911690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ALINX 國產化 FPGA SoM 核心板選型指南:紫光同創 Kosmo2/Titan2/ Logos2/Logos 深度解析

作為紫光同創官方合作伙伴&#xff0c;ALINX 近日發布基于 Kosmo-2 系列新品 PG2K100 核心板 K100。 35mm42mm 的精小尺寸中集成雙核 A53 處理器85K FPGA 邏輯單元&#xff0c;1GB DDR3 保障實時數據處理能力&#xff0c;120 pin 工業連接器直插各類設備底板&#xff0c;為空間…

從零到一構建一個現代“C++游戲自研引擎”開發藍圖

當然不可能是真從零到一了&#xff0c;做為一個標題黨&#xff0c;標題不牛對不起自己&#xff0c;因為游戲引擎涉及太多領域了&#xff0c;比如圖形渲染、物理模擬、音頻處理、網絡通信等等。每個領域都有專業的解決方案&#xff0c;自己從頭實現不僅效率低&#xff0c;而且質…

XSS-labs靶場實戰

本文主要對XSS-labs靶場進行介紹&#xff0c;給出了我一步步怎么發現漏洞的過程。 目錄 第一關 第二關 第三關 第四關 第五關 第六關 第七關 第八關 第九關 第十關 第十一關 第十二關 第十三關 第十四關 第十五關 第十六關 第一關 沒啥好說的&#xff0c;直接…

day46-硬件學習之 小練習及中斷

一、蜂鳴器學習 代碼實現&#xff1a; 二、BSP工程管理 利用BSP工程管理&#xff0c;使文檔顯示不雜亂&#xff1b; 將這些文件分為4類&#xff0c;并保存到4個不同的文件夾里。 首先在新的工程文件夾里創建一個之后我們編寫的類似led驅動&#xff0c;clk驅動等等外設驅動程序都…

ArkUI-X通過Stage模型開發Android端應用指南(二)

StageApplication初始化支持以下三種方式 1. 通過繼承StageApplication的方式進行初始化 import ohos.stage.ability.adapter.StageApplication;public class HiStageApplication extends StageApplication {Overridepublic void onCreate() {super.onCreate();} }2. 繼承And…

主從復制的優勢是什么?如好搭建一個主從復制呢?

引言&#xff1a; 最近因為時間緣故&#xff0c;學校&#xff0c;比賽&#xff0c;面試很久沒有更新了&#xff0c;現在開始將會持續更新&#xff01;&#xff01;&#xff01;歐克。我們往下看&#xff1a; 概述&#xff1a; 主從復制是指將主數據庫的DDL和DML操作通過二進制…

Linux Shell腳本中basename和dirname的詳細用法教程

在Linux Shell腳本中&#xff0c;basename和 dirname是兩個非常實用的命令&#xff0c;常用于處理文件路徑和名稱。本文將詳細介紹這兩個命令的用法&#xff0c;并提供豐富的示例代碼&#xff0c;以幫助您更好地理解和應用它們。 一、basename命令 1.1 基本用法 basename命令…

3D世界里的“盜夢空間”!在方塊里再造一個世界?高級特效get?

有沒有想過&#xff0c;游戲里的鏡子、傳送門、或者屏幕上播放的實時3D動畫是怎么實現的&#xff1f; 答案就是一項黑科技——渲染目標&#xff08;Render Targets&#xff09;。它允許我們不直接渲染到屏幕&#xff0c;而是“偷偷地”渲染到一張幕后的貼圖上&#xff0c;然后…

淺析一種基于深度學習算法的維吾爾文OCR技術的實現原理及其應用場景

維吾爾文OCR技術是一種基于人工智能和深度學習技術的維吾爾文光學字符識別工具&#xff0c;能夠快速、準確地將印刷體或手寫體維吾爾文轉換為可編輯、可搜索的數字化文本。該技術適用于政府、教育、出版、金融等多個行業&#xff0c;助力維吾爾文信息的高效處理與智能化管理。 …

如何使用MQTTX軟件來進行MQTT協議的測試

下載MQTTX軟件 下載地址及說明文檔開始使用 - MQTTX 文檔,比較詳細 為什么使用MQTTX 何時要使用MQTTX軟件呢&#xff1f;用來檢測物聯網模塊上云的數據就很方便&#xff0c;當然云上如果有日志系統的話也是可以用的。 物聯網模塊&#xff0c;以利爾達模塊為例 NT26-KCN系列…

ELK 和 OpenShift 中的 EFK

ELK 和 OpenShift 中的 EFK 確實是同類日志解決方案的不同實現&#xff0c;核心功能相似但組件略有差異。以下是詳細對比和解釋&#xff1a; 1. ELK vs EFK&#xff1a;核心區別 組件ELK 棧EFK 棧&#xff08;OpenShift 默認&#xff09;日志收集Logstash&#xff08;Java 實現…

Python UDP Socket 實時在線刷卡掃碼POS消費機門禁控制服務端示例源碼

本示例使用的設備&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bk8Qc9r&ftt&id17021194999 一、服務端綁定IP開啟UDP端口接收消費機提交的請求 import sys import os import socket import time import datetimeIpList[] if sys.pl…

對于高考邊界的理解以及未來就業層級的學習與思考

目錄 一、2024年高考全國多少考生&#xff0c;文化課&#xff0c;文科理科&#xff0c;分別總分多少分&#xff1f;清北得多少分能上&#xff1f;二、1342萬人里面&#xff0c;有多少人能上清北&#xff0c;多少能上985&#xff0c;多少能上211&#xff0c;多少能上二本&#x…

JVM調優實戰 Day 4:JVM類加載機制

【JVM調優實戰 Day 4】JVM類加載機制 文章內容 在Java虛擬機&#xff08;JVM&#xff09;的運行過程中&#xff0c;類加載機制是整個程序啟動和運行的基礎。它決定了Java類是如何被動態加載到JVM中&#xff0c;并為后續的字節碼執行做好準備。理解JVM類加載機制不僅有助于我們…

R 語言中的判斷語句

R 語言中的判斷語句 在R語言編程中&#xff0c;判斷語句是執行條件邏輯的基礎。它們允許程序根據特定的條件執行不同的代碼塊。本文將深入探討R語言中的幾種常見判斷語句&#xff0c;包括if語句、if-else語句和switch語句&#xff0c;并探討它們的用法和場景。 1. if語句 if…

從設備自動化到智能管控:MES如何賦能牛奶飲料行業高效生產?

萬界星空科技全新推出的&#xff1a;新一代智能化MES系統&#xff0c;深度融合AI大數據技術&#xff0c;實現生產全流程可視化、智能排產、實時質量追溯與設備互聯&#xff0c;助力企業降本增效30%。 現開放免費試用名額&#xff0c;體驗智能化生產管理的高效與便捷&#xff01…

TDengine 技術參數配置大全

1. 背景 TDengine 的 taos.cfg 中配置項及使用 SQL 命令 alter 修改的系統變量之間的關系如何&#xff0c;哪些是持久存儲項&#xff0c;哪些設置是臨時項&#xff0c;這章將詳細說明。 本文是技術參考資料&#xff0c;請收藏。 2.定義 1. 全局配置參數 全局配置參數&#…

無人機神經網絡模塊運行與技術難點

一、神經網絡模塊的運行方式 1. 分層處理架構 感知層 多模態數據融合&#xff1a;通過八元數卷積網絡&#xff08;OCNN&#xff09;統一處理LiDAR、攝像頭、IMU等異構傳感器數據&#xff0c;將點云坐標&#xff08;x/y/z&#xff09;、圖像RGB與光流信息編碼至8維虛部&#…

前端react框架實現打包時間動態加入配置展示在指定頁面

注意&#xff1a; 當前方法特定為 create-react-app 構建框架&#xff0c;其他的構建流程不同&#xff0c;不能直接照搬 react-scripts 的方式。 ? 目標&#xff1a; 在 React 打包&#xff08;build&#xff09;時&#xff0c;自動將當前時間寫入代碼中某個變量或 console…

原子操作(CAS)

原子操作 原子操作原理什么是原子操作&#xff1f;原子性原子變量相關接口內存序 shared_ptr的實現 原子操作原理 什么是原子操作&#xff1f; 原子操作其實就是指在多線程的環境下&#xff0c;確保對共享變量的操作不會被干擾&#xff0c;從而避免了競態條件。 我們都知道&…