处理代码格式

This commit is contained in:
wanggeng 2022-09-09 15:12:33 +08:00
parent f1b4307535
commit 64853519b7
3 changed files with 269 additions and 333 deletions

View File

@ -15,7 +15,7 @@ layui.define(function (exports) {
function objToForm(obj) { function objToForm(obj) {
let formStr = ''; let formStr = '';
for (let name in obj) { for (let name in obj) {
if (formStr == undefined || formStr == null || formStr == '') { if (!formStr) {
formStr += name + '=' + obj[name]; formStr += name + '=' + obj[name];
} else { } else {
formStr += '&' + name + '=' + obj[name]; formStr += '&' + name + '=' + obj[name];
@ -92,8 +92,8 @@ layui.define(function (exports) {
* @param completeCallback * @param completeCallback
*/ */
function doAjax(url, method, dataObj, args, successCallback, errorCallback, beforeCallback, completeCallback) { function doAjax(url, method, dataObj, args, successCallback, errorCallback, beforeCallback, completeCallback) {
let ajaxData = (dataObj == undefined || dataObj == null) ? {} : dataObj; let ajaxData = (!dataObj) ? {} : dataObj;
if (methods.POST_METHOD == method || methods.PUT_METHOD == method) { if (methods.POST_METHOD === method || methods.PUT_METHOD === method) {
ajaxData = JSON.stringify(ajaxData); ajaxData = JSON.stringify(ajaxData);
} else { } else {
ajaxData = objToForm(ajaxData); ajaxData = objToForm(ajaxData);
@ -116,17 +116,17 @@ layui.define(function (exports) {
error: function (XMLHttpRequest) { error: function (XMLHttpRequest) {
let responseCode = XMLHttpRequest.status; let responseCode = XMLHttpRequest.status;
let responseData = JSON.parse(XMLHttpRequest.responseText); let responseData = JSON.parse(XMLHttpRequest.responseText);
if (errorCallback != undefined && errorCallback != null && typeof (errorCallback) == 'function') { if (errorCallback && typeof (errorCallback) == 'function') {
errorCallback(responseCode, responseData); errorCallback(responseCode, responseData);
} }
}, },
beforeSend: function (XMLHttpRequest) { beforeSend: function (XMLHttpRequest) {
if (beforeCallback != undefined && beforeCallback != null && typeof (beforeCallback) == 'function') { if (beforeCallback && typeof (beforeCallback) == 'function') {
beforeCallback(XMLHttpRequest); beforeCallback(XMLHttpRequest);
} }
}, },
complete: function (XMLHttpRequest, status) { complete: function (XMLHttpRequest, status) {
if (completeCallback != undefined && completeCallback != null && typeof (completeCallback) == 'function') { if (completeCallback && typeof (completeCallback) == 'function') {
completeCallback(XMLHttpRequest, status); completeCallback(XMLHttpRequest, status);
} }
} }
@ -141,14 +141,14 @@ layui.define(function (exports) {
function pathArgsHasSameValue(pathArgArray) { function pathArgsHasSameValue(pathArgArray) {
let tempArgIndex = 0; let tempArgIndex = 0;
let tempArgs = pathArgArray[tempArgIndex]; let tempArgs = pathArgArray[tempArgIndex];
for (let i = (tempArgIndex + 1), item; item = pathArgArray[i]; i++) { for (let i = (tempArgIndex + 1); i < pathArgArray.length; i++) {
if (tempArgs == item) { let item = pathArgArray[i];
if (tempArgs === item) {
throw new Error('参数' + item + '有重复值!!!'); throw new Error('参数' + item + '有重复值!!!');
} }
if (i == pathArgArray.length - 1) { if (i === pathArgArray.length - 1) {
tempArgs = pathArgArray[++tempArgIndex]; tempArgs = pathArgArray[++tempArgIndex];
i = tempArgIndex; i = tempArgIndex;
continue;
} }
} }
} }
@ -164,9 +164,10 @@ layui.define(function (exports) {
return paramsObj; return paramsObj;
} }
let paramsKVs = params.split('&'); let paramsKVs = params.split('&');
for (let i = 0, item = null; item = paramsKVs[i++];) { for (let i = 0; i < paramsKVs.length; i++) {
let item = paramsKVs[i];
let kvs = item.split('='); let kvs = item.split('=');
if (kvs.length == 1) { if (kvs.length === 1) {
paramsObj[kvs[0]] = null; paramsObj[kvs[0]] = null;
continue; continue;
} }
@ -194,7 +195,8 @@ layui.define(function (exports) {
return path; return path;
} }
pathArgsHasSameValue(pathArgArray); pathArgsHasSameValue(pathArgArray);
for (let i = 0, item; item = pathArgArray[i]; i++) { for (let i = 0; i < pathArgArray.length; i++) {
let item = pathArgArray[i];
path = path.replace(item, pathArgs[i]); path = path.replace(item, pathArgs[i]);
} }
return path; return path;
@ -225,17 +227,17 @@ layui.define(function (exports) {
error: function (XMLHttpRequest) { error: function (XMLHttpRequest) {
let responseCode = XMLHttpRequest.status; let responseCode = XMLHttpRequest.status;
let responseData = JSON.parse(XMLHttpRequest.responseText); let responseData = JSON.parse(XMLHttpRequest.responseText);
if (errorCallback != undefined && errorCallback != null && typeof (errorCallback) == 'function') { if (errorCallback && typeof (errorCallback) == 'function') {
errorCallback(responseCode, responseData); errorCallback(responseCode, responseData);
} }
}, },
beforeSend: function (XMLHttpRequest) { beforeSend: function (XMLHttpRequest) {
if (beforeCallback != undefined && beforeCallback != null && typeof (beforeCallback) == 'function') { if (beforeCallback && typeof (beforeCallback) == 'function') {
beforeCallback(XMLHttpRequest); beforeCallback(XMLHttpRequest);
} }
}, },
complete: function (XMLHttpRequest, status) { complete: function (XMLHttpRequest, status) {
if (completeCallback != undefined && completeCallback != null && typeof (completeCallback) == 'function') { if (completeCallback && typeof (completeCallback) == 'function') {
completeCallback(XMLHttpRequest, status); completeCallback(XMLHttpRequest, status);
} }
} }
@ -256,7 +258,7 @@ layui.define(function (exports) {
function checkBoxToString(formObj, checkBoxKey) { function checkBoxToString(formObj, checkBoxKey) {
let value = ''; let value = '';
for (let key in formObj) { for (let key in formObj) {
if (key.indexOf(checkBoxKey) != 0) { if (key.indexOf(checkBoxKey) !== 0) {
continue; continue;
} }
if (value !== '') { if (value !== '') {

View File

@ -2,8 +2,10 @@ function LayuiFileUpload(layui, viewer) {
let $ = layui.$; let $ = layui.$;
let form = layui.form; let form = layui.form;
let upload = layui.upload; let upload = layui.upload;
if (!upload) {
throw new Error('需要引入layui的upload模块');
}
let ajax = top.restAjax || top.ajax; let ajax = top.restAjax || top.ajax;
let dialog = top.dialog;
let Viewer = viewer; let Viewer = viewer;
let viewerObj = {}; let viewerObj = {};
let style = ` let style = `
@ -31,12 +33,12 @@ function LayuiFileUpload(layui, viewer) {
$(document.head).append(style); $(document.head).append(style);
/** /**
* 初始化图片上传 * 获取配置
* @param opt * @param opt
* @return {{headers: *, fieldName: *, uploadBtnId: string, deleteBtnClass: string, fileBoxId: string, isApp: (*|boolean), id: string, isAppRelease: (*|boolean), maxCount: (number|*), isShow: (*|boolean)}}
*/ */
function initUploadImage(opt) { function getOptData(opt) {
let maxCount = opt.maxCount ? parseInt(opt.maxCount) : 9 let maxCount = !opt.maxCount || opt.maxCount < 0 ? 9 : opt.maxCount;
maxCount = opt.maxCount < 0 ? 9 : opt.maxCount;
let fieldName = opt.fieldName; let fieldName = opt.fieldName;
let headers = opt.headers; let headers = opt.headers;
headers = headers ? headers : {}; headers = headers ? headers : {};
@ -44,73 +46,106 @@ function LayuiFileUpload(layui, viewer) {
let isAppRelease = opt.isAppRelease; let isAppRelease = opt.isAppRelease;
let isShow = opt.isShow; let isShow = opt.isShow;
let id = '#' + fieldName; let id = `#${fieldName}`;
let fileBoxId = id + 'FileBox'; let fileBoxId = `${id}FileBox`;
let uploadBtnId = id + 'UploadBtn'; let uploadBtnId = `${id}UploadBtn`;
let deleteBtnClass = `.delete-${fieldName}-btn`; let deleteBtnClass = `.delete-${fieldName}-btn`;
return {
maxCount: maxCount,
fieldName: fieldName,
headers: headers,
isApp: isApp,
isAppRelease: isAppRelease,
isShow: isShow,
id: id,
fileBoxId: fileBoxId,
uploadBtnId: uploadBtnId,
deleteBtnClass: deleteBtnClass
}
}
/**
* 渲染
* @param optData
* @param fileArray
* @param html
*/
function render(optData, fileArray, html) {
$(optData.fileBoxId).empty();
$(optData.fileBoxId).append(html);
if (fileArray.length < optData.maxCount) {
$(optData.uploadBtnId).removeClass('layui-btn-disabled');
$(optData.uploadBtnId).attr('disabled', false);
} else {
$(optData.uploadBtnId).addClass('layui-btn-disabled');
$(optData.uploadBtnId).attr('disabled', true);
}
}
/**
* 初始化图片上传
* @param opt
*/
function initUploadImage(opt) {
let optData = getOptData(opt);
function init(callback) { function init(callback) {
let fileIds = $(id).val(); let fileIds = $(optData.id).val();
let fileIdArray = fileIds ? fileIds.split(',') : []; let fileArray = fileIds ? fileIds.split(',') : [];
let html = ''; let html = '';
for (let i = 0, fileId; fileId = fileIdArray[i++];) { for (let i = 0; i < fileArray.length; i++) {
let fileId = fileArray[i];
html += ` html += `
<div class="form-upload-image"> <div class="form-upload-image">
<img src="route/file/v2/download/true/${fileId}" align="加载失败"> <img src="route/file/v2/download/true/${fileId}" align="加载失败">
<a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-${fieldName}-btn" href="javascript:void(0);" data-id="${fileId}" data-name="${fieldName}"> <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-${optData.fieldName}-btn" href="javascript:void(0);" data-id="${fileId}" data-name="${optData.fieldName}">
<i class="fa fa-trash-o"></i> <i class="fa fa-trash-o"></i>
</a> </a>
</div> </div>
`; `;
} }
render(optData, fileArray, html);
$(fileBoxId).empty();
$(fileBoxId).append(html);
if (fileIdArray.length < maxCount) {
$(uploadBtnId).removeClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', false);
} else {
$(uploadBtnId).addClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', true);
}
callback ? callback() : ''; callback ? callback() : '';
} }
function addClick() { function addClick() {
let layerLoadingIndex; let layerLoadingIndex;
let url = 'api/file/v2/upload-image'; let url = 'api/file/v2/upload-image';
if (isApp) { if (optData.isApp) {
url = 'app/file/v2/upload-image' url = 'app/file/v2/upload-image'
} }
if (isAppRelease) { if (optData.isAppRelease) {
url = 'app/file/v2/upload-image-release' url = 'app/file/v2/upload-image-release'
} }
upload.render({ upload.render({
elem: uploadBtnId, elem: optData.uploadBtnId,
url: url, url: url,
accept: 'images', accept: 'images',
acceptMime: 'image/*', acceptMime: 'image/*',
field: 'image', field: 'image',
exts: 'jpg|png|gif|bmp|jpeg', exts: 'jpg|png|gif|bmp|jpeg',
name: fieldName, name: optData.fieldName,
headers: headers, headers: optData.headers,
before: function (obj) { before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3}) layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
}, },
done: function (res, index, upload) { done: function (res, index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
let name = this.name; let name = this.name;
let files = $('#' + this.name).val(); let dom = $(`#${name}`);
let files = dom.val();
files = files ? files : '';
if (files.length > 0) { if (files.length > 0) {
files += ','; files += ',';
} }
files += res.data.fileId; files += res.data.fileId;
$('#' + name).val(files); dom.val(files);
init(function () { init(function () {
if (Viewer) {
viewerObj[name].update(); viewerObj[name].update();
}
}); });
}, },
error: function (index, upload) { error: function (index, upload) {
@ -118,40 +153,39 @@ function LayuiFileUpload(layui, viewer) {
layer.msg('文件上传失败'); layer.msg('文件上传失败');
}, },
progress: function (n, elem, res, index) { progress: function (n, elem, res, index) {
let percent = n + '%'
console.log(percent);
console.log(elem);
console.log(res);
console.log(index);
// element.progress('demo-' + index, n + '%');
} }
}); });
$(document).on('click', deleteBtnClass, function () { $(document).on('click', optData.deleteBtnClass, function () {
let name = this.dataset.name; let name = this.dataset.name;
let id = this.dataset.id; let id = this.dataset.id;
let files = $('#' + name).val().replace(id, ''); let dom = $(`#${name}`);
let files = dom.val().replace(id, '');
files = files.replace(/\,+/g, ','); files = files.replace(/\,+/g, ',');
if (files.charAt(0) == ',') { if (files.charAt(0) === ',') {
files = files.substring(1); files = files.substring(1);
} }
if (files.charAt(files.length - 1) == ',') { if (files.charAt(files.length - 1) === ',') {
files = files.substring(0, files.length - 1); files = files.substring(0, files.length - 1);
} }
$('#' + name).val(files); dom.val(files);
init(function () { init(function () {
if (Viewer) {
viewerObj[name].update(); viewerObj[name].update();
}
}); });
}); });
} }
init(function () { init(function () {
viewerObj[fieldName] = new Viewer(document.getElementById(fieldName + 'FileBox'), {navbar: false}); if (Viewer) {
viewerObj[optData.fieldName] = new Viewer(document.getElementById(optData.fieldName + 'FileBox'), {navbar: false});
}
}); });
if (!isShow) { if (!optData.isShow) {
addClick(); addClick();
} else { } else {
$(uploadBtnId).hide(); $(optData.uploadBtnId).hide();
} }
} }
@ -224,84 +258,64 @@ function LayuiFileUpload(layui, viewer) {
* @param opt * @param opt
*/ */
function initUploadFile(opt) { function initUploadFile(opt) {
let maxCount = opt.maxCount ? parseInt(opt.maxCount) : 3 let optData = getOptData(opt);
maxCount = opt.maxCount < 0 ? 3 : opt.maxCount;
let fieldName = opt.fieldName;
let headers = opt.headers;
headers = headers ? headers : {};
let isApp = opt.isApp;
let isAppRelease = opt.isAppRelease;
let isShow = opt.isShow;
let id = '#' + fieldName;
let fileBoxId = id + 'FileBox';
let uploadBtnId = id + 'UploadBtn';
let deleteBtnClass = '.delete-' + fieldName + '-btn';
function init() { function init() {
let files = $(id).val(); let files = $(optData.id).val();
let fileArray = files ? files.split(',') : []; let fileArray = files ? files.split(',') : [];
let html = ''; let html = '';
if (fileArray.length > 0) { if (fileArray.length > 0) {
html += [ let trs = '';
'<div class="form-upload-file">', for (let i = 0; i < fileArray.length; i++) {
' <table class="layui-table" lay-size="sm">', let file = fileArray[i];
' <colgroup>',
' <col>',
' <col width="60">',
' </colgroup>',
' <thead>',
' <tr>',
' <th>文件名</th>',
' <th class="operation">操作</th>',
' </tr>',
' </thead>',
' <tbody>',
].join('');
for (let i = 0, file; file = fileArray[i++];) {
let idNameArray = file.split(':'); let idNameArray = file.split(':');
let fileId = idNameArray[0]; let fileId = idNameArray[0];
let fileName = idNameArray[1]; let fileName = idNameArray[1];
html += [ trs += `
'<tr>', <tr>
' <td><a href="route/file/v2/download/false/'+ fileId +'" target="_blank">' + fileName + '</a></td>', <td><a href="route/file/v2/download/false/${fileId}" target="_blank">${fileName}</a></td>
' <td class="operation">', <td class="operation">
' <button type="button" class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fieldName + '-btn" data-id="' + fileId + '" data-name="' + fileName + '" data-field-name="' + fieldName + '">删除</button>', <button type="button" class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-${optData.fieldName}-btn" data-id="${fileId}" data-name="${fileName}" data-field-name="${optData.fieldName}">删除</button>
' </td>', </td>
'</tr>', </tr>
].join(''); `
} }
html += [ html += `
' </tbody>', <div class="form-upload-file">
' </table>', <table class="layui-table" lay-size="sm">
'</div>' <colgroup>
].join(''); <col>
<col width="60">
</colgroup>
<thead>
<tr>
<th>文件名</th>
<th class="operation">操作</th>
</tr>
</thead>
<tbody>
${trs}
</tbody>
</table>
</div>
`;
} }
$(fileBoxId).empty(); render(optData, fileArray, html);
$(fileBoxId).append(html);
if (fileArray.length < maxCount) {
$(uploadBtnId).removeClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', false);
} else {
$(uploadBtnId).addClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', true);
}
} }
function addClick() { function addClick() {
let layerLoadingIndex; let layerLoadingIndex;
let url = 'api/file/v2/upload-file'; let url = 'api/file/v2/upload-file';
if (isApp) { if (optData.isApp) {
url = 'app/file/v2/upload-file' url = 'app/file/v2/upload-file'
} }
if (isAppRelease) { if (optData.isAppRelease) {
url = 'app/file/v2/upload-file-release' url = 'app/file/v2/upload-file-release'
} }
upload.render({ upload.render({
elem: uploadBtnId, elem: optData.uploadBtnId,
url: url, url: url,
accept: 'file', accept: 'file',
acceptMime: [ acceptMime: [
@ -319,50 +333,53 @@ function LayuiFileUpload(layui, viewer) {
].join(','), ].join(','),
field: 'file', field: 'file',
exts: 'pdf|doc|docx|xls|xlsx|ppt|pptx|wps|txt|rar|zip', exts: 'pdf|doc|docx|xls|xlsx|ppt|pptx|wps|txt|rar|zip',
name: fieldName, name: optData.fieldName,
headers: headers, headers: optData.headers,
before: function (obj) { before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3}) layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
}, },
done: function (res, index, upload) { done: function (res, index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
let name = this.name; let name = this.name;
let files = $('#' + this.name).val(); let dom = $(`#${name}`);
let files = dom.val();
if (files.length > 0) { if (files.length > 0) {
files += ','; files += ',';
} }
files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, ''); files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, '');
$('#' + name).val(files); dom.val(files);
init(); init();
}, },
error: function (index, upload) { error: function (index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
layer.msg('文件上传失败'); layer.msg('文件上传失败');
}, },
progress: function (n, elem, res, index) {} progress: function (n, elem, res, index) {
}
}); });
$(document).on('click', deleteBtnClass, function () { $(document).on('click', optData.deleteBtnClass, function () {
let id = this.dataset.id; let id = this.dataset.id;
let name = this.dataset.name; let name = this.dataset.name;
let fieldName = this.dataset.fieldName; let fieldName = this.dataset.fieldName;
let files = $('#' + fieldName).val().replace(id + ':' + name, ''); let dom = $(`#${fieldName}`).val();
let files = dom.val().replace(id + ':' + name, '');
files = files.replace(/\,+/g, ','); files = files.replace(/\,+/g, ',');
if (files.charAt(0) == ',') { if (files.charAt(0) === ',') {
files = files.substring(1); files = files.substring(1);
} }
if (files.charAt(files.length - 1) == ',') { if (files.charAt(files.length - 1) === ',') {
files = files.substring(0, files.length - 1); files = files.substring(0, files.length - 1);
} }
$('#' + fieldName).val(files); dom.val(files);
init(); init();
}); });
} }
init(); init();
if (!isShow) { if (!optData.isShow) {
addClick(); addClick();
} else { } else {
$(uploadBtnId).hide(); $(optData.uploadBtnId).hide();
} }
} }
@ -436,114 +453,97 @@ function LayuiFileUpload(layui, viewer) {
* @param opt * @param opt
*/ */
function initUploadVideo(opt) { function initUploadVideo(opt) {
let maxCount = opt.maxCount ? parseInt(opt.maxCount) : 1 let optData = getOptData(opt);
maxCount = opt.maxCount < 0 ? 1 : opt.maxCount;
let fieldName = opt.fieldName;
let headers = opt.headers;
headers = headers ? headers : {};
let isApp = opt.isApp;
let isAppRelease = opt.isAppRelease;
let isShow = opt.isShow;
let id = '#' + fieldName;
let fileBoxId = id + 'FileBox';
let uploadBtnId = id + 'UploadBtn';
let deleteBtnClass = '.delete-' + fieldName + '-btn';
function init() { function init() {
let files = $(id).val(); let files = $(id).val();
let fileArray = files ? files.split(',') : []; let fileArray = files ? files.split(',') : [];
let html = ''; let html = '';
for (let i = 0, file; file = fileArray[i++];) { for (let i = 0; i < fileArray.length; i++) {
let file = fileArray[i];
let idNameArray = file.split(':'); let idNameArray = file.split(':');
let fileId = idNameArray[0]; let fileId = idNameArray[0];
let fileName = idNameArray[1]; let fileName = idNameArray[1];
html += [ html += `
'<div class="form-upload-video">', <div class="form-upload-video">
' <video width="320" height="240" controls>', <video width="320" height="240" controls>
' <source src="route/file/v2/download/true/' + fileId + '" type="video/mp4">', <source src="route/file/v2/download/true/${fileId}" type="video/mp4">
' 您的浏览器不支持 video 标签', 您的浏览器不支持 video 标签
' </video>', </video>
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fieldName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '" data-field-name="' + fieldName + '">', <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-${optData.fieldName}-btn" href="javascript:void(0);" data-id="${fileId}" data-name="${fileName}" data-field-name="${optData.fieldName}">
' <i class="fa fa-trash-o"></i>', <i class="fa fa-trash-o"></i>
' </a>', </a>
'</div>', </div>
].join(''); `;
} }
$(fileBoxId).empty(); render(optData, fileArray, html)
$(fileBoxId).append(html);
if (fileArray.length < maxCount) {
$(uploadBtnId).removeClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', false);
} else {
$(uploadBtnId).addClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', true);
}
} }
function addClick() { function addClick() {
let layerLoadingIndex; let layerLoadingIndex;
let url = 'api/file/v2/upload-video'; let url = 'api/file/v2/upload-video';
if (isApp) { if (optData.isApp) {
url = 'app/file/v2/upload-video' url = 'app/file/v2/upload-video'
} }
if (isAppRelease) { if (optData.isAppRelease) {
url = 'app/file/v2/upload-video-release' url = 'app/file/v2/upload-video-release'
} }
upload.render({ upload.render({
elem: uploadBtnId, elem: optData.uploadBtnId,
url: url, url: url,
accept: 'video', accept: 'video',
acceptMime: 'video/mp4', acceptMime: 'video/mp4',
exts: 'mp4', exts: 'mp4',
field: 'video', field: 'video',
name: fieldName, name: optData.fieldName,
headers: headers, headers: optData.headers,
before: function (obj) { before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3}) layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
}, },
done: function (res, index, upload) { done: function (res, index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
let name = this.name; let name = this.name;
let files = $('#' + this.name).val(); let dom = $(`#${name}`);
let files = dom.val();
if (files.length > 0) { if (files.length > 0) {
files += ','; files += ',';
} }
files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, ''); files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, '');
$('#' + name).val(files); dom.val(files);
init(); init();
}, },
error: function (index, upload) { error: function (index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
layer.msg('文件上传失败'); layer.msg('文件上传失败');
}, },
progress: function (n, elem, res, index) {} progress: function (n, elem, res, index) {
}
}); });
$(document).on('click', deleteBtnClass, function () { $(document).on('click', optData.deleteBtnClass, function () {
let name = this.dataset.name; let name = this.dataset.name;
let id = this.dataset.id; let id = this.dataset.id;
let fieldName = this.dataset.fieldName; let fieldName = this.dataset.fieldName;
let files = $('#' + fieldName).val().replace(id + ':' + name, ''); let dom = $(`#${fieldName}`);
let files = dom.val().replace(id + ':' + name, '');
files = files.replace(/\,+/g, ','); files = files.replace(/\,+/g, ',');
if (files.charAt(0) == ',') { if (files.charAt(0) === ',') {
files = files.substring(1); files = files.substring(1);
} }
if (files.charAt(files.length - 1) == ',') { if (files.charAt(files.length - 1) === ',') {
files = files.substring(0, files.length - 1); files = files.substring(0, files.length - 1);
} }
$('#' + fieldName).val(files); dom.val(files);
init(); init();
}); });
} }
init(); init();
if (!isShow) { if (!optData.isShow) {
addClick(); addClick();
} else { } else {
$(uploadBtnId).hide(); $(optData.uploadBtnId).hide();
} }
} }
@ -612,63 +612,43 @@ function LayuiFileUpload(layui, viewer) {
} }
function initUploadAudio(opt) { function initUploadAudio(opt) {
let maxCount = opt.maxCount ? parseInt(opt.maxCount) : 1 let optData = getOptData(opt);
maxCount = opt.maxCount < 0 ? 1 : opt.maxCount;
let fieldName = opt.fieldName;
let headers = opt.headers;
headers = headers ? headers : {};
let isApp = opt.isApp;
let isAppRelease = opt.isAppRelease;
let isShow = opt.isShow;
let id = '#' + fieldName;
let fileBoxId = id + 'FileBox';
let uploadBtnId = id + 'UploadBtn';
let deleteBtnClass = '.delete-' + fieldName + '-btn';
function init() { function init() {
let files = $(id).val(); let files = $(id).val();
let fileArray = files ? files.split(',') : []; let fileArray = files ? files.split(',') : [];
let html = ''; let html = '';
for (let i = 0, file; file = fileArray[i++];) { for (let i = 0; i < fileArray.length; i++) {
let file = fileArray[i];
let idNameArray = file.split(':'); let idNameArray = file.split(':');
let fileId = idNameArray[0]; let fileId = idNameArray[0];
let fileName = idNameArray[1]; let fileName = idNameArray[1];
html += [ html += `
'<div class="form-upload-video">', <div class="form-upload-video">
' <audio src="route/file/v2/download/true/' + fileId + '" controls>', <audio src="route/file/v2/download/true/${fileId}" controls>
' 您的浏览器不支持 audio 标签。', 您的浏览器不支持 audio 标签
' </audio>', </audio>
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fieldName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '" data-field-name="' + fieldName + '">', <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-${optData.fieldName}-btn" href="javascript:void(0);" data-id="${fileId}" data-name="${fileName}" data-field-name="${optData.fieldName}">
' <i class="fa fa-trash-o"></i>', <i class="fa fa-trash-o"></i>
' </a>', </a>
'</div>', </div>
].join(''); `;
} }
$(fileBoxId).empty(); render(optData, fileArray, html);
$(fileBoxId).append(html);
if (fileArray.length < maxCount) {
$(uploadBtnId).removeClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', false);
} else {
$(uploadBtnId).addClass('layui-btn-disabled');
$(uploadBtnId).attr('disabled', true);
}
} }
function addClick() { function addClick() {
let layerLoadingIndex; let layerLoadingIndex;
let url = 'api/file/v2/upload-audio'; let url = 'api/file/v2/upload-audio';
if (isApp) { if (optData.isApp) {
url = 'app/file/v2/upload-audio' url = 'app/file/v2/upload-audio'
} }
if (isAppRelease) { if (optData.isAppRelease) {
url = 'app/file/v2/upload-audio-release' url = 'app/file/v2/upload-audio-release'
} }
upload.render({ upload.render({
elem: uploadBtnId, elem: optData.uploadBtnId,
url: url, url: url,
accept: 'audio', accept: 'audio',
acceptMime: [ acceptMime: [
@ -677,51 +657,54 @@ function LayuiFileUpload(layui, viewer) {
], ],
exts: 'wav|mp3', exts: 'wav|mp3',
field: 'audio', field: 'audio',
name: fieldName, name: optData.fieldName,
headers: headers, headers: optData.headers,
before: function (obj) { before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3}) layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
}, },
done: function (res, index, upload) { done: function (res, index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
let name = this.name; let name = this.name;
let files = $('#' + this.name).val(); let dom = $(`#${name}`);
let files = dom.val();
if (files.length > 0) { if (files.length > 0) {
files += ','; files += ',';
} }
files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, ''); files += res.data.fileId + ':' + res.data.fileName.replace(/\,/g, '');
$('#' + name).val(files); dom.val(files);
init(); init();
}, },
error: function (index, upload) { error: function (index, upload) {
layer.close(layerLoadingIndex); layer.close(layerLoadingIndex);
layer.msg('文件上传失败'); layer.msg('文件上传失败');
}, },
progress: function (n, elem, res, index) {} progress: function (n, elem, res, index) {
}
}); });
$(document).on('click', deleteBtnClass, function () { $(document).on('click', optData.deleteBtnClass, function () {
let name = this.dataset.name; let name = this.dataset.name;
let id = this.dataset.id; let id = this.dataset.id;
let fieldName = this.dataset.fieldName; let fieldName = this.dataset.fieldName;
let files = $('#' + fieldName).val().replace(id + ':' + name, ''); let dom = $(`#${fieldName}`)
let files = dom.val().replace(id + ':' + name, '');
files = files.replace(/\,+/g, ','); files = files.replace(/\,+/g, ',');
if (files.charAt(0) == ',') { if (files.charAt(0) === ',') {
files = files.substring(1); files = files.substring(1);
} }
if (files.charAt(files.length - 1) == ',') { if (files.charAt(files.length - 1) === ',') {
files = files.substring(0, files.length - 1); files = files.substring(0, files.length - 1);
} }
$('#' + fieldName).val(files); dom.val(files);
init(); init();
}); });
} }
init(); init();
if (!isShow) { if (!optData.isShow) {
addClick(); addClick();
} else { } else {
$(uploadBtnId).hide(); $(optData.uploadBtnId).hide();
} }
} }
@ -789,55 +772,6 @@ function LayuiFileUpload(layui, viewer) {
}); });
} }
/**
* 初始化日期
* @param opt
*/
this.initDate = function (opt) {
laydate.render({
elem: '#' + opt.id,
type: opt.datetype,
format: opt.dateformat,
value: opt.dateDefaultValue,
min: opt.dataMinValue,
max: opt.dataMaxValue,
trigger: 'click'
});
}
/**
* 初始化checkbox数据
* @param form
* @param checkedData
* @param id
*/
this.initCheckboxData = function (formName, checkedData, id) {
let dataArray = checkedData.split(',');
let obj = {};
for (let i = 0, data; data = dataArray[i++];) {
obj[id + '[' + data + ']'] = true;
}
form.val(formName, obj);
}
/**
* 设置复选框值
* @param formData
* @param id
*/
this.setCheckboxValue = function (formData, id) {
formData.field[id] = ajax.checkBoxToString(formData.field, id);
}
/**
* 设置开关值
* @param formData
* @param id
*/
this.setSwitchValue = function (formData, id) {
formData.field[id] = formData.field[id] ? 1 : 0;
}
/** /**
* 清空上传字段 * 清空上传字段
* @param formData * @param formData

View File

@ -1,11 +1,11 @@
function LayuiInputTree(layui) { function LayuiInputTree(layui) {
var $ = layui.$; let $ = layui.$;
var layer = layui.layer; let layer = layui.layer;
var ztree = layui.ztree; let ztree = layui.ztree;
var restAjax = layui.restajax; let restAjax = layui.restajax;
var zIndex = 10000; let zIndex = 10000;
// 样式 // 样式
var style = ` let style = `
<link rel="stylesheet" href="assets/js/vendor/zTree3/css/metroStyle/metroStyle.css"/> <link rel="stylesheet" href="assets/js/vendor/zTree3/css/metroStyle/metroStyle.css"/>
<style id="layuiInputTreeStyle"> <style id="layuiInputTreeStyle">
.layui-input-tree-box {border: 1px solid #e6e6e6; background-color: #FFF; position: absolute; z-index: 1100; display: none;} .layui-input-tree-box {border: 1px solid #e6e6e6; background-color: #FFF; position: absolute; z-index: 1100; display: none;}
@ -21,26 +21,26 @@ function LayuiInputTree(layui) {
* @param opt * @param opt
*/ */
this.initSelect = function (opt) { this.initSelect = function (opt) {
var url = opt.url; let url = opt.url;
if (!url) { if (!url) {
return; return;
} }
var getSelectedData = opt.getSelectedData; let getSelectedData = opt.getSelectedData;
var onConfirm = opt.onConfirm; let onConfirm = opt.onConfirm;
var onClear = opt.onClear; let onClear = opt.onClear;
var defaultParams = opt.defaultParams; let defaultParams = opt.defaultParams;
var key = opt.key; let key = opt.key;
var id = opt.id; let id = opt.id;
var inputDomId = '#' + id; let inputDomId = '#' + id;
var zTree; let zTree;
var selectedData; let selectedData;
var boxDomId = inputDomId + 'Box'; let boxDomId = inputDomId + 'Box';
var zTreeBoxId = inputDomId + 'ZTreeBox'; let zTreeBoxId = inputDomId + 'ZTreeBox';
var confirmBtnId = inputDomId + 'ConfirmBtn'; let confirmBtnId = inputDomId + 'ConfirmBtn';
var clearBtnId = inputDomId + 'ClearBtn'; let clearBtnId = inputDomId + 'ClearBtn';
var inputDom = $(inputDomId); let inputDom = $(inputDomId);
var inputParentDom = inputDom.parent(); let inputParentDom = inputDom.parent();
var selectedNode = null; let selectedNode = null;
inputParentDom.css('position', 'relative'); inputParentDom.css('position', 'relative');
inputDom.attr('readonly', ''); inputDom.attr('readonly', '');
inputDom.css('cursor', 'pointer'); inputDom.css('cursor', 'pointer');
@ -59,7 +59,7 @@ function LayuiInputTree(layui) {
// 初始化事件 // 初始化事件
function initEvent() { function initEvent() {
$(document).on('click', inputDomId, function () { $(document).on('click', inputDomId, function () {
var boxDom = $(boxDomId); let boxDom = $(boxDomId);
if (boxDom.is(':hidden')) { if (boxDom.is(':hidden')) {
boxDom.show(); boxDom.show();
boxDom.css('z-index', zIndex++) boxDom.css('z-index', zIndex++)
@ -97,7 +97,7 @@ function LayuiInputTree(layui) {
// 初始化zTree // 初始化zTree
function initZTree() { function initZTree() {
var setting = { let setting = {
async: { async: {
enable: true, enable: true,
autoLoad: true, autoLoad: true,
@ -134,27 +134,27 @@ function LayuiInputTree(layui) {
* @param opt * @param opt
*/ */
this.initMultiSelect = function (opt) { this.initMultiSelect = function (opt) {
var url = opt.url; let url = opt.url;
if (!url) { if (!url) {
return; return;
} }
var getSelectedDatas = opt.getSelectedDatas; let getSelectedDatas = opt.getSelectedDatas;
var onConfirm = opt.onConfirm; let onConfirm = opt.onConfirm;
var onClear = opt.onClear; let onClear = opt.onClear;
var checkboxType = opt.checkboxType; let checkboxType = opt.checkboxType;
var defaultParams = opt.defaultParams; let defaultParams = opt.defaultParams;
var id = opt.id; let id = opt.id;
var key = opt.key; let key = opt.key;
var inputDomId = '#' + id; let inputDomId = '#' + id;
var zTree; let zTree;
var selectedDatas; let selectedDatas;
var selectedNodesObj = {}; let selectedNodesObj = {};
var boxDomId = inputDomId + 'Box'; let boxDomId = inputDomId + 'Box';
var zTreeBoxId = inputDomId + 'ZTreeBox'; let zTreeBoxId = inputDomId + 'ZTreeBox';
var confirmBtnId = inputDomId + 'ConfirmBtn'; let confirmBtnId = inputDomId + 'ConfirmBtn';
var clearBtnId = inputDomId + 'ClearBtn'; let clearBtnId = inputDomId + 'ClearBtn';
var inputDom = $(inputDomId); let inputDom = $(inputDomId);
var inputParentDom = inputDom.parent(); let inputParentDom = inputDom.parent();
inputParentDom.css('position', 'relative'); inputParentDom.css('position', 'relative');
inputDom.attr('readonly', ''); inputDom.attr('readonly', '');
inputDom.css('cursor', 'pointer'); inputDom.css('cursor', 'pointer');
@ -175,7 +175,7 @@ function LayuiInputTree(layui) {
* @param id * @param id
*/ */
function checkNode(id) { function checkNode(id) {
var node = zTree.getNodeByParam('id', id); let node = zTree.getNodeByParam('id', id);
if (!node) { if (!node) {
return; return;
} }
@ -206,7 +206,7 @@ function LayuiInputTree(layui) {
function boxHide() { function boxHide() {
// 还原原有选择 // 还原原有选择
if (selectedDatas && selectedDatas.length > 0) { if (selectedDatas && selectedDatas.length > 0) {
var names = ''; let names = '';
$.each(selectedDatas, function (index, item) { $.each(selectedDatas, function (index, item) {
if (names != '') { if (names != '') {
names += ','; names += ',';
@ -218,7 +218,7 @@ function LayuiInputTree(layui) {
$(inputDomId).val(''); $(inputDomId).val('');
} }
// 取消所有勾选状态 // 取消所有勾选状态
var checkedNodes = zTree.getCheckedNodes(); let checkedNodes = zTree.getCheckedNodes();
$.each(checkedNodes, function (index, item) { $.each(checkedNodes, function (index, item) {
zTree.checkNode(item, false); zTree.checkNode(item, false);
}); });
@ -227,7 +227,7 @@ function LayuiInputTree(layui) {
// 初始化事件 // 初始化事件
function initEvent() { function initEvent() {
$(document).on('click', inputDomId, function () { $(document).on('click', inputDomId, function () {
var boxDom = $(boxDomId); let boxDom = $(boxDomId);
if (boxDom.is(':hidden')) { if (boxDom.is(':hidden')) {
boxDom.css('z-index', zIndex++) boxDom.css('z-index', zIndex++)
boxDom.show(); boxDom.show();
@ -241,8 +241,8 @@ function LayuiInputTree(layui) {
// 确认事件 // 确认事件
$(document).on('click', confirmBtnId, function () { $(document).on('click', confirmBtnId, function () {
if (onConfirm) { if (onConfirm) {
var selectedNodes = []; let selectedNodes = [];
for (var key in selectedNodesObj) { for (let key in selectedNodesObj) {
selectedNodes.push(selectedNodesObj[key]); selectedNodes.push(selectedNodesObj[key]);
} }
onConfirm(zTree, selectedNodes) onConfirm(zTree, selectedNodes)
@ -263,7 +263,7 @@ function LayuiInputTree(layui) {
// 初始化zTree // 初始化zTree
function initZTree() { function initZTree() {
var setting = { let setting = {
async: { async: {
enable: true, enable: true,
autoLoad: true, autoLoad: true,
@ -287,7 +287,7 @@ function LayuiInputTree(layui) {
callback: { callback: {
onAsyncSuccess: function (event, treeId, treeNode) { onAsyncSuccess: function (event, treeId, treeNode) {
// 加载完默认勾选 // 加载完默认勾选
for (var key in selectedNodesObj) { for (let key in selectedNodesObj) {
checkNode(key); checkNode(key);
} }
}, },
@ -297,8 +297,8 @@ function LayuiInputTree(layui) {
} else { } else {
delete selectedNodesObj[treeNode.id]; delete selectedNodesObj[treeNode.id];
} }
var names = ''; let names = '';
for (var key in selectedNodesObj) { for (let key in selectedNodesObj) {
if (names != '') { if (names != '') {
names += ','; names += ',';
} }