platform-project
Version:
平台项目
475 lines (442 loc) • 20.1 kB
JavaScript
var Util = require('../util');
$(function () {
if ($('.version-manage-content').length === 0) {
return;
}
var versionData = {};
var isSeach = false;
var summaryDate = ''; //填充弹窗返回的数据
$('.version-manage-li a').addClass('active').parent().siblings().find('a').removeClass('active');
$('.title-b').html('后台管理 - 版本管理');
tableHandlers(); //表格里的操作
promptHandlers(); //弹窗里的操作
function promptHandlers() {
var $prompt = $('.version-detail-mask');
//弹窗中表格里的下载
promptTableDownload();
//弹窗中的按钮事件
outlinePromptHandle(summaryDate);
}
function tableHandlers() {
//点击概要操作
$('body').on('click', ".handlers .outline-btn", function () {
outline($(this))
});
//点击修改版本操作
$('body').on('click', ".handlers .edit-btn", function () {
editVersion($(this));
})
//点击构建日志操作
$("body").on('click', ".handlers .build-log-btn", function () {
buildLog($(this))
})
//点击下载操作
$("body").on('click', '.list-area .handlers .download-btn', function () {
downloadVersion($(this));
})
//点击删除操作
$('body').on('click', ".handlers .delete-btn", function () {
deleteVersion($(this));
})
}
function outline($this) {
var $tr = $this.parent().parent().parent();
var title = $tr.find('td[data-name="projectname"]').attr('data-value');
var $prompt = $('.version-detail-mask');
if ($prompt) {
$prompt.find('.title').html(title);
$prompt.addClass('edit');
$prompt.removeClass('hidden');
versionData.archiveId = $this.parent().parent().parent().find('td').eq(0).html();
console.log(versionData.archiveId);
//填充弹窗
Util.doAjax({
url: '/api/admin/archive/summary',
method: 'POST',
data: {
archiveId: versionData.archiveId
},
success: function (data) {
console.log(data);
summaryDate = data;
$prompt.find('.info-table tbody').html('');
$prompt.find('.handle-table tbody').html('');
$prompt.find('.version-name .value').html(data.version);
$prompt.find('.create-time .value').html(Util.formatTime(data.createTime), ' ');
$prompt.find('.size .value').html(data.fileSize);
$prompt.find('.desc-info .value').html('');
var scm, files;
for (let i = 0; i < data.scm.scm.length; i++) {
scm = $('<tr>' +
' <td class="scm-address" >' + data.scm.scm[i].url + '</td>' +
' <td class="branch" >' + data.scm.scm[i].branch + '</td>' +
' <td class = "revision" >' + data.scm.scm[i].revision + '</td> ' +
'</tr>');
$prompt.find('.info-table tbody').append(scm);
}
for (let i = 0; i < data.downloadList.files.length; i++) {
var url = '/api/admin / archive / download ? archiveId = ' + versionData.archiveId + ' & items = ' + data.downloadList.files[i].path;
files = $('<tr>' +
' <td>' +
' <div class="vo-checkbox"><input type="checkbox" name="" value="1">' +
' <b class="vo-null">icon</b></div>' +
' </td>' +
' <td>' + (i + 1) + '</td>' +
' <td class="file-name" title="' + data.downloadList.files[i].path + '">' + data.downloadList.files[i].path + '</td>' +
' <td>' + Util.sizeFormat(data.downloadList.files[i].size) + '</td>' +
' <td>' + data.downloadList.files[i].md5 + '</td>' +
' <td class="handlers">' +
' <a href="javascript:;" class="download-btn btn" data-url="' + data.downloadList.files[i].path + '" target="_blank">' +
' <span class="tip short-tip shadow">下载</span>' +
' </a>' +
' </td>' +
'</tr>');
// "/api/admin/archive/download?archiveId=' + versionData.archiveId + '&items=' + data.downloadList.files[i].path
$prompt.find('.handle-table tbody').append(files);
}
$prompt.find('.vo-checkbox').vo_checkbox();
}
});
}
}
function promptTableDownload() {
$('body').on('click', '.version-detail-mask .handlers .download-btn', function () {
var item = $(this).attr('data-url');
// console.log(data.downLoad + '&items=' + item)
Util.doAjax({
url: '/api/admin/archive/download',
method: 'POST',
data: {
archiveId: versionData.archiveId,
items: item
},
success: function (data) {
Util.doDownload(data.downLoad + '&items=' + item);
}
});
// Util.doDownload(data.downLoad + '&items=' + item);
})
}
//概要中的批量下载
function outlinePromptHandle(data) {
// console.log('outlinePromptHandle', data);
var $prompt = $('.version-detail-mask');
$('body').on('click', '.version-detail-mask .group-download-btn', function () {
var items = [];
var tr = $prompt.find('.handle-table tbody tr');
for (let i = 0; i < tr.length; i++) {
var isChecked = tr.eq(i).find('.vo-checkbox').hasClass('checked');
if (isChecked) {
items.push(tr.eq(i).find('.handlers a').attr('data-url'));
}
}
// console.log(versionData.archiveId, items)
Util.doAjax({
url: '/api/admin/archive/download',
method: 'POST',
data: {
archiveId: versionData.archiveId,
items: items
},
success: function (data) {
Util.doDownload('/api/admin/archive/download?archiveId=' + versionData.archiveId + '&items=' + items);
}
});
// Util.doDownload('/api/admin/archive/download?archiveId=' + versionData.archiveId + '&items=' + items);
})
$('body').on('click', '.version-detail-mask .btns-area .update-log-btn', function () {
var url = data.changelog;
Util.doAjax({
url: data.changelog,
method: 'POST',
success: function (data) {
window.open(url);
}
});
})
$('body').on('click', '.version-detail-mask .btns-area .build-log-btn', function () {
var url = data.buildLog;
Util.doAjax({
url: data.buildLog,
method: 'POST',
success: function (data) {
window.open(url);
}
});
})
}
function buildLog($this) {
versionData.archiveId = $this.parent().parent().parent().find('td').eq(0).html();
var url = '/api/admin/archive/buildlog?archiveId=' + versionData.archiveId;
// Util.doAjax({
// url: '/api/admin/archive/buildlog',
// method: 'POST',
// data: {
// archiveId: versionData.archiveId
// },
// success: function (data) {
// window.open(url);
// }
// });
window.open(url);
}
function downloadVersion($this) {
versionData.archiveId = $this.parent().parent().parent().find('td').eq(0).html();
Util.doAjax({
url: '/api/admin/archive/download',
method: 'POST',
data: {
archiveId: versionData.archiveId
},
success: function (data) {
Util.doDownload('/api/admin/archive/download?archiveId=' + versionData.archiveId);
}
});
// var url = '/api/admin/archive/download?archiveId=' + versionData.archiveId;
// window.open(url);
}
function deleteVersion($this) {
var deletePrompt = Util.deletePrompt();
deletePrompt.find('.sure-btn').click(function () {
deletePrompt.remove();
versionData.archiveId = $this.parent().parent().parent().find('td').eq(0).html();
Util.doAjax({
url: '/api/admin/archive/del',
method: 'POST',
data: {
archiveId: versionData.archiveId
},
success: function (data) {
Util.prompt('删除成功!');
$('#table').bootstrapTable('refresh');
// var pageNum = parseInt($('.page-area a.on').attr('data-page')) || 1;
// getArchiveList(pageNum, isSeach);
}
});
});
}
function editVersion($this) {
var $prompt = $('.edit-version-mask');
if ($prompt) {
// $prompt.find('.title').html(title);
$prompt.removeClass('hidden');
versionData.archiveId = $this.parent().parent().parent().find('td').eq(0).html();
Util.doAjax({
url: '/api/admin/archive/edit',
method: 'POST',
data: {
archiveId: versionData.archiveId
},
success: function (data) {
$prompt.find('.archiveVersion input').val(data.archiveVersion);
$prompt.find('.description textarea').val(data.description);
}
});
}
//保存
$prompt.find('.save-btn').click(function () {
versionData.archiveVersion = $prompt.find('.archiveVersion input').val();
versionData.description = $prompt.find('.description textarea').val();
Util.doAjax({
url: '/api/admin/archive/save',
method: 'POST',
data: versionData,
success: function (data) {
$prompt.addClass('hidden');
Util.prompt('修改成功!');
$('#table').bootstrapTable('refresh');
// var pageNum = parseInt($('.page-area a.on').attr('data-page')) || 1;
// getArchiveList(pageNum, isSeach);
}
});
})
}
$("#table").bootstrapTable({ // 对应table标签的id
url: '/api/admin/archives', //AJAX获取表格数据的url
method: 'post',
striped: true, //是否显示行间隔色(斑马线)
pagination: true, //是否显示分页(*)
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
paginationLoop: false, //当前页是边界时是否可以继续按
queryParams: function (params) { // 请求服务器数据时发送的参数,可以在这里添加额外的查询参数,返回false则终止请求
// console.log(params);
return {
pageSize: 10, // 每页要显示的数据条数
pageNumber: params.offset / params.limit + 1, // 每页显示数据的开始行号
//sort: params.sort, // 要排序的字段
//sortOrder: params.order, // 排序规则
//dataId: $("#dataId").val() // 额外添加的参数
searchText: $('.form-control').val()
}
}, //传递参数(*)
pageNumber: 1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*)
// pageList: [10, 25, 50, 100, 'all'], //可供选择的每页的行数(*)
contentType: "application/x-www-form-urlencoded", //一种编码。在post请求的时候需要用到。这里用的get请求,注释掉这句话也能拿到数据
search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
strictSearch: false, //是否全局匹配,false模糊匹配
showColumns: true, //是否显示所有的列
showRefresh: false, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: false, //是否启用点击选中行
checkboxHeader: false,
//height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
//uniqueId: "id", //每一行的唯一标识,一般为主键列
showToggle: false, //是否显示详细视图和列表视图的切换按钮
showPaginationSwitch: false,
onlyInfoPagination: false,
paginationPreText: '<',
paginationNextText: '>',
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
toolbar: '#toolbar',
toolbarAlign: 'right',
buttonsAlign: 'right',
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
sortable: false, //是否启用排序
responseHandler: function (data) { //如果后台返回的数据格式与bootstrapTable的数据格式不同在这里调整
console.log(data.data);
return {
"page": data.data.totalPages,
"total": data.data.totalCount,
"rows": data.data.archives
};
},
sortOrder: "asc", //排序方式
sortName: 'archiveid', // 要排序的字段
columns: [{
field: 'archiveid', // 返回json数据中的name
title: 'ID', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
sortable: true
}, {
field: 'archiveversion',
title: '版本名称',
align: 'center',
valign: 'middle'
}, {
field: 'archivefilesize',
title: '文件大小',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
return Util.sizeFormat(value)
}
}, {
field: 'projectid', // 返回json数据中的name
title: 'ID', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
visible: false
}, {
field: 'projectname',
title: '项目名称',
align: 'center',
valign: 'middle'
}, {
field: 'projecttype',
title: '项目类型',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
return value === 0 ? 'server' : (value === 1 ? 'client' : 'app');
},
}, {
field: 'productid', // 返回json数据中的name
title: '产品ID', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
visible: false
}, {
field: 'productname',
title: '产品名称',
align: 'center',
valign: 'middle'
}, {
field: 'status',
title: '状态',
align: 'center',
valign: 'middle',
class: 'type',
formatter: function (value, row, index) {
return value === 0 ? '启用' : '禁用';
},
cellStyle: function (value, row, index) {
if (value === 0) {
return {
css: {
'color': '#1fbc48;'
}
}
} else {
return {
css: {
'color': '#ff4444'
}
}
}
}
}, {
field: 'createdate',
title: '创建时间',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
return Util.formatTime(value, '<br />');
}
}, {
field: 'productid',
title: '操作',
align: 'center',
valign: 'middle',
class: 'handlers',
formatter: function (value, row, index) {
return ' <span>' +
' <a href="javascript:;" class="outline-btn btn">' +
' <span class="tip shadow short-tip">概要</span>' +
' </a>' +
' <a href="javascript:;" class="edit-btn btn">' +
' <span class="tip shadow">修改版本</span>' +
' </a>' +
' <a href="javascript:;" class="build-log-btn btn">' +
' <span class="tip shadow">构建日志</span>' +
' </a>' +
' <a href="javascript:;" class="download-btn btn">' +
' <span class="tip shadow short-tip">下载</span>' +
' </a>' +
' <a href="javascript:;" class="delete-btn btn">' +
' <span class="tip shadow short-tip">删除</span>' +
' </a>' +
' </span>';
}
}],
onColumnSwitch: function () {
$('.pagination-detail').css('display', 'none');
},
onLoadSuccess: function () { //加载成功时执行
console.info("加载成功");
$('.pagination-detail').css('display', 'none');
$('.btn-group ul').addClass('shadow');
$('.btn-group.keep-open button span').html('维度');
$('.btn-group.export button span').html('导出');
},
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
},
//>>>>>>>>>>>>>>导出excel表格设置
showExport: true, //是否显示导出按钮(此方法是自己写的目的是判断终端是电脑还是手机,电脑则返回true,手机返回falsee,手机不显示按钮)
exportDataType: "basic", //basic', 'all', 'selected'.
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'], //导出类型
//exportButton: $('#btn_export'), //为按钮btn_export 绑定导出事件 自定义导出按钮(可以不用)
exportOptions: {
//ignoreColumn: [0,0], //忽略某一列的索引
fileName: 'tableExport', //文件名称设置
worksheetName: 'Sheet1', //表格工作区名称
tableName: 'tableExport',
excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
//onMsoNumberFormat: DoOnMsoNumberFormat
}
//导出excel表格设置<<<<<<<<<<<<<<<<
});
});