Authored by 王涛

Merge branch 'monitor-web-yuanjp' into 'master'

资产维修记录



See merge request !35
//工作汇报表单
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'laydate', 'upload'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var admin = layui.admin;
var table = layui.table;
var common = layui.common;
var session = layui.sessions;
var laydate = layui.laydate;
var upload = layui.upload;
var domainName = common.domainName;
var xmSelect = layui.xmSelect;
//对外暴露的接口
exports('assetsRepairAdd', function (data) {
var accessToken = session.getToken()['access_token']
var userSelect = "";
var currentDate = {}
var hitDate = {}
var uploadInst = {}
var defaultUser = []
var attachmentIds = []
var id = data.id
var cols = []
var where = {}
var currentResourceType = ''
var resTypeSele
var viewType = data && data.viewType ? data.viewType : '';
//渲染表单
form.render(null, 'add-repair-form')
init()
//保存
form.on('submit(repair-form-save-id)', function (res) {
var value = $('#attachmentInput').val()
if (value != '') {
$('#upload_btn').click()
} else {
saveForm()
}
})
//保存
function saveForm() {
layer.load(2)
var data = form.val('add-repair-form')
var params = {}
params.attachmentIds = attachmentIds.toString()
delete data['file']
delete data['select']
params.workReport = JSON.stringify(data)
admin.req({
url: domainName + '/api-web/bResource/assetsrepair/save?access_token=' + accessToken,
data: JSON.stringify(params),
type: 'post',
contentType: "application/json; charset=utf-8",
done: function (res) {
if (res.success) {
layer.msg(res.msg, {
offset: '15px',
icon: 1,
time: 1000,
}, function () {
layer.closeAll()
})
} else {
layer.msg(res.msg, {
offset: '15px',
icon: 7,
time: 1000,
})
}
}
})
return false
}
//页面初始化
function init() {
loadSelect()
initDatePlus()
initUploadPlus()
if (viewType == 'view') {
initViewMode();
}
}
// 初始化下拉框
function loadSelect() {
admin.req({
url: domainName + '/api-web/bResource/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=归属单位=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
});
$('#slt-repairadd-org').html(options);
form.render();
});
admin.req({
url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
}).done(function (response) {
var options = "<option value=''>=选择厂商=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
});
$('#slt-repairadd-group').html(options);
form.render();
});
admin.req({
url: domainName + '/api-web/bResource/getInfoByAssetsType',
}).done(function (response) {
var options = "<option value=''>=设备类型=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.resTypeCode + "'>" + v.resTypeName + "</option>"
});
$('#slt-repairadd-res').html(options);
form.render();
})
$.ajax({
url: domainName + '/api-web/bResource/getGroupByAdmin?theirType=1&access_token=' + accessToken,
success: function (res) {
if (!res.map) {
layer.msg("没有上传权限,请去添加权限")
return;
} else {
var map = res.map;
$("#createUser").val(map.admin);
}
fromAssignment()
form.render();
}
})
}
//初始化日期插件
function initDatePlus() {
currentDate = laydate.render({
elem: '#createtime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
max: 0,
});
hitDate = laydate.render({
elem: '#hitchtime', //指定元素
value: new Date(),
type: 'datetime',
isInitValue: true,
max: 0,
});
}
//初始化上传插件
function initUploadPlus() {
var param = {"access_token": accessToken}
var fileName = []
uploadInst = upload.render({
elem: '#attachment', //绑定元素
url: common.domainName + '/api-web/bResource/assetsrepair/upload',
data: param,
multiple: true,
auto: false, //选择文件后不自动上传
bindAction: '#upload_btn',//指定按钮触发上传
accept: 'file',
exts: 'xls|doc|pdf|docx|xlsx|jpg|png',
choose: function (obj) {
//选择文件后回调
var files = this.files = obj.pushFile();
obj.preview(function (index, file, result) {
fileName.push(file.name)
$('#attachmentInput').val(fileName.toString())
})
},
done: function (res) {
//单次上传成功
attachmentIds.push(res.str)
},
allDone: function (obj) {
//全部上传成功后
saveForm()
},
error: function (index, upload) {
// 上传失败
layer.msg('文件上传时发生故障,请稍后再试!', {
icon: 7, time: 3000
});
}
});
}
// 初始化查看模式
function initViewMode() {
$('form[lay-filter="add-workReport-form"]').find('input, textarea').attr('readonly', true);
$('form[lay-filter="add-workReport-form"]').find('select').attr('disabled', true);
$.each(xmSelect.get(), function (i, v) {
v.update({disabled: true});
});
$('#attachmentInput').parent().parent().parent().addClass('hide');
$('#table-report-add-attachment').removeClass('hide');
$('#form-item-repTitle').removeClass('hide');
//渲染附件表格
var attachmentTable = table.render({
elem: '#table-repair-add-attachment',
url: domainName + '/api-web/bResource/assetsrepair/getAttaById',
where: {
access_token: accessToken,
id: data.id
},
height: 'full',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'name', title: '文件名称', align: 'center', minWith: 200,
},
{
field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
},
{
field: 'size', title: '文件大小', align: 'center', minWith: 150,
templet: function (d) {
var str = (d.size / 1000).toFixed(2)
return `<div><span>${str}KB</span></div>`
}
},
{
title: '操作', align: "center", width: 120,
templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link preview-attachment-btn">预览</span></div>'
}
]],
done: function () {
$('.preview-attachment-btn').on('click', function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?access_token=` + accessToken
layer.open({
type: 1,
content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
title: '图片预览',
area: ['60%', '90%']
})
} else {
//附件为文档类型
common.openReport(id)
}
})
}
})
form.render();
}
//表单赋值
function fromAssignment() {
if (data && data.id) {
$('#add-repair-form-atta').show()
//编辑表单时禁用日志类型修改和时间选择
$('#add-repair-form').find("select[name='hitchtime']").attr("disabled", "disabled")
$('#add-repair-form').find("input[name='createtime']").attr("disabled", "disabled")
//编辑表单时取消显示默认值
currentDate.config.isInitValue = false
hitDate.config.isInitValue = false
initDatePlus()
admin.req({
url: domainName + `/api-web/bResource/assetsrepair/getById`,
data: {id: data.id},
async: false,
}).done(function (res) {
form.val('add-repair-form', res.object)
if (res.object.attachmentList) {
$.each(res.object.attachmentList, function (i, v) {
writeTagsInfo(v.id, v.originalName)
})
}
})
}
}
//写入标签内容
function writeTagsInfo(id, name) {
var tags = '<span id="tags_span_' + id + '" data-id="' + id + '"><em>' + name + '</em>' +
'<button type="button" value="' + id + '" class="tagsclose close">×</button></span>';
if ($("#tags_span_" + id).length == 0) {
//拼接标签
$("#selecte_content_id").append(tags);
//绑定标签的删除事件
bindTagesDelEvent();
}
}
//删除标签事件
function bindTagesDelEvent() {
//删除已选主体的页签
$("button.tagsclose").on("click", function () {
var attachId = $(this).attr("value");
//确认提示框
layer.confirm('附件删除后将无法恢复,您确定要删除吗?', {
btn: ['确定', '取消'] //按钮
}, function () {
$.ajax({
url: domainName + `/api-web/workreport/deleteAttachment/${id}/${attachId}?access_token=` + accessToken,
type: "get",
}).done(function (res) {
layer.msg('删除成功', {
offset: '15px'
, icon: 1
, time: 1000
}, function () {
$("#tags_span_" + attachId).remove();
});
}).error(function (error) {
console.log(error);
});
});
});
}
})
})
\ No newline at end of file
... ...
/** 资产维修记录查看 */
layui.define(['table', 'form', 'sessions', 'admin', 'common', 'echarts','laydate','element'], function (exports) {
var $ = layui.$;
var form = layui.form;
var table = layui.table;
var admin = layui.admin;
var common = layui.common;
var laydate = layui.laydate;
var element = layui.element;
exports('assetsrepair', function () {
var sessions = layui.sessions;
var accessToken = sessions.getToken().access_token;
var domainName = common.domainName;
var companyChart = echarts.init(document.getElementById('chart-company-report'));
var resTypeChart = echarts.init(document.getElementById('chart-restype-report'));
var dateLimit = ""
var createTime = ""
var currentResourceTypeTreeNodeId = ""
var resTypeSelect;
//日期范围选择
laydate.render({
elem: '#dateLimit'
,range: '~',
done: function (value) {
dateLimit = value
if (dateLimit == '') {
$('[data-period="thisWeek"]').click()
} else {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
$dom.removeClass("active")
}
})
reloadAllChange()
}
}
});
form.render();
loadCompanyReport();
loadResTypeReport();
loadWorkReportTable();
loadConditionSelect();
//监听Esc事件
$(document).keyup(function(event){
if(event.keyCode === 27 || event.keyCode === 96){
layer.closeAll();
}
});
// 日期方式选择
$('#btns-repair-time button').click(function () {
$.each($("button.date"),function (i,e) {
var $dom = $(e);
if($dom.hasClass("active")){
$dom.removeClass("active")
}
})
$("#dateLimit").val('')
dateLimit = ''
$("#btns-repair-time button").removeClass("active");
$(this).addClass("active");
createTime = ($(this).data("period"))
reloadAllChange();
});
// 回车搜索
$('[lay-filter="form-repair-condition"] input').keydown(function (e) {
if (e.keyCode === 13) {
reloadAllChange();
}
});
// 下拉框改变搜索
form.on('select(slt-repair-group)', reloadAllChange);
form.on('select(slt-repair-user)', reloadAllChange);
form.on('select(slt-repair-org)', reloadAllChange);
// 加载工作汇报表格
function loadWorkReportTable() {
var conditions = form.val('form-repair-condition');
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: 'true',dateLimit:dateLimit});
table.render({
elem: '#table-repair-view',
url: domainName + '/api-web/bResource/getAssetsRepairForPage',
where: conditions,
height: 'full-360',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
theme: '#1E9FFF'
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[{
type: 'checkbox'
}, {
type: 'numbers', title: '序号'
}, {
field: 'title', title: '标题', align: 'center', minWidth: 200,event: 'serRead',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-repair-title" >{{d.title}}</span></div>'
}, {
field: 'resTypeName', title: '资产类型', align: 'center',
}, {
field: 'resourceSN', title: '设备序列号', align: 'center',
},{
field: 'ip', title: 'ip段', align: 'center',
},{
field: 'orgName', title: '归属单位', align: 'center',
},{
field: 'attachmentList', title: '附件数量', align: 'center',
templet: '<div><span data-id="{{d.id}}" class="layui-table-link view-repair-attachment">{{d.attachmentList.length}}</span></div>'
},{
field: 'groupName', title: '上报人', align: 'center',
}, {
field: 'manufacturerName', title: '厂商', align: 'center',
},{
field: 'hitchtime', title: '故障时间', align: 'center',
},{
field: 'createtime', title: '维修时间', align: 'center',
}]],
done: function () {
//点击标题编辑表单
$('.view-repair-title').on('click', function () {
openWorkReportForm( $(this).data('id'))
})
//获取附件列表
$('.view-repair-attachment').on('click', function () {
openWorkReportList('attachment', $(this).data('id'))
})
}
});
}
//新增日报
$('#repair_create').on('click', function () {
openWorkReportForm()
})
//新增/编辑表单
function openWorkReportForm(id) {
var title = id ? '编辑' : '新增'
common.openWin('assets/add', title, {id: id}, ['保存', '取消'], function f() {
$("#repair-form-save-id").trigger("click");
})
}
//查看附件/接收人列表
function openWorkReportList(type, id) {
var title = '附件'
common.openWin('assets/repairlist', title, {id: id, type: type}, ['确定', '取消'])
}
// 加载查询条件下拉框
function loadConditionSelect() {
admin.req({
url: domainName + '/api-web/bResource/findAssetsRepairList'
}).done(function (response) {
var options = "<option value=''>=归属单位=</option>";
console.log(response.data)
$.each(response.data, function (i, v) {
options += "<option value='" + v.orgCode + "'>" + v.orgName + "</option>"
});
$('#slt-repair-org').html(options);
form.render();
});
admin.req({
url: domainName + '/api-web/bWorkreportGroup/findManufacturerList'
}).done(function (response) {
var options = "<option value=''>=选择厂商=</option>";
$.each(response.data, function (i, v) {
options += "<option value='" + v.id + "'>" + v.manufacturerName + "</option>"
});
$('#slt-repair-group').html(options);
form.render();
});
$.ajax({
url: domainName + '/api-user/users/getAll',
data: {
access_token: accessToken
},
success: function (response) {
var options = "<option value=''>=选择汇报人=</option>";
$.each(response, function (i, v) {
options += "<option value='" + v.username + "'>" + v.nickname + "</option>"
});
$('#slt-repair-user').html(options);
form.render();
}
});
admin.req({
url:common.domainName + '/api-web/home/resType/getTree?hardwareFlag=Y',
}).done(function (res) {
resTypeSelect = xmSelect.render({
el: '#hardware-layui-select',
name: "resType",
tips: '==资产类型==',
filterable: true,
radio: true,
clickClose: false,
layVerify: 'required',
height: '20px',
tree: {
show: true,
showFolderIcon: true,
showLine: true,
strict: true,
indent: 20
},
model: {
label: {
type: 'text'
}
},
height: 'auto',
data: res.data,
hide:function () {
var str = resTypeSelect.getValue('valueStr');
if(!str){
str = 'all';
}
currentResourceTypeTreeNodeId=str;
reloadAllChange();
}
});
form.render();
})
}
// 各单位维修情况
function loadCompanyReport() {
var conditions = form.val('form-repair-condition');
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',dateLimit:dateLimit,groupBy: 'orgName'});
admin.req({
url: domainName + '/api-web/bResource/getAssetsRepairForGroup',
data: conditions
}).done(function (response) {
var chartData = response.map;
var groupList = chartData.groupList;
var countList = chartData.countList;
var xData = [];
var groupData = [];
$.each(groupList, function (i, v) {
xData.push(v);
groupData.push({
name: v,
value: 1
});
});
var series = [{
name: '维修数',
data: countList,
barWidth: 20,
type: 'bar',
label: {
show: true,
position: 'top',
textStyle: {
color: '#555'
},
formatter:function (data) {
return countList[data.dataIndex]
}
},
itemStyle: {
normal: {
color: (params) => {
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
return colors[params.dataIndex % 3]
}
}
},
xAxisIndex: 0,
yAxisIndex: 0
}];
/**
双X轴标签对应,伪实现思路:
底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
*/
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: [{
top: 20,
bottom: 70,
right: 5
}, {
height: 30,
bottom: 30,
right: 5
}],
xAxis: [{
type: 'category',
data: xData,
gridIndex: 0,
axisLabel: {
color: '#333',
show: true,
interval:0,
rotate:25
},
axisLine: {
lineStyle: {
color: '#e7e7e7'
}
},
axisTick: {
lineStyle: {
color: '#e7e7e7'
}
},
zlevel: 2
}, {
type: 'category',
gridIndex: 1,
axisLine: {
show: false
},
zlevel: 1
}],
yAxis: [{
type: 'value',
gridIndex: 0,
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
type: 'dashed'
}
},
axisLine: {
lineStyle: {
color: '#ccc'
}
},
axisTick: {
lineStyle: {
color: '#ccc'
}
}
}, {
type: 'value',
gridIndex: 1,
axisLabel: {
show: false
},
axisLine: {
show: false
},
splitLine: {
show: false
},
axisTick: {
show: false
}
}],
series: series
};
companyChart.setOption(option)
});
}
// 按资源类型统计
function loadResTypeReport() {
var conditions = form.val('form-repair-condition');
Object.assign(conditions, {access_token: accessToken, createtime: createTime, viewMode: '',dateLimit:dateLimit,groupBy: 'resTypeName'});
admin.req({
url: domainName + '/api-web/bResource/getAssetsRepairForGroup',
data: conditions
}).done(function (response) {
var chartData = response.map;
var groupList = chartData.groupList;
var countList = chartData.countList;
var xData = [];
var groupData = [];
$.each(groupList, function (i, v) {
xData.push(v);
groupData.push({
name: v,
value: 1
});
});
var series = [{
name: '维修数',
data: countList,
barWidth: 20,
type: 'bar',
label: {
show: true,
position: 'top',
textStyle: {
color: '#555'
},
formatter:function (data) {
return countList[data.dataIndex]
}
},
itemStyle: {
normal: {
color: (params) => {
var colors = ['#b6c2ff', '#96edc1', '#fcb75b'];
return colors[params.dataIndex % 3]
}
}
},
xAxisIndex: 0,
yAxisIndex: 0
}];
/**
双X轴标签对应,伪实现思路:
底部的标签也是柱状图,对应包含的区域为上方X轴条数占总数的比例,设为宽度即可
*/
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: [{
top: 20,
bottom: 70,
right: 5
}, {
height: 30,
bottom: 30,
right: 5
}],
xAxis: [{
type: 'category',
data: xData,
gridIndex: 0,
axisLabel: {
color: '#333',
show: true,
interval:0,
rotate:25
},
axisLine: {
lineStyle: {
color: '#e7e7e7'
}
},
axisTick: {
lineStyle: {
color: '#e7e7e7'
}
},
zlevel: 2
}, {
type: 'category',
gridIndex: 1,
axisLine: {
show: false
},
zlevel: 1
}],
yAxis: [{
type: 'value',
gridIndex: 0,
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
type: 'dashed'
}
},
axisLine: {
lineStyle: {
color: '#ccc'
}
},
axisTick: {
lineStyle: {
color: '#ccc'
}
}
}, {
type: 'value',
gridIndex: 1,
axisLabel: {
show: false
},
axisLine: {
show: false
},
splitLine: {
show: false
},
axisTick: {
show: false
}
}],
series: series
};
resTypeChart.setOption(option)
});
}
// 图表,表格重新加载
function reloadAllChange() {
loadWorkReportTable();
loadCompanyReport();
loadResTypeReport();
}
});
});
\ No newline at end of file
... ...
//工作汇报
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
var admin = layui.admin;
var table = layui.table;
var common = layui.common;
var session = layui.sessions
var domainName = common.domainName;
//对外暴露的接口
exports("repairlist", function (d) {
var accessToken = session.getToken()['access_token']
if (d.type == 'attachment') {
$('#attachmentTable').show()
createAttachmentTable()
}
//渲染附件表格
function createAttachmentTable() {
var attachmentTable = table.render({
elem: '#attachmentTable',
url: domainName + '/api-web/bResource/assetsrepair/getAttaById',
where: {
access_token: accessToken,
id: d.id
},
height: 'full',
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
},
end: function (e) {
form.render()
},
limit: common.limit,
limits: common.limits,
even: true,
cols: [[
{type: 'numbers', title: '序号'},
{
field: 'name', title: '文件名称', align: 'center', minWith: 200,
}, {
field: 'originalName', title: '原始名称', align: 'center', minWith: 200,
}, {
field: 'suffix', title: '文件后缀', align: 'center', minWith: 150,
},
{
field: 'size', title: '文件大小', align: 'center', minWith: 150,
templet: function (d) {
var str = (d.size / 1000).toFixed(2)
return `<div><span>${str}KB</span></div>`
}
},
{
title: '操作', align: "center", width: 120,
templet: '<div><span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link preview-attachment-btn">预览</span>' +
'<span data-id="{{d.id}}" data-suffix="{{d.suffix}}" class="layui-table-link attachment-download-btn" style="margin-left: 10px">下载</span></div>'
}
]],
done: function () {
$('.preview-attachment-btn').on('click', function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
if (suffix == 'jpg' || suffix == 'png' || suffix == 'JPG' || suffix == 'PNG') { //图片类型
var srcUrl = domainName + `/api-web/openoffice/readImage/${id}?access_token=` + accessToken
layer.open({
type: 1,
content: `<div><img src="${srcUrl}" width="100%" height="100%" /></div>`,
title: '图片预览',
area: ['60%', '90%']
})
} else {
//附件为文档类型
common.openReport(id)
}
})
$('.attachment-download-btn').on('click',function () {
var id = $(this).data('id')
var suffix = $(this).data('suffix')
var url = domainName + `/api-web/openoffice/download/${id}?access_token=` + accessToken
window.open(url)
})
}
})
}
})
})
\ No newline at end of file
... ...
<!--工作汇报表单-->
<article>
<div class="layui-card-body">
<fieldset class="layui-elem-field layui-field-title">
<legend>维修信息</legend>
</fieldset>
<form class="layui-form layui-form-pane" lay-filter="add-repair-form"
id="add-repair-form" onsubmit="return false;">
<input hidden name="id" id="id" lay-verify="checkReportIsExist">
<div class="layui-form-item">
<div class="layui-inline inline-half">
<label class="layui-form-label">设备类型</label>
<div class="layui-input-inline">
<select name="resType" id="slt-repairadd-res"
lay-filter="slt-repairadd-res">
<option value="">=设备类型=</option>
</select>
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">设备序列号</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="resourceSN" id="resourceSN">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-half">
<label class="layui-form-label">故障时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="hitchtime" id="hitchtime">
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">维修时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="createtime" id="createtime">
</div>
</div>
</div>
<div class="layui-form-item hide" id="form-item-repTitle">
<div class="layui-inline inline-half">
<label class="layui-form-label">标题</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="title">
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">汇报人</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="createBy" id= "createUser" readonly="readonly">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-half">
<label class="layui-form-label">归属单位</label>
<div class="layui-input-inline">
<select name="orgId" id="slt-repairadd-org"
lay-filter="slt-repairadd-org">
<option value="">=归属单位=</option>
</select>
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">选择厂商</label>
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-repairadd-group"
lay-filter="slt-repairadd-group" >
<option value="">=选择厂商=</option>
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline inline-half">
<label class="layui-form-label">受影响系统</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="affected" id="affected">
</div>
</div>
<div class="layui-inline inline-half">
<label class="layui-form-label">所属ip</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="ip" id="ip">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline" style="width: 90%">
<label class="layui-form-label">选择附件</label>
<div class="layui-input-block attachment">
<input type="text" class="layui-input" readonly id="attachmentInput">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-normal" id="attachment">附件</button>
<button id="upload_btn" hidden>附件</button>
</div>
</div>
<div class="layui-form-item" style="display: none" id="add-repair-form-atta">
<label class="layui-form-label">已存附件</label>
<div class="layui-input-inline"
style="width: 90% !important;max-height: 130px;overflow-y: auto;margin-left: 10px;">
<div class="tags" id="selecte_content_id"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label">故障现象描述</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="phenomenon"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label">解决过程描述</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="solveprocess"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label">处理结果</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="result"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label textarea-label">经验总结</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="experience"></textarea>
</div>
</div>
<button type="submit" lay-submit lay-filter="repair-form-save-id" class="layui-btn hide"
id="repair-form-save-id">保存
</button>
<table id="table-repair-add-attachment" class="hide"></table>
</form>
</div>
</article>
<script>
layui.use('assetsRepairAdd', function (fn) {
fn({{d}})
})
</script>
<style>
#add-repair-form .layui-form-label {
width: 120px;
/* padding: 8px 12px; */
text-align: left !important;
}
#add-repair-form .layui-input-block{
margin-left: 120px !important;
}
.tags{
margin-top:5px;
}
.tags span {
height: 20px;
margin-right: 10px;
margin-bottom: 3px;
padding: 5px 10px 5px 10px;
float: left;
white-space: nowrap;
color:#fff;
background-color:#009688;
text-shadow: 1px 1px 1px rgba(0, 0, 0, .15);
}
.tags .close {
font-weight: bold;
line-height: 20px;
margin-left:10px;
cursor: pointer;
text-align: center;
color: #fff;
border: 0 none;
background: transparent none repeat scroll 0 0;
}
</style>
... ...
<title>资产维修记录</title>
<article class="page-container">
<div class="page-panel ">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status">
<form class="layui-form layui-card-header" onsubmit="return false"
lay-filter="form-repair-condition">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="monitor_keyword" name="title"
placeholder="标题搜索,支持内容模糊匹配" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="orgId" id="slt-repair-org"
lay-filter="slt-repair-org" lay-search>
<option value="">=归属单位=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="manufacturerId" id="slt-repair-group"
lay-filter="slt-repair-group" lay-search>
<option value="">=选择厂商=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline ">
<div id="hardware-layui-select" class="xm-select"></div>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="createBy" id="slt-repair-user"
lay-filter="slt-repair-user" lay-search>
<option value="">=选择汇报人=</option>
</select>
</div>
</div>
<div class="layui-btn-group time-group" id="btns-repair-time" style="padding: 0">
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="today">今天
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="lastWeek">上周
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs active date"
data-period="thisWeek">本周
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="lastMonth">上月
</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-xs date"
data-period="thisMonth">本月
</button>
</div>
<div class="layui-inline" style="margin-left: 10px">
<div class="layui-input-inline" style="width: auto">
<input type="text" name="dateLimit" id="dateLimit" autocomplete="off"
class="layui-input" readonly placeholder="其他日期范围">
</div>
</div>
</div>
</form>
</div>
</div>
<div style="display: flex" class="layui-card-echart">
<div style="flex-grow: 3;width: 45%!important;">
<h5 class="lay-row-title">按单位统计</h5>
<div class="pie-chart" id="chart-company-report" style="min-height: 240px"></div>
</div>
<div style="flex-grow: 3;width: 45%!important;">
<h5 class="lay-row-title">按资产类型统计</h5>
<div class="pie-chart" id="chart-restype-report" style="min-height: 240px"></div>
</div>
</div>
<div class="layui-card-body" style="margin-top: 10px;">
<div class="warn-btns">
<button class="layui-btn layui-btn-sm layui-btn-normal active" data-type="" id="repair_create">
新增
</button>
</div>
<table id="table-repair-view" lay-filter="table-repair-view"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('assetsrepair', function (fn) {
fn();
});
</script>
\ No newline at end of file
... ...
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
</div>
<div class="layui-card-body">
<table id="attachmentTable" lay-filter="attachmentTable"></table>
</div>
</div>
</div>
</div>
</article>
<script>
layui.use('repairlist', function (fn) {
fn({{d}})
});
</script>
\ No newline at end of file
... ...