KDTECH.ProManager/Pages/page/Order/BOM/Demo_TableEdit.html
2021-01-21 01:07:11 +08:00

331 lines
15 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>
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="../../../lib/layui-v2.5.5/css/layui.css" media="all">
<link rel="stylesheet" href="../../../css/public.css" media="all">
<style>
body {
background-color: #ffffff;
}
</style>
</head>
<body>
<div class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label required">设计总成图号</label>
<div class="layui-input-block">
<input type="text" name="designAssyNum" required lay-verify="required" lay-reqtext="设计总成图号不能为空"
placeholder="请输入设计总成图号" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">BOM名称</label>
<div class="layui-input-block">
<input type="text" name="name" required lay-verify="required" lay-reqtext="BOM名称不能为空"
placeholder="请输入BOM名称" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<script type="text/html" id="toolbar">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="addLine">添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="deleteLine">删除</button>
</div>
</script>
<table class="layui-hide" id="addBOMDetailsList" lay-filter="addBOMDetailsList"></table>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
<script src="../../../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="../../../js/md5/md5.js" charset="utf-8"></script>
<script src="../../../js/PublicParameters/PublicParameters.js" charset="utf-8"></script>
<script>
layui.config({
base: '../../../js/lay-module/'
}).extend({ tableEdit: 'tableEdit/tableEdit' }).use(['form', 'table', 'tableEdit'], function () {
var form = layui.form,
layer = layui.layer,
table = layui.table,
tableEdit = layui.tableEdit;
$ = layui.$;
// table.render({
// elem: '#addBOMDetailsList',
// data: [{ "figureNum": "", "remark": "", }],
// toolbar: '#toolbar',
// defaultToolbar: [],
// cols: [[
// { type: "checkbox", width: 50 },
// { type: "numbers", title: '序号', width: 50 },
// { field: 'figureNum', width: 200, title: '图号编码', align: "center", edit: "text" },
// { field: 'remark', width: 350, title: '备注', align: "left" },
// ]],
// page: false,
// skin: 'line'
// });
var params = [{ name: 1, value: "张三1" }, { name: 2, value: "张三2" }, { name: 3, value: "张三3" }, { name: 4, value: "张三4" }, { name: 5, value: "张三5" }];
var cols = table.render({
elem: '#addBOMDetailsList'
, id: 'id'
, url: '../../../jsondata/Demo_TableEditData.json'
, height: 'full-90'
, page: true
, cols: [[
{ type: 'checkbox' }
//type的类型值select下拉框date时间选择框input(输入框)
//input为输入框失去焦点会触发回调aopTable.on()中触发的回调
, { field: 'name', title: '输入框', width: 120, event: 'name', config: { type: 'input' } }
//data 为下拉框数据
, {
field: 'danxuan', align: 'center', title: '单选', width: 120, event: 'danxuan', config: { type: 'select', data: params }, templet: function (d) {
return d.danxuan && d.danxuan.value ? d.danxuan.value : '';
}
}
// enabled => true多选false单选。默认为false
, {
field: 'duoxuan', title: '多选', width: 120, event: 'duoxuan', config: { type: 'select', data: params, enabled: true }, templet: function (d) {
var str = [];
d.duoxuan.forEach(function (e) {
str.push(e.value)
});
return str.join(' || ');
}
}
//dateType表示日期时间格式date为“yyyy-MM-dd”datetime为“yyyy-MM-dd HH:ss:mm”
, { field: 'birthday', title: '生日', width: 120, event: 'birthday', config: { type: 'date', dateType: 'date' } }
//cascadeSelectField字段为级联开关字段(存在该字段则级联,否则不级联)
, {
field: 'xlkjl', title: '下拉框联动(上级)', width: 150, event: 'xlkjl', config: { type: 'select', data: params, cascadeSelectField: 'xialaxiaji' }, templet: function (d) {
return d.xlkjl && d.xlkjl.value ? d.xlkjl.value : '';
}
}
, {
field: 'xialaxiaji', title: '下拉框联动(下级)', width: 150, event: 'xiaji', config: { type: 'select', data: params }, templet: function (d) {
return d.xialaxiaji && d.xialaxiaji.value ? d.xialaxiaji.value : '';
}
}
, { field: 'rqjl', title: '日期联动(上级)', width: 150, event: 'rqjl', config: { type: 'date', dateType: 'date', cascadeSelectField: 'rqxiaji' } }
, {
field: 'rqxiaji', title: '日期框联动(下级)', width: 150, event: 'rqxiaji', config: { type: 'select', data: params }, templet: function (d) {
return d.rqxiaji && d.rqxiaji.value ? d.rqxiaji.value : '';
}
}
]]
}).config.cols;
/**
* 参数cols是table.render({})中的cols属性值
* aop代理是基于event点击事件进行操作的因此cols中务必开启event点击事件
**/
var aopTable = tableEdit.aopObj(cols); //获取一个aop对象
/**
* 注意:
* 1、 aopTable.on('tool(xxx)',function (obj) {})
* 2、 table.on('tool(yyy)',function (obj) {})
* 如果1中的xxx与2中的yyy字符串相同时不能同时用用了会造成后调用者覆盖前调用者。
* 应该直接用1来代替2因为1中包含了2中的事件。
* 如果不相同,则可以同时使用。
**/
aopTable.on('tool(addBOMDetailsList)', function (obj) {
var field = obj.field; //单元格字段
var value = obj.value; //修改后的值
var data = obj.data; //当前行旧数据
var event = obj.event; //当前单元格事件属性值
var update = {};
update[field] = value;
//把value更新到行中
obj.update(update);
/**
*说白了此obj与table.on('tool(tableEvent)',function (obj) {})
*中的obj对象是同一个所以可以如此操作。
*
* */
});
/**
* 级联下拉框 => 点击事件生成下拉框之前的回调函数
* 主要用于 => 动态获取单元格下拉数据
* tableEvent => table的lay-filter属性值
* 如示例代码所示
*/
tableEdit.on('clickBefore(addBOMDetailsList)', function (obj) {
var cascadeSelectData = obj.data; //级联数据
var cascadeSelectField = obj.field; //级联字段
if (Array.isArray(cascadeSelectData)) {
cascadeSelectData = cascadeSelectData[0];
}
var reslut = null;
//下拉数据 只可ajax同步请求后台
if (cascadeSelectField === 'rqjl') { //日期级联下拉框
if (cascadeSelectData === '2020-05-11') {
reslut = {
data: [{ name: 1, value: '语文' }, { name: 2, value: '数学' }, { name: 3, value: '英语' }, { name: 4, value: '物理' }, { name: 5, value: '化学' }],
enabled: false //单选 true为多选
};
} else {
reslut = {
data: [{ name: 6, value: '政治' }, { name: 7, value: '地理' }, { name: 8, value: '历史' }, { name: 9, value: '生物' }, { name: 10, value: '音乐' }],
enabled: false //单选 true为多选
};
}
} else {
if (cascadeSelectData.name + '' === '1') {
reslut = {
data: [{ name: 11, value: '贵州' }, { name: 12, value: '云南' }, { name: 13, value: '四川' }, { name: 14, value: '湖南' }],
enabled: false //单选 true为多选
};
} else {
reslut = {
data: [{ name: 15, value: '荆州' }, { name: 16, value: '扬州' }, { name: 17, value: '杭州' }, { name: 18, value: '苏州' }],
enabled: false //单选 true为多选
};
}
}
return reslut;
});
/**
* toolbar监听事件
*/
table.on('toolbar(addBOMDetailsList)', function (obj) {
if (obj.event === 'addLine') { // 监听添加操作
var Data = table.cache["addBOMDetailsList"];
var datas = {
"figureNum": "",
"remark": ""
}
Data.push(datas);
table.reload('addBOMDetailsList', {
data: Data
});
$(window).on("resize", function () {
layer.full(index);
});
} else if (obj.event === 'deleteLine') { // 监听删除操作
var checkStatus = table.checkStatus('addBOMDetailsList');
if (checkStatus.data.length == 0) {
layer.alert('请选择至少一条数据!');
return false;
}
var tableDT = table.cache["addBOMDetailsList"];
var tableArr = [];
for (var i = 0; i < tableDT.length; i++) {//遍历表格缓存数组
var btnObj = tableDT[i];
if (btnObj.LAY_CHECKED) {//条件:选中
tableDT.splice(i, 1);//移除后后造成数组下标索引发生变化所以下面需要i--
i--;
}
}
tableArr = tableDT;
table.reload("addBOMDetailsList", {
data: tableArr // 将新数据重新载入表格
});
}
});
//监听提交
form.on('submit(saveBtn)', function (data) {
layer.confirm('确认保存吗?', function () {
var apiUrl = GetWebApiUrl();
var CurrUserInfo = layui.sessionData('CurrUserInfo');
var figureNum = data.field.figureNum;
if (figureNum.length == 1) {
figureNum = '0' + figureNum;
}
$.ajax({
url: apiUrl + "/api/services/app/FigureNumber/CreateFigureNumber", //请求的url地址
dataType: "json", //返回格式为json
//async: false,//请求是否异步默认为异步这也是ajax重要特性
contentType: 'application/json',
data: JSON.stringify({
figureNum: figureNum,
remark: data.field.remark,
createTime: getDatetime(),
createUserID: CurrUserInfo.data.userid,
createUserName: CurrUserInfo.data.userName,
isDelete: 0
}), //参数值
type: "POST", //请求方式
success: function (req) {
//请求成功时处理
if (req.result.code == 1) {
layer.msg('保存成功', { time: 1000 }, function () {
// 关闭弹出层
var iframeIndex = parent.layer.getFrameIndex(window.name);
// 刷新父页面
window.parent.location.reload();
parent.layer.close(iframeIndex);
});
}
else if (req.result.code == 2) {
layer.msg(req.result.msg);
return false;
}
else {
layer.msg(req.result.msg);
return false;
}
},
error: function () {
/*错误信息处理*/
layer.msg("保存失败,请重试!");
return false;
},
});
return false;
});
return false;
});
});
</script>
</body>
</html>