Browse Source

新增SPC005R和005V頁面

PTD
Shani 3 years ago
parent
commit
47fc99017d
  1. 27
      AMESCoreStudio.Web/Controllers/PCSController.cs
  2. 155
      AMESCoreStudio.Web/Views/SPC/SPC005R.cshtml
  3. 198
      AMESCoreStudio.Web/Views/SPC/SPC005V.cshtml
  4. 199
      AMESCoreStudio.WebApi/Controllers/AMES/InspectionResultBlobsController.cs

27
AMESCoreStudio.Web/Controllers/PCSController.cs

@ -1,23 +1,22 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.Web.Models;
using Newtonsoft.Json;
using AMESCoreStudio.WebApi;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.Web.ViewModels;
using AMESCoreStudio.Web.ViewModels.PCS;
using AMESCoreStudio.WebApi.DTO.AMES;
using System.Linq;
using AMESCoreStudio.CommonTools.Result;
using System;
using System.IO;
using Microsoft.AspNetCore.Http;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.Web.Controllers
{

155
AMESCoreStudio.Web/Views/SPC/SPC005R.cshtml

@ -0,0 +1,155 @@
@model AMESCoreStudio.WebApi.Models.AMES.InspectionResultBlob
@{ ViewData["Title"] = "SPC005R";
Layout = "~/Views/Shared/_AMESLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
.text-error {
color: #dc3545 !important;
}
.my-read-only-class {
cursor: not-allowed;
}
</style>
<div class="layui-card">
<div class="layui-card-body">
<form enctype="multipart/form-data" class="layui-form" method="post" asp-action="SPC005RSave">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="id" asp-for="InspectionID" value="@ViewBag.MasterID" />
<input type="hidden" id="itemID" asp-for="InspectionItemID" value="@ViewBag.ItemID" />
<div class="layui-form-item" style="text-align:center">
<div class="layui-inline">
<label class="layui-btn">
<input type="file" name="formFile">
</label>
<input type="submit" id="asubmit" value="上傳" class="layui-btn layui-icon " />
</div>
</div>
<div style="text-align:center">
<div class="layui-inline">
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
@* <input type="submit" id="asubmit" value="上傳" class="layui-btn layui-btn-normal layui-btn-xs layui-icon " /> *@
</div>
</div>
</form>
@* SOP文件 sheet *@
<table class="layui-hide" id="sop" lay-filter="sop"></table>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
//layui.use(['form', 'layer', 'laydate'], function () {
// form = layui.form;
//
// form.on('select(Type)', function (data) {
// var data = $("#Type").val();
// getInspectionForms(data);
// });
//
//});
hg.form.onsubmit('asubmit', function (data) {
tt();
//table && table.reload(data);
});
//通过行tool编辑,lay-event="show"
function show(obj) {
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
type: 2,
title: '預覽文件',
shadeClose: true,//点击遮罩关闭层
shade: 0.8,
area: ['90%', '90%'],
content: obj.data.filePath + obj.data.newName, //iframe的url
zIndex: 19891014,
//iframe: {
// src:obj.data.filePath + obj.data.newName
//
//}
});
});
};
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.imageName) {
hg.confirm("圖片資料:" + obj.data.imageName + ",确定要删除吗?", function () {
$.ajax({
url: '/REP/REP001D',
data: { id: obj.data.imageName },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
@* SOP文件 sheet *@
var tableCols = [[
{
field: 'imageName',
title: '檔案名稱',
sort: true
},
{
field: 'createDate',
templet: '<div>{{ layui.util.toDateString(d.createDate, "yyyy/MM/dd") }}</div>'
},
{
field: 'right',
width: 80,
title: '操作',
align: 'center',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-read" lay-event="show">預覽</a>'
}
}]
];
//基本数据表格
var table;
$(function () {
tt();
});
function tt() {
//基本数据表格
table = hg.table.datatable('sop', '巡檢上傳文件', '/SPC/GetInspectionResultBlobsByQuery?id=' + @ViewBag.MasterID +'&itemID=' + @ViewBag.ItemID, {}, tableCols, false, 'full-100');
};
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

198
AMESCoreStudio.Web/Views/SPC/SPC005V.cshtml

@ -0,0 +1,198 @@
@model AMESCoreStudio.WebApi.Models.AMES.InspectionResultMaster
@{ ViewData["Title"] = "SPC005U";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
//Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.layui-table-cell {
overflow: visible !important;
}
td .layui-form-select {
margin-top: -10px;
margin-left: -10px;
margin-right: -10px;
}
</style>
<div class="layui-card">
<div class="layui-card-body">
<label class="layui-form-label" value="@ViewBag.FormName"></label>
<label class="layui-form-label" value="@ViewBag.InspectionForm"></label>
<form id="modelform" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="InspectionID" asp-for="InspectionID" />
<input type="hidden" id="InspectionFormID" asp-for="InspectionFormID" />
<input type="hidden" asp-for="CreateUserID" />
<input type="hidden" asp-for="UpdateUserID" value="0" />
<input type="hidden" asp-for="CreateDate" />
<input type="hidden" asp-for="UpdateDate" value="@System.DateTime.Now" />
<input type="hidden" asp-for="StatusNo" />
<div class="form-inline ">
<div class="layui-form-item">
<div class="layui-form-item">
<div class="layui-input-inline">
<label asp-for="WipNo" class="control-label col-sm-2"></label>
<input id="WipNo" asp-for="WipNo" type="text" class="layui-input" readonly>
</div>
<div class="layui-input-inline">
<label asp-for="ItemNo" class="control-label col-sm-2"></label>
<input id="ItemNo" asp-for="ItemNo" class="layui-input" readonly>
</div>
<div class="layui-input-inline">
<label asp-for="BarcodeNo" class="control-label col-sm-2"></label>
<input id="BarcodeNo" asp-for="BarcodeNo" class="layui-input" readonly>
</div>
</div>
</div>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
</form>
<form id="modeltable" method="post">
<table class="layui-hide" id="test" lay-filter="test" lay-data="{id:'test'}"></table>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
@*回復*@
<script type="text/html" id="selectResult">
<select name="selectResult" lay-filter="selectResult" id="selectResult" data-value={{d.result}} class="layui-form" disabled>
<option value="NA">N/A</option>
<option value="P">PASS</option>
<option value="F">FAIL </option>
</select>
</script>
@*線別*@
<script type="text/html" id="selectLine">
<select name="selectLine" lay-filter="selectLine" id="selectLine" data-value={{d.lineID}} asp-items="@ViewBag.LineList" class="layui-form" disabled>
</select>
</script>
@*站別*@
<script type="text/html" id="selectStation">
<select name="selectStation" lay-filter="selectStation" id="selectStation" data-value={{d.ruleStationID}} asp-items="@ViewBag.StationList" class="layui-form" disabled>
</select>
</script>
@*缺失單位*@
<script type="text/html" id="selectDept">
<select name="selectDept" lay-filter="selectDept" id="selectDept" data-value={{d.missingUnitNo}} asp-items="@ViewBag.FactoryUnit" class="layui-form" disabled>
</select>
</script>
@*缺失人員*@
<script type="text/html" id="selectUser">
<select name="selectUser" lay-filter="selectUser" id="selectUser" data-value={{d.missingUserID}} lay-search='' asp-items="@ViewBag.UserList" class="layui-form" disabled>
</select>
</script>
<script type="text/javascript">
layui.use(['form', 'layer', 'table', 'laytpl', 'laydate'], function () {
var layer = layui.layer,
$ = layui.jquery,
form = layui.form,
table = layui.table;
itemslist();
function itemslist() {
var formID = $("#InspectionID").val();
table.render({
elem: '#test',
url: '/SPC/GetInspectionResultDetails?id=' + formID,
id: 'test',
toolbar: '#toolBar',
//height:720,
page: false,
cols: [[
{ field: 'inspectionItemID', width: 50, title: '#', },
{
field: 'inspectionItem',
title: '項目',
align: 'left',
width: 450,
sort: true,
templet: function (d) {
return d.inspectionItem['inspectionItemName'];
}
},
{
field: 'inspectionItem',
title: '標準值',
minwidth: 80,
align: 'left',
templet: function (d) {
return d.inspectionItem['inspectionItemValue'];
}
},
{ field: 'result', title: '稽核結果', width: 100, align: "left", templet: '#selectResult' },
{ field: 'lineID', title: '線別', width: 100, align: "left", templet: '#selectLine' },
{ field: 'ruleStationID', title: '站別', width: 100, align: "left", templet: '#selectStation' },
{ field: 'location', title: '插件位置', width: 100, align: "left" },
{ field: 'missingUnitNo', title: '缺失單位', width: 100, align: "left", templet: '#selectDept' },
{ field: 'missingUserID', title: '缺失人員', width: 100, align: "left", templet: '#selectUser' },
{ field: 'missingRemark', title: '備註', width: 250, align: "left"},//templet: '#inputTest'
{
field: 'right',
width: 100,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">檢視文件</a> '
}
}
]],
done: function (res, curr, count) {
$(".layui-table-main tr").each(function (index, val) {
$($(".layui-table-fixed .layui-table-body tbody tr")[index]).height($(val).height());
});
layui.each($('select'), function (index, item) {
var elem = $(item);
elem.val(elem.data('value')).parents('div.layui-table-cell').css('overflow', 'visible');
});
form.render();
}
});
}
/*表格列表操作*/
table.on('tool(test)', function (obj) {
var data = obj.data, layEvent = obj.event;
if (layEvent === 'edit') {
var id = $("#InspectionID").val();
if (obj.data.inspectionItemID) {
layer.open({
type: 2 //此處以iframe舉例
, title: '上傳文件'
, area: ['480px', '400px']
, shade: 0
, maxmin: true
, offset: 'auto'//顯示座標-auto居中
, content: "/SPC/SPC005R?id=" + id + "&itemID=" + obj.data.inspectionItemID
//, btn: ['關閉']
, yes: function () {
//layer.close();
if (layer.confirm('確定要關閉麼')) {
layer.close(index);
}
// $(that).click();
}
, zIndex: 19891014 //layer.zIndex //重點1
, success: function (layero) {
layer.setTop(layero); //重點2
}
});
//hg.open('上傳文件', '/SPC/SPC005R?id=' + id + '&itemID=' + obj.data.inspectionItemID, 1080, 640);
}
}
});
});
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

199
AMESCoreStudio.WebApi/Controllers/AMES/InspectionResultBlobsController.cs

@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using AMESCoreStudio.WebApi;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.CommonTools.Result;
namespace AMESCoreStudio.WebApi.Controllers.AMES
{
/// <summary>
/// 巡檢類別資料维护
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class InspectionResultBlobsController : ControllerBase
{
private readonly AMESContext _context;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public InspectionResultBlobsController(AMESContext context)
{
_context = context;
}
/// <summary>
/// 获取全部巡檢類別資料
/// </summary>
/// <returns></returns>
// GET: api/InspectionResultBlobs
[HttpGet]
public async Task<ActionResult<IEnumerable<InspectionResultBlob>>> GetInspectionResultBlobs()
{
IQueryable<InspectionResultBlob> q = _context.InspectionResultBlobs;
q = q.OrderBy(p => p.InspectionID);
q = q.OrderBy(p => p.InspectionItemID);
var InspectionResultBlobs = await q.ToListAsync();
return InspectionResultBlobs;
}
/// <summary>
/// 用ID获取该巡檢類別資料
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// GET: api/InspectionResultBlobs/5
[HttpGet("{id}")]
public async Task<ActionResult<IEnumerable<InspectionResultBlob>>> GetInspectionResultBlobs(int id)
{
IQueryable<InspectionResultBlob> q = _context.InspectionResultBlobs;
q = q.Where(p => p.InspectionID.Equals(id));
var InspectionResultBlob = await q.ToListAsync();
if (InspectionResultBlob == null)
{
return NotFound();
}
return InspectionResultBlob;
}
/// <summary>
/// 获取该巡檢表單Blob By Query
/// </summary>
/// <param name="id"></param>
/// <param name="itemID"></param>
/// <returns></returns>
// GET: api/InspectionResultBlobs/Query/5
[HttpGet("Query/{id}/{itemID}")]
public async Task<ActionResult<IEnumerable<InspectionResultBlob>>> GetInspectionResultBlobsByQuery(int id, int itemID)
{
IQueryable<InspectionResultBlob> q = _context.InspectionResultBlobs;
q = q.Where(p => p.InspectionID.Equals(id));
q = q.Where(p => p.InspectionItemID.Equals(itemID));
var InspectionResultBlob = await q.ToListAsync();
if (InspectionResultBlob.Count == 0 )
{
return InspectionResultBlob;
}
return InspectionResultBlob;
}
/// <summary>
/// 更新巡檢類別資料
/// </summary>
/// <param name="id"></param>
/// <param name="InspectionResultBlob"></param>
/// <returns></returns>
// PUT: api/InspectionResultBlobs/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPut("{id}")]
public async Task<ResultModel<InspectionResultBlob>> PutInspectionResultBlobs(int id, [FromBody] InspectionResultBlob InspectionResultBlob)
{
ResultModel<InspectionResultBlob> result = new ResultModel<InspectionResultBlob>();
if (id != InspectionResultBlob.InspectionID)
{
result.Success = false;
result.Msg = "序號錯誤";
return result;
}
_context.Entry(InspectionResultBlob).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (Exception e)
{
result.Success = false;
result.Msg = e.Message;
return result;
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
/// 新增巡檢類別資料
/// </summary>
/// <param name="InspectionResultBlob"></param>
/// <returns></returns>
// POST: api/InspectionResultBlobs
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://go.microsoft.com/fwlink/?linkid=2123754.
[HttpPost]
public async Task<ResultModel<InspectionResultBlob>> PostInspectionResultBlobs(InspectionResultBlob InspectionResultBlob)
{
ResultModel<InspectionResultBlob> result = new ResultModel<InspectionResultBlob>();
Helper helper = new Helper(_context);
_context.InspectionResultBlobs.Add(InspectionResultBlob);
try
{
await _context.SaveChangesAsync();
}
catch (Exception e)
{
result.Success = false;
result.Msg = e.Message;
return result;
}
result.Success = true;
result.Msg = "OK";
return result;
}
/// <summary>
/// 删除巡檢類別資料
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
// DELETE: api/InspectionResultBlobs/5
[HttpDelete("{id}")]
public async Task<ResultModel<InspectionResultBlob>> DeleteInspectionResultBlobs(int id)
{
ResultModel<InspectionResultBlob> result = new ResultModel<InspectionResultBlob>();
var inspectionType = await _context.InspectionResultBlobs.Where(m => m.InspectionID == id).FirstOrDefaultAsync();
if (inspectionType == null)
{
result.Success = false;
result.Msg = "序號不存在";
return result;
}
_context.InspectionResultBlobs.Remove(inspectionType);
await _context.SaveChangesAsync();
result.Success = true;
result.Msg = "OK";
return result;
}
private bool InspectionResultBlobsExists(int id)
{
return _context.InspectionResultBlobs.Any(e => e.InspectionID == id);
}
}
}
Loading…
Cancel
Save