RuoYi/ruoyi-admin/src/main/resources/templates/dfm/addProject.html

840 lines
36 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('新增项目')" />
<th:block th:include="include :: select2-css" />
<meta http-equiv="Content-Type" content="multipart/form-data; charset=utf-8" />
</head>
<body>
<div class="main-content">
<form id="form-project-add" class="form-horizontal" enctype="multipart/form-data">
<!--<input name="deptId" type="hidden" id="treeId"/>-->
<h4 class="form-header h4">任务描述</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">任务类型:</label>
<div class="col-sm-8">
<select id="checkType" name="checkType" onchange="showDfmCheck(this);" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<!-- DFM Check可变项 -->
<span id="taskType" style="padding-left:30px;display:none;">
<table style="font-size: 12px">
<tr>
<td>
<input id='netlistcheck' type="checkbox"
name='dfmCheck' value="NetlistCheck" />
<label for='netlistcheck'>
NetlistCheck
</label>
</td>
<td>
<input id='fiducial' type="checkbox"
name='dfmCheck' value="Fiducial" />
<label for='fiducial'>
Fiducial
</label>
</td>
<td>
<input id='component' type="checkbox"
name='dfmCheck' value="Component" />
<label for='component'>
Component
</label>
</td>
<td>
<input id='padstack' type="checkbox"
name='dfmCheck' value="Padstack" />
<label for='padstack'>
Padstack
</label>
</td>
<td>
<input id='solderpaste' type="checkbox"
name='dfmCheck' value="Solderpaste" />
<label for='solderpaste'>
Solderpaste
</label>
</td>
<td>
<input id='pin2pad' type="checkbox"
name='dfmCheck' value="Pin2Pad" />
<label for='pin2pad'>
Pin2Pad
</label>
</td>
</tr>
<tr>
<td>
<input id='testpoint' type="checkbox"
name='dfmCheck' value="Testpoint" />
<label for='testpoint'>
Testpoint
</label>
</td>
<td>
<input id='drill' type="checkbox" name='dfmCheck'
value="Drill" />
<label for='drill'>
Drill
</label>
</td>
<td>
<input id='signallayer' type="checkbox"
name='dfmCheck' value="Signal Layer" />
<label for='signallayer'>
Signal Layer
</label>
</td>
<td>
<input id='pglayer' type="checkbox"
name='dfmCheck' value="P/G Layer" />
<label for='pglayer'>
P/G Layer
</label>
</td>
<td>
<input id='silkscreen' type="checkbox"
name='dfmCheck' value="Silk Screen" />
<label for='silkscreen'>
Silk Screen
</label>
</td>
<td>
<input id='soldermask' type="checkbox"
name='dfmCheck' value="Solder Mask" />
<label for='soldermask'>
Solder Mask
</label>
</td>
</tr>
<tr>
<td>
<input id='extchk1' type="checkbox"
name='dfmCheck' value="extchk1" />
<label for='extchk1'>
extchk1
</label>
</td>
<td>
<input id='extchk2' type="checkbox"
name='dfmCheck' value="extchk2" />
<label for='extchk2'>
extchk2
</label>
</td>
<td>
<input id='extchk3' type="checkbox"
name='dfmCheck' value="extchk3" />
<label for='extchk3'>
extchk3
</label>
</td>
<td>
<input id='extchk4' type="checkbox"
name='dfmCheck' value="extchk4" />
<label for='extchk4'>
extchk4
</label>
</td>
<td>
<input id='extchk5' type="checkbox"
name='dfmCheck' value="extchk5" />
<label for='extchk5'>
extchk5
</label>
</td>
<td>
<input id='extchk6' type="checkbox"
name='dfmCheck' value="extchk6" />
<label for='extchk6'>
extchk6
</label>
</td>
</tr>
</table>
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">项目描述:</label>
<div class="col-sm-8">
<input name="projectName" id="projectName" placeholder="请输入项目描述" class="form-control" type="text" maxlength="30" onBlur="getVersion(this.value);" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">版本:</label>
<div class="col-sm-8">
<input name="version" id="version" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">PCB文件包</label>
<div class="col-sm-8">
<input type="file" id="pcbFile" name="pcbFile" class="form-control" onblur="fillProjectName(this);" required/>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">布局密度:</label>
<div class="col-sm-8">
<select id="density" name="density" class="form-control m-b">
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">BOM文件</label>
<div class="col-sm-8">
<input type="file" name="bomFile" id="bomFile" class="form-control" />
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">任务优先级:</label>
<div class="col-sm-8">
<select name="pri" class="form-control m-b">
<option value="99999" selected></option>
<option value="1000"></option>
</select>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">单板参数</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">单板类型:</label>
<div class="col-sm-8">
<select name="pcbType" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">HDI层叠方式</label>
<div class="col-sm-8">
<select name="hdiModel" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">板厚(mm)</label>
<div class="col-sm-8">
<input name="boardThickness" id="boardThickness" placeholder="请输入板厚" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">拼板方式:</label>
<div class="col-sm-8">
<select name="panelModel" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Top面限高(mm)</label>
<div class="col-sm-8">
<input name="maxHeightTop" id="maxHeightTop" placeholder="请输入板厚" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">几拼板:</label>
<div class="col-sm-8">
<input name="subPcbNum" id="subPcbNum" placeholder="请输入板厚" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Bottom限高(mm)</label>
<div class="col-sm-8">
<input name="maxHeightBot" id="maxHeightBot" placeholder="请输入板厚" class="form-control" type="text" maxlength="30" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">辅助边位置:</label>
<div class="col-sm-8">
<select name="railwayPosition" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<h4 class="form-header h4">工艺参数</h4>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">是否无铅:</label>
<div class="col-sm-8">
<select name="havePb" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Top工艺路线</label>
<div class="col-sm-8">
<select name="assemblyProcessTop" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">表面处理方式:</label>
<div class="col-sm-8">
<select name="surfaceProcess" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Bottom工艺路线</label>
<div class="col-sm-8">
<select name="assemblyProcessBot" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">主要面:</label>
<div class="col-sm-8">
<select name="primarySide" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Top回流过板方向</label>
<div class="col-sm-8">
<select name="directionTop" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Bottom回流过板方向</label>
<div class="col-sm-8">
<select name="directionBot" class="form-control m-b" required>
</select>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label is-required">Bottom波峰过板方向</label>
<div class="col-sm-8">
<select name="directionBotFs" class="form-control m-b" required>
</select>
</div>
</div>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-offset-5 col-sm-10">
<button type="submit" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script>
jQuery(function($) {
initAllElement();
});
var prefix = ctx + "project.do";
$("#form-project-add").validate({
onkeyup: false,
rules:{
projectName:{
minlength: 6,
maxlength: 32,
},
boardThickness:{
number: true
},
maxHeightTop:{
number: true
},
subPcbNum:{
number: true
},
maxHeightBot:{
number: true
},
version:{
number: true
}
},
focusCleanup: true
});
function submitHandler() {
if ($.validate.form() ) {
var checkResult = submitForm();
if(!checkResult) {
return false;
}
var data = $("#form-project-add").serializeArray();
// $.operate.save(prefix + "/addSave", data);
var url = prefix + "/addSave";
var formData = new FormData();
formData.append('pcbFile', $('#pcbFile')[0].files[0]);
formData.append('bomFile', $('#bomFile')[0].files[0]);
$.each( data, function(i, obj){
formData.append(obj.name, obj.value);
});
$.ajax({
url: url,
type: 'post',
cache: false,
data: formData,
processData: false,
contentType: false,
dataType: "json",
beforeSend: function () {
$.modal.loading("正在处理中,请稍后...");
$.modal.disable();
},
success: function(result) {
$.operate.successCallback(result);
}
});
}
}
//验证form
function submitForm() {
if (!$.validate.form() ) {
return false;
}
if ($.trim($("input[name='projectName']").val()) == "") {
// alert("项目名不能为空!");
$modal.alertError("项目名不能为空!");
return false;
}
if ($.trim($("input[name='version']").val()) == "") {
// alert("版本不能为空!");
$modal.alertError("版本不能为空!");
return false;
}
if ($("select[name='checkType']").val() == "") {
// alert("请选择任务类型!");
$modal.alertError("请选择任务类型!");
return false;
}
var checkType = $("select[name='checkType']");
var dfmCheck = checkType.children(":selected").text();
//var dfmCheck = $(checkType).val();
if (dfmCheckName == dfmCheck) { //必须提供PCB文件包与BOM文件需提供所有的单板参数、工艺参数。
// if (!doValidate('addProjectForm')) {
// return false;
// }
} else if ("BOM预审" == dfmCheck) {
//只需提供BOM文件无需提供PCB文件包。无需提供单板参数、工艺参数。
if ($("input[name='bomFile']").val() == "") {
// alert("必需提供BOM文件");
$modal.alertError("必需提供BOM文件");
return false;
}
} else if ("CAM验证" == dfmCheck) {
//只需提供PCB文件包无需提供BOM文件。无需提供单板参数、工艺参数。
if ($("input[name='pcbFile']").val() == "") {
// alert("必需提供PCB文件");
$modal.alertError("必需提供PCB文件");
return false;
}
}
//显示进度条
// setTimeout(showProcess, 200);
$.modal.loading("正在上传文件,请耐心等待...");
return true;
}
var dfmCheckValue = '2';
//如有修改DFM分析自定义的名称,修改这个变量即可
//TODO 记得恢复成原样
var dfmCheckName = 'PCB版本对比';
//选择任务类型
function showDfmCheck(select) {
var dfmCheck = $(select).children(":selected").text();
//var dfmCheck = $(select).val();
if (dfmCheckName == dfmCheck) {
$("#taskType").show();
} else {
$("#taskType").hide();
}
}
var hasOldVersion = false;
var oldProjectData = null;
/**
* 获取当前用户及项目名单最大版本号
*/
function getVersion(v) {
if (null == v || "" == v) {
return false;
}
// $.ajax({
// url: prefix + "/getLastVersion",
// data: "projectName=" + v,
// cache: false,
// success: function (json) {
// if (null == json || "" == json) {
// $("#version").val(1);
// hasOldVersion = false;
// resetForm();
// } else //有相同项目,开始赋值
// {
// hasOldVersion = true;
// oldProjectData = json;
// fillParams();
// }
// }
// });
}
//重置表单数据
function resetForm() {
if (hasOldVersion) {
fillParams();
return false;
} else {
initAllElement();
return false;
}
}
//有相同版本时填充其他参数
function fillParams()
{
data = oldProjectData;
// $("#version").val(data.version + 1);
var checkType = $("select[name='checkType']");
checkType.val(data.checkType).trigger("change");
var dfmCheck = checkType.children(":selected").text();
//var dfmCheck = $(checkType).val();
if(dfmCheck == dfmCheckName)
{
$("#taskType").show();
}
else
{
$("#taskType").hide();
}
var dfmCheckArr = data.dfmCheck.split(',');
//$("#wbfx").attr("checked",false);
//$("#lbfx").attr("checked",false);
//$("#zpfx").attr("checked",false);
$("input[name='dfmCheck']").each(function(i,item){
$(item).attr("checked",false);
//TODO 取消选中
$(item).iCheck('uncheck');
});
for(var i=0;i< dfmCheckArr.length;i++)
{
if(dfmCheckArr[i] == $("#netlistcheck").val())
{
$("#netlistcheck").attr("checked",true);
$("#netlistcheck").iCheck('check');
}
else if(dfmCheckArr[i] == $("#fiducial").val())
{
$("#fiducial").attr("checked",true);
$("#fiducial").iCheck('check');
}
else if(dfmCheckArr[i] == $("#component").val())
{
$("#component").attr("checked",true);
$("#component").iCheck('check');
}
else if(dfmCheckArr[i] == $("#padstack").val())
{
$("#padstack").attr("checked",true);
$("#padstack").iCheck('check');
}
else if(dfmCheckArr[i] == $("#solderpaste").val())
{
$("#solderpaste").attr("checked",true);
$("#solderpaste").iCheck('check');
}
else if(dfmCheckArr[i] == $("#pin2pad").val())
{
$("#pin2pad").attr("checked",true);
$("#pin2pad").iCheck('check');
}
else if(dfmCheckArr[i] == $("#testpoint").val())
{
$("#testpoint").attr("checked",true);
$("#testpoint").iCheck('check');
}
else if(dfmCheckArr[i] == $("#drill").val())
{
$("#drill").attr("checked",true);
$("#drill").iCheck('check');
}
else if(dfmCheckArr[i] == $("#signallayer").val())
{
$("#signallayer").attr("checked",true);
$("#signallayer").iCheck('check');
}
else if(dfmCheckArr[i] == $("#pglayer").val())
{
$("#pglayer").attr("checked",true);
$("#pglayer").iCheck('check');
}
else if(dfmCheckArr[i] == $("#silkscreen").val())
{
$("#silkscreen").attr("checked",true);
$("#silkscreen").iCheck('check');
}
else if(dfmCheckArr[i] == $("#soldermask").val())
{
$("#soldermask").attr("checked",true);
$("#soldermask").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk1").val())
{
$("#extchk1").attr("checked",true);
$("#extchk1").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk2").val())
{
$("#extchk2").attr("checked",true);
$("#extchk2").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk3").val())
{
$("#extchk3").attr("checked",true);
$("#extchk3").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk4").val())
{
$("#extchk4").attr("checked",true);
$("#extchk4").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk5").val())
{
$("#extchk5").attr("checked",true);
$("#extchk5").iCheck('check');
}
else if(dfmCheckArr[i] == $("#extchk6").val())
{
$("#extchk6").attr("checked",true);
$("#extchk6").iCheck('check');
}
}
/*
for(var i=0;i< dfmCheckArr.length;i++)
{
var str = dfmCheckArr[i].toLowerCase().replace(' ','');
if(dfmCheckArr[i] == $("#"+str).val())
{
$("#"+str).attr("checked",true);
}
}
*/
$("select[name='pcbType']").val(data.pcbType).trigger("change");
$("select[name='hdiModel']").val(data.hdiModel).trigger("change");
$("input[name='boardThickness']").val(data.boardThickness);
$("select[name='panelModel']").val(data.panelModel).trigger("change");
$("input[name='maxHeightTop']").val(data.maxHeightTop);
$("input[name='subPcbNum']").val(data.subPcbNum);
$("input[name='maxHeightBot']").val(data.maxHeightBot);
$("select[name='railwayPosition']").val(data.railwayPosition).trigger("change");
//$("select[name='viacapLayer']").val(data.viacapLayer);
$("select[name='assemblyProcessTop']").val(data.assemblyProcessTop).trigger("change");
$("select[name='havePb']").val(data.havePb).trigger("change");
$("select[name='assemblyProcessBot']").val(data.assemblyProcessBot).trigger("change");
$("select[name='surfaceProcess']").val(data.surfaceProcess).trigger("change");
$("select[name='directionTop']").val(data.directionTop).trigger("change");
$("select[name='primarySide']").val(data.primarySide).trigger("change");
$("select[name='directionBot']").val(data.directionBot).trigger("change");
$("select[name='directionBotFs']").val(data.directionBotFs).trigger("change");
$("select[name='density']").val(data.density).trigger("change");
}
/**
* 初始化页面SELECT数据
*/
function initAllElement()
{
var selects = $("select");
for(var i=0;i<selects.length;i++)
{
var selectName = $(selects[i]).attr("name");
if(selectName == 'pri' || selectName == 'reportLanguage')
{
continue;
}
initElement($(selects[i]));
}
$("input[name='boardThickness']").val(2);
$("input[name='maxHeightTop']").val(5);
$("input[name='subPcbNum']").val(2);
$("input[name='maxHeightBot']").val(5);
$("input[name='dfmCheck']").each(function(){
$(this).attr("checked",true);
$(this).iCheck('check');
});
//var dfmCheck = $("input[name='checkType']").children(":selected").html();
//var dfmCheck = $("input[name='checkType']");
//showDfmCheck(dfmCheck);
}
/**
* Ajax获取元素值并赋值到相应元素
*/
function initElement(element)
{
$.ajax({
url: prefix + "/getAttrValue",
data: "attrName="+element.attr("name"),
success: function(json){
var html = "<option value=''>--请选择--</option>";
for(var i=0;i<json.length;i++)
{
if(json[i].isDefault == '1')
{
html += "<option value='"+ json[i].value +"' selected='true'>" + json[i].text + "</option>";
//新增checkType面板初始化
if('checkType' == element.attr('name'))
{
if(dfmCheckName == json[i].text)
{
$("#taskType").show();
}
else
{
$("#taskType").hide();
}
}
}
else
{
html += "<option value='"+ json[i].value +"'>" + json[i].text + "</option>";
}
}
element.html(html);
}
});
}
//自动获取项目名称
function fillProjectName(o)
{
var fileName = getFileName($(o).val());
var index = fileName.lastIndexOf(".");
fileName = fileName.substring(0,index);
$("input[name='projectName']").val(fileName);
$("input[name='projectName']").blur();
}
function getFileName(path)
{
var pos1 = path.lastIndexOf('/');
var pos2 = path.lastIndexOf('\\');
var pos = Math.max(pos1, pos2)
return path.substring(pos+1);
}
// function showProcess()
// {
// $(document).progressDialog.showDialog("正在上传文件,请耐心等待...");
// }
</script>
</body>
</html>