gz_car_ui/js/car_basic/child/car_form.js

277 lines
9.7 KiB
JavaScript
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.

let form, layer, laydate, fileList = new Array(), imgListUp = new Array();;
let objParam; // 是否保存并继续
let isWhiteList=0;
function setParams(obj) {
objParam = JSON.parse(obj);
layui.use(['form', 'layer', 'laydate', 'upload'], function () {
form = layui.form;
layer = layui.layer;
laydate = layui.laydate;
upload = layui.upload;
laydate.render({
elem: '#bxDay'
});
getSupList();
form.verify({
isCarNum: function (value, item) {
if (value) {
const pass = /^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-HJ-NP-Z]{1}(?:[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}|[DF]{1}(?:[1-9A-HJ-NP-Z]{1}[0-9]{4}|[0-9]{5}))|[A-Z]{1}[0-9]{5}[使领]{0,1})$/;
let flag = pass.test(value);
if (!flag) {
return "车牌号格式不正确";
}
}
},
isTon: function (value, item) {
if (value) {
const pass = /^(?:(?:[1-9]\d{0,3}(?:\.\d{1,2})?)|(?:0\.(?:0[1-9]|[1-9]\d?))|10000(?:\.00?)?)$/;
let flag = pass.test(value);
if (!flag) {
return "车辆吨位格式不正确(必须大于0,小于等于10000)";
}
}
}
});
// 监听radio选择变化
form.on('radio(isWhiteList)', function (data) {
isWhiteList=data.value;
console.log(isWhiteList);
});
form.on('submit(formData)', function (data) {
submitApply(data);
});
// 挂靠协议、行驶证正页、行驶证副页、行驶证车辆照片、车辆保险
setUpload(2);
setUpload(3);
setUpload(4);
setUpload(5);
setUpload(6);
form.render();
});
}
// 设置上传的文件
function setUpload(uploadNum) {
let exts = 'jpg|png|jpeg|doc|docx|pdf|xlsx|xls';
let exacceptMimes = 'image/jpg,image/png,image/jpeg,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
if (uploadNum !== 6) {
exts = 'jpg|png|jpeg';
exacceptMimes = 'image/jpg,image/png,image/jpeg'
}
let uploadObj = upload.render({
elem: '#test' + uploadNum,
multiple: true,
dataType: "json",
exts: exts,
acceptMime: exacceptMimes,
number: 1, //最大上传数量
size: 1024 * 10, //最大文件大小单位k
auto: false, //是否自动上传 默认为true
bindAction: '#hideUpload', //绑定的按钮
choose: function (obj) {
let length = $('#uploader-list' + uploadNum + '>.file-iteme').length;
if (uploadNum === 6 && length >= 5) {
return layer.msg('最多上传5个车辆保险', { icon: 7 });
}
uploadObj.config.elem.next()[0].value = '';
let num = 0;
let style = "";
if (uploadNum === 4 || uploadNum === 5) {
style = "margin:0";
}
obj.preview(function (index, file, result) {
num++;
if (num <= (uploadNum === 6 ? (5 - length) : (1 - length))) {
$('#uploader-list' + (uploadNum) + '').append(
'<div id="" class="file-iteme" style=' + style + '>' +
'<div class="handle"><p>x</p></div>' +
handleFileType(index, file, result, uploadNum) +
'</div>'
);
let map = new Map();//将选择的图片索引和图片写成对象存入集合
map.index = index;
map.file = file;
map.type = uploadNum;
fileList.push(map);
if (uploadNum !== 6) {
$('#upload-box' + (uploadNum) + '').css('display', 'none');
}
}
});
}
});
}
// 设置文件类型
function handleFileType(index, file, result, uploadNum) {
let width = '159px', height = '120px';
let html = '', img = '';
if(file.ext){
file.ext = file.ext.toLowerCase();
}
if(file.name){
file.name = file.name.toLowerCase();
}
if (file.ext === 'doc' || file.ext === 'docx') {
img = '../../../images/docx.png';
} else if (file.ext === 'xls' || file.ext === 'xlsx') {
img = '../../../images/xlsx.png';
} else if (file.ext === 'pdf') {
img = '../../../images/pdf.png';
} else {
return '<img class="img" style="width: ' + width + ';height: ' + height + ';" data-index=' + index + ' data-name=' + file.name + ' src=' + result + '>';
}
html += '<div class="layout upload-file" data-index=' + index + '>' +
'<img src="' + img + '">' +
'<p style="text-align: center;font-size:12px;">' + file.name + '</p>' +
'</div>';
return html;
}
// 删除文件
$(document).on("click", ".file-iteme .handle", function (event) {
let fileType;
imgListUp.splice(0, imgListUp.length);
let index = $(this).next().attr('data-index');
$.each(fileList, function (inx, ele) {
//对比删除文件索引
//将未删除的存入新集合
if (index != ele.index) {
imgListUp.push(ele);
} else {
fileType = ele.type;
}
});
$(this).parent().remove();
//将新文件集合替换老集合
fileList.splice(0, fileList.length);
$.each(imgListUp, function (inx, ele) {
fileList.push(ele)
});
$('#upload-box' + fileType).removeAttr('style');
});
// 供应商下拉选
function getSupList() {
let obj = {}
let params = {
encryptedData: JSON.stringify(obj)
}
let url = dataUrl + 'backstage/carSup/getSupSelected';
ajaxRequest(url, "POST", params, false, function () {
}, function (result) {
if (result.code === 200) {
setSelectData(result.data);
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
function setSelectData(list) {
let html = '<option value="" selected>请选择所属供应商</option>';
$.each(list, function (index, item) {
html += '<option value="' + item.id + '">' + item.name + '</option>'
})
$('#supId').empty().append(html);
}
}
// 详情
function getSupDetails() {
let params = {
encryptedData: JSON.stringify({
id: objParam.id
})
};
let url = dataUrl + 'backstage/sup/getSupDetails';
ajaxRequest(url, "POST", params, true, function () {
}, function (result) {
if (result.code === 200) {
setFormData(result.data);
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
function setFormData(obj) {
form.val('formInfo', obj);
}
}
// 保存
function saveData2() {
$('#formSubmit').trigger('click')
}
// 提交
function submitApply(data) {
let typeArr = [];
for (let i = 0; i < fileList.length; i++) {
typeArr.push(fileList[i].type);
}
if (typeArr.length === 0) {
return layer.msg('请上传行驶驶证照片、车辆保险', { icon: 7 });
}
let flag = containsString(typeArr, 3);
if (!flag) {
return layer.msg('请上传行驶证正页', { icon: 7 });
}
let flag2 = containsString(typeArr, 4);
if (!flag2) {
return layer.msg('请上传行驶证副页', { icon: 7 });
}
let flag3 = containsString(typeArr, 5);
if (!flag3) {
return layer.msg('请上传行驶证车辆照片', { icon: 7 });
}
let flag4 = containsString(typeArr, 6);
if (!flag4) {
return layer.msg('请上传车辆保险', { icon: 7 });
}
let url = dataUrl + 'backstage/carCar/addCarData';
let formData = new FormData();
//遍历最终文件集合
for (let i = 0; i < fileList.length; i++) {
formData.append("file[]", fileList[i].file)
}
data.field.types = typeArr.join('@');
formData.append('params', JSON.stringify(data.field));
let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' });
ajaxRequestByUploadFile(url, formData, function () {
$('.save').addClass("layui-btn-disabled").attr("disabled", true);
$('.cancel').addClass("layui-btn-disabled").attr("disabled", true);
}, function (result) {
layer.close(loadingMsg);
$('.save').removeClass("layui-btn-disabled").attr("disabled", false);
$('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
if (result.code === 200) {
parent.layer.msg(result.msg, { icon: 1 });
closePage(1);
} else {
layer.msg(result.msg, { icon: 2 });
}
}, function (xhr, status, error) {
layer.close(loadingMsg); // 关闭提示层
layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 });
$('.save').removeClass("layui-btn-disabled").attr("disabled", false);
$('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
errorFn(xhr, status, error)
}, null);
}
// 判断数组中是否包含某个值
function containsString(array, stringToFind) {
return array.includes(stringToFind);
}
// 关闭页面
function closePage(type) {
let index = parent.layer.getFrameIndex(window.name);
if (type === 1) {
window.parent.reloadData();
}
parent.layer.close(index);
}