(function () {
var simpleEntityName = 'httpRequestLog';
var entityName = 'HttpRequestLog';
var primaryKeyField = 'id';
var fieldMeta = dedupeFieldMeta([
{
field: 'name',
columnName: 'name',
label: 'URL',
tableProp: 'name',
exportField: 'name',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'request',
columnName: 'request',
label: '请求参数',
tableProp: 'request',
exportField: 'request',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'response',
columnName: 'response',
label: '响应参数',
tableProp: 'response',
exportField: 'response',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'createTime',
columnName: 'create_time',
label: '请求时间',
tableProp: 'createTime$',
exportField: 'createTime$',
kind: 'date',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 168,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'id',
columnName: 'id',
label: '#ID',
tableProp: 'id',
exportField: 'id',
kind: 'text',
valueType: 'number',
required: true,
primaryKey: true,
sortable: true,
textarea: false,
minWidth: 90,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: '1',
checkboxInactiveRaw: '0'
},
{
field: 'name',
columnName: 'name',
label: 'URL',
tableProp: 'name',
exportField: 'name',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'request',
columnName: 'request',
label: '请求参数',
tableProp: 'request',
exportField: 'request',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'response',
columnName: 'response',
label: '响应参数',
tableProp: 'response',
exportField: 'response',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'createTime',
columnName: 'create_time',
label: '请求时间',
tableProp: 'createTime$',
exportField: 'createTime$',
kind: 'date',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 168,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'result',
columnName: 'result',
label: '结果',
tableProp: 'result',
exportField: 'result',
kind: 'text',
valueType: 'number',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: '1',
checkboxInactiveRaw: '0'
},
{
field: 'name',
columnName: 'name',
label: 'URL',
tableProp: 'name',
exportField: 'name',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'request',
columnName: 'request',
label: '请求参数',
tableProp: 'request',
exportField: 'request',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'response',
columnName: 'response',
label: '响应参数',
tableProp: 'response',
exportField: 'response',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'createTime',
columnName: 'create_time',
label: '请求时间',
tableProp: 'createTime$',
exportField: 'createTime$',
kind: 'date',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 168,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'id',
columnName: 'id',
label: '#ID',
tableProp: 'id',
exportField: 'id',
kind: 'text',
valueType: 'number',
required: true,
primaryKey: true,
sortable: true,
textarea: false,
minWidth: 90,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: '1',
checkboxInactiveRaw: '0'
},
{
field: 'name',
columnName: 'name',
label: 'URL',
tableProp: 'name',
exportField: 'name',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'request',
columnName: 'request',
label: '请求参数',
tableProp: 'request',
exportField: 'request',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'response',
columnName: 'response',
label: '响应参数',
tableProp: 'response',
exportField: 'response',
kind: 'text',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: true,
minWidth: 180,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'createTime',
columnName: 'create_time',
label: '请求时间',
tableProp: 'createTime$',
exportField: 'createTime$',
kind: 'date',
valueType: 'string',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 168,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: 'Y',
checkboxInactiveRaw: 'N'
},
{
field: 'result',
columnName: 'result',
label: '结果',
tableProp: 'result',
exportField: 'result',
kind: 'text',
valueType: 'number',
required: false,
primaryKey: false,
sortable: false,
textarea: false,
minWidth: 110,
enumOptions: [],
foreignQuery: '',
checkboxActiveRaw: '1',
checkboxInactiveRaw: '0'
}
]);
function formatFieldLabel(field) {
var raw = field && field.label ? String(field.label).trim() : '';
if (raw) {
return raw;
}
raw = field && field.columnName ? field.columnName : (field && field.field ? field.field : '');
if (!raw) {
return '';
}
raw = String(raw)
.replace(/\$/g, '')
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')
.replace(/_/g, ' ')
.replace(/\s+/g, ' ')
.trim();
return raw.replace(/\b[a-z]/g, function (letter) {
return letter.toUpperCase();
});
}
function dedupeFieldMeta(list) {
var result = [];
var seen = {};
(list || []).forEach(function (field) {
if (!field || !field.field || seen[field.field]) {
return;
}
field.label = formatFieldLabel(field);
seen[field.field] = true;
result.push(field);
});
return result;
}
function isEmptyValue(value) {
return value === null || value === undefined || value === '';
}
function stringValue(value) {
return isEmptyValue(value) ? '' : String(value);
}
function valueOrDash(value) {
return isEmptyValue(value) ? '--' : value;
}
function normalizeOptionValue(field, rawValue) {
if (rawValue === null || rawValue === undefined) {
return null;
}
if (rawValue === '') {
return '';
}
if (field && field.valueType === 'number') {
var numberVal = Number(rawValue);
return isNaN(numberVal) ? rawValue : numberVal;
}
return String(rawValue);
}
function isSearchableField(field) {
return !!field && field.kind !== 'image' && !field.textarea;
}
function isSortableField(field) {
if (!field) {
return false;
}
if (field.primaryKey) {
return true;
}
return field.kind !== 'image' && !field.textarea && field.kind !== 'foreign';
}
function defaultFieldValue(field) {
if (field.primaryKey) {
return null;
}
if (field.kind === 'checkbox') {
return normalizeOptionValue(field, field.checkboxInactiveRaw);
}
return '';
}
function defaultSearchFieldValue(field) {
if (field.kind === 'date') {
return [];
}
if (field.kind === 'enum' || field.kind === 'checkbox') {
return null;
}
return '';
}
function createSearchDefaults() {
var result = {
condition: ''
};
fieldMeta.forEach(function (field) {
if (!isSearchableField(field)) {
return;
}
result[field.field] = defaultSearchFieldValue(field);
});
return result;
}
function createSearchDisplayDefaults() {
var result = {};
fieldMeta.forEach(function (field) {
if (field.kind === 'foreign' && isSearchableField(field)) {
result[field.field] = '';
}
});
return result;
}
function createDefaultVisibleColumnKeys() {
return fieldMeta.map(function (field) {
return field.field;
});
}
function createFormDefaults() {
var result = {};
fieldMeta.forEach(function (field) {
result[field.field] = defaultFieldValue(field);
});
return result;
}
function createDisplayDefaults() {
var result = {};
fieldMeta.forEach(function (field) {
if (field.kind === 'foreign') {
result[field.field] = '';
}
});
return result;
}
function createFormRules() {
var rules = {};
fieldMeta.forEach(function (field) {
if (field.primaryKey || !field.required) {
return;
}
rules[field.field] = [{
required: true,
message: (field.kind === 'date' || field.kind === 'enum' ? '请选择' : '请输入') + field.label,
trigger: (field.kind === 'date' || field.kind === 'enum') ? 'change' : 'blur'
}];
});
return rules;
}
function getTableValue(row, field) {
var prop = field.tableProp || field.field;
if (row && !isEmptyValue(row[prop])) {
return row[prop];
}
return row ? row[field.field] : '';
}
function isCheckboxChecked(row, field) {
var value = row ? row[field.field] : null;
var activeValue = normalizeOptionValue(field, field.checkboxActiveRaw);
return String(value) === String(activeValue);
}
function exportCell(value) {
return stringValue(value).replace(/\t/g, ' ').replace(/\r?\n/g, ' ');
}
function escapeHtml(value) {
return exportCell(value)
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
function buildPayload(form) {
var payload = {};
fieldMeta.forEach(function (field) {
var value = form[field.field];
if (field.primaryKey) {
if (!isEmptyValue(value)) {
payload[field.field] = value;
}
return;
}
if (field.kind === 'foreign' && isEmptyValue(value)) {
value = null;
}
if (field.kind === 'enum' && value === '') {
value = null;
}
if (field.kind === 'checkbox' && isEmptyValue(value)) {
value = normalizeOptionValue(field, field.checkboxInactiveRaw);
}
if (field.valueType === 'number' && !isEmptyValue(value)) {
value = Number(value);
}
if (field.valueType === 'number' && value === '') {
value = null;
}
payload[field.field] = value;
});
return payload;
}
function fillFormFromRow(row, form, display) {
fieldMeta.forEach(function (field) {
if (field.primaryKey) {
form[field.field] = row[field.field];
return;
}
if (field.kind === 'date') {
form[field.field] = row[field.tableProp] || row[field.field] || '';
return;
}
if (field.kind === 'foreign') {
form[field.field] = isEmptyValue(row[field.field]) ? '' : normalizeOptionValue(field, row[field.field]);
if (display) {
display[field.field] = row[field.tableProp] || (isEmptyValue(row[field.field]) ? '' : String(row[field.field]));
}
return;
}
if (field.kind === 'enum') {
form[field.field] = isEmptyValue(row[field.field]) ? '' : normalizeOptionValue(field, row[field.field]);
return;
}
if (field.kind === 'checkbox') {
form[field.field] = isEmptyValue(row[field.field])
? normalizeOptionValue(field, field.checkboxInactiveRaw)
: normalizeOptionValue(field, row[field.field]);
return;
}
form[field.field] = isEmptyValue(row[field.field])
? ''
: (field.valueType === 'number' ? String(row[field.field]) : row[field.field]);
});
}
function resolveSearchParam(field) {
if (field.kind === 'date' && field.columnName) {
return field.columnName;
}
return field.field;
}
function createDownloadFile(filename, titles, rows) {
var html = [
'',
'
',
titles.map(function (title) {
return '| ' + escapeHtml(title) + ' | ';
}).join(''),
'
',
(rows || []).map(function (row) {
return '' + (row || []).map(function (value) {
return '| ' + escapeHtml(value) + ' | ';
}).join('') + '
';
}).join(''),
'
'
].join('');
var blob = new Blob(['\ufeff' + html], {
type: 'application/vnd.ms-excel;charset=utf-8;'
});
var anchor = document.createElement('a');
anchor.href = URL.createObjectURL(blob);
anchor.download = filename;
document.body.appendChild(anchor);
anchor.click();
setTimeout(function () {
URL.revokeObjectURL(anchor.href);
document.body.removeChild(anchor);
}, 0);
}
function buildTimestamp() {
var now = new Date();
var pad = function (num) {
return num < 10 ? '0' + num : String(num);
};
return now.getFullYear()
+ pad(now.getMonth() + 1)
+ pad(now.getDate())
+ '_'
+ pad(now.getHours())
+ pad(now.getMinutes())
+ pad(now.getSeconds());
}
function authHeaders() {
return {
token: localStorage.getItem('token')
};
}
function handleForbidden(res) {
if (res && res.code === 403) {
top.location.href = baseUrl + '/';
return true;
}
return false;
}
var sharedMethods = {
authHeaders: authHeaders,
handleForbidden: handleForbidden,
valueOrDash: valueOrDash,
stringValue: stringValue,
getTableValue: getTableValue,
isCheckboxChecked: isCheckboxChecked,
normalizeOptionValue: normalizeOptionValue,
isSortableField: isSortableField,
getSuggestionFetcher: function (field) {
var self = this;
return function (queryString, callback) {
self.fetchForeignSuggestions(field, queryString, callback);
};
},
fetchForeignSuggestions: function (field, queryString, callback) {
if (!field.foreignQuery || !queryString) {
callback([]);
return;
}
var self = this;
$.ajax({
url: baseUrl + '/' + field.foreignQuery + 'Query/auth',
method: 'GET',
headers: self.authHeaders(),
data: { condition: queryString },
success: function (res) {
if (self.handleForbidden(res)) {
return;
}
if (!res || res.code !== 200 || !Array.isArray(res.data)) {
callback([]);
return;
}
callback(res.data.map(function (item) {
return {
id: item.id,
value: item.value
};
}));
},
error: function () {
callback([]);
}
});
},
handleForeignSelect: function (field, item) {
this.$set(this.displayTarget, field.field, item && item.value ? item.value : '');
this.$set(this.formTarget, field.field, item && item.id !== undefined ? normalizeOptionValue(field, item.id) : '');
},
handleForeignInput: function (field) {
if (!this.displayTarget || !this.formTarget) {
return;
}
if (this.displayTarget[field.field]) {
return;
}
this.$set(this.formTarget, field.field, '');
}
};
if (document.getElementById('app')) {
new Vue({
el: '#app',
data: function () {
return {
fieldMeta: fieldMeta,
primaryKeyField: primaryKeyField,
loading: false,
exporting: false,
tableData: [],
selection: [],
advancedFiltersVisible: false,
allColumns: fieldMeta.slice(),
visibleColumnKeys: createDefaultVisibleColumnKeys(),
searchForm: createSearchDefaults(),
searchDisplay: createSearchDisplayDefaults(),
page: {
curr: 1,
limit: 15,
total: 0
},
sortState: {
prop: '',
order: ''
},
dialog: {
visible: false,
mode: 'create',
submitting: false
},
layoutTimer: null,
tableResizeHandler: null,
dialogForm: createFormDefaults(),
dialogDisplay: createDisplayDefaults(),
dialogRules: createFormRules()
};
},
computed: {
searchableFields: function () {
return this.fieldMeta.filter(function (field) {
return isSearchableField(field);
});
},
quickSearchableFields: function () {
var result = [];
this.searchableFields.forEach(function (field) {
if (result.length >= 3 || field.kind === 'date') {
return;
}
result.push(field);
});
return result;
},
advancedSearchableFields: function () {
var quickKeys = this.quickSearchableFields.map(function (field) {
return field.field;
});
return this.searchableFields.filter(function (field) {
return quickKeys.indexOf(field.field) === -1;
});
},
hasAdvancedFilters: function () {
return this.advancedSearchableFields.length > 0;
},
visibleColumns: function () {
var keys = this.visibleColumnKeys;
return this.allColumns.filter(function (field) {
return keys.indexOf(field.field) !== -1;
});
},
editableFields: function () {
return this.fieldMeta.filter(function (field) {
return !field.primaryKey;
});
},
exportColumns: function () {
return this.visibleColumns.map(function (field) {
return {
field: field.exportField || field.tableProp || field.field,
label: field.label
};
});
},
tableHeight: function () {
return this.advancedFiltersVisible && this.hasAdvancedFilters
? 'calc(100vh - 390px)'
: 'calc(100vh - 300px)';
},
formTarget: function () {
return this.dialogForm;
},
displayTarget: function () {
return this.dialogDisplay;
}
},
created: function () {
this.loadTable();
},
mounted: function () {
var self = this;
self.requestTableLayout(80);
self.tableResizeHandler = function () {
self.requestTableLayout(80);
};
window.addEventListener('resize', self.tableResizeHandler);
},
beforeDestroy: function () {
if (this.layoutTimer) {
clearTimeout(this.layoutTimer);
this.layoutTimer = null;
}
if (this.tableResizeHandler) {
window.removeEventListener('resize', this.tableResizeHandler);
this.tableResizeHandler = null;
}
},
methods: $.extend({}, sharedMethods, {
requestTableLayout: function (delay) {
var self = this;
if (self.layoutTimer) {
clearTimeout(self.layoutTimer);
}
self.$nextTick(function () {
self.layoutTimer = setTimeout(function () {
var table = self.$refs.dataTable;
if (table && typeof table.doLayout === 'function') {
table.doLayout();
}
}, delay || 40);
});
},
isColumnVisible: function (fieldName) {
return this.visibleColumnKeys.indexOf(fieldName) !== -1;
},
toggleColumn: function (fieldName, visible) {
if (visible) {
if (this.visibleColumnKeys.indexOf(fieldName) === -1) {
this.visibleColumnKeys.push(fieldName);
}
this.requestTableLayout(80);
return;
}
if (this.visibleColumnKeys.length === 1) {
this.$message.warning('至少保留一列');
return;
}
this.visibleColumnKeys = this.visibleColumnKeys.filter(function (item) {
return item !== fieldName;
});
this.requestTableLayout(80);
},
selectAllColumns: function () {
this.visibleColumnKeys = createDefaultVisibleColumnKeys();
this.requestTableLayout(80);
},
resetColumns: function () {
this.visibleColumnKeys = createDefaultVisibleColumnKeys();
this.requestTableLayout(80);
},
toggleAdvancedFilters: function () {
this.advancedFiltersVisible = !this.advancedFiltersVisible;
this.requestTableLayout(260);
},
handleSearchForeignSelect: function (field, item) {
this.$set(this.searchDisplay, field.field, item && item.value ? item.value : '');
this.$set(this.searchForm, field.field, item && item.id !== undefined ? normalizeOptionValue(field, item.id) : '');
},
handleSearchForeignInput: function (field) {
if (this.searchDisplay[field.field]) {
return;
}
this.$set(this.searchForm, field.field, '');
},
buildQueryParams: function () {
var self = this;
var params = {
curr: self.page.curr,
limit: self.page.limit
};
if (self.searchForm.condition) {
params.condition = self.searchForm.condition;
}
self.searchableFields.forEach(function (field) {
var value = self.searchForm[field.field];
if (field.kind === 'date') {
if (value && value.length === 2) {
params[resolveSearchParam(field)] = value[0] + ' - ' + value[1];
}
return;
}
if (!isEmptyValue(value)) {
params[resolveSearchParam(field)] = value;
}
});
if (self.sortState.prop && self.sortState.order) {
params.orderByField = self.sortState.prop;
params.orderByType = self.sortState.order === 'ascending' ? 'asc' : 'desc';
}
return params;
},
loadTable: function () {
var self = this;
self.loading = true;
$.ajax({
url: baseUrl + '/' + simpleEntityName + '/list/auth',
method: 'GET',
headers: self.authHeaders(),
data: self.buildQueryParams(),
success: function (res) {
self.loading = false;
if (self.handleForbidden(res)) {
return;
}
if (!res || res.code !== 200) {
self.$message.error((res && res.msg) ? res.msg : '加载失败');
return;
}
var payload = res.data || {};
self.tableData = Array.isArray(payload.records) ? payload.records : [];
self.page.total = payload.total || 0;
self.requestTableLayout(80);
},
error: function () {
self.loading = false;
self.requestTableLayout(80);
self.$message.error('加载失败');
}
});
},
handleSearch: function () {
this.page.curr = 1;
this.loadTable();
},
handleReset: function () {
this.searchForm = createSearchDefaults();
this.searchDisplay = createSearchDisplayDefaults();
this.advancedFiltersVisible = false;
this.page.curr = 1;
this.sortState = {
prop: '',
order: ''
};
this.loadTable();
},
handleSelectionChange: function (rows) {
this.selection = rows || [];
},
handleSortChange: function (payload) {
this.sortState = {
prop: payload && payload.prop ? payload.prop : '',
order: payload && payload.order ? payload.order : ''
};
this.page.curr = 1;
this.loadTable();
},
handleCurrentChange: function (curr) {
this.page.curr = curr;
this.loadTable();
},
handleSizeChange: function (limit) {
this.page.limit = limit;
this.page.curr = 1;
this.loadTable();
},
resetDialogState: function () {
this.dialogForm = createFormDefaults();
this.dialogDisplay = createDisplayDefaults();
if (this.$refs.dialogForm) {
this.$refs.dialogForm.clearValidate();
}
},
openCreateDialog: function () {
this.dialog.mode = 'create';
this.dialog.visible = true;
this.$nextTick(this.resetDialogState);
},
openEditDialog: function (row) {
var self = this;
self.dialog.mode = 'edit';
self.dialog.visible = true;
self.$nextTick(function () {
self.resetDialogState();
fillFormFromRow(row, self.dialogForm, self.dialogDisplay);
if (self.$refs.dialogForm) {
self.$refs.dialogForm.clearValidate();
}
});
},
submitDialog: function () {
var self = this;
if (!self.$refs.dialogForm) {
return;
}
self.$refs.dialogForm.validate(function (valid) {
if (!valid) {
return false;
}
self.dialog.submitting = true;
$.ajax({
url: baseUrl + '/' + simpleEntityName + '/' + (self.dialog.mode === 'create' ? 'add' : 'update') + '/auth',
method: 'POST',
headers: self.authHeaders(),
data: buildPayload(self.dialogForm),
success: function (res) {
self.dialog.submitting = false;
if (self.handleForbidden(res)) {
return;
}
if (!res || res.code !== 200) {
self.$message.error((res && res.msg) ? res.msg : '保存失败');
return;
}
self.$message.success(res.msg || '保存成功');
self.dialog.visible = false;
self.loadTable();
},
error: function () {
self.dialog.submitting = false;
self.$message.error('保存失败');
}
});
return true;
});
},
removeSelection: function () {
var self = this;
var ids = self.selection.map(function (row) {
return row[self.primaryKeyField];
});
self.removeRows(ids);
},
removeRows: function (ids) {
var self = this;
if (!ids || ids.length === 0) {
self.$message.warning('请选择要删除的数据');
return;
}
self.$confirm('确定删除选中的记录吗?', '提示', { type: 'warning' }).then(function () {
$.ajax({
url: baseUrl + '/' + simpleEntityName + '/delete/auth',
method: 'POST',
headers: self.authHeaders(),
traditional: true,
data: { 'ids[]': ids },
success: function (res) {
if (self.handleForbidden(res)) {
return;
}
if (!res || res.code !== 200) {
self.$message.error((res && res.msg) ? res.msg : '删除失败');
return;
}
self.$message.success(res.msg || '删除成功');
self.selection = [];
if (self.tableData.length === ids.length && self.page.curr > 1) {
self.page.curr = self.page.curr - 1;
}
self.loadTable();
},
error: function () {
self.$message.error('删除失败');
}
});
}).catch(function () {});
},
exportRows: function () {
var self = this;
self.exporting = true;
var requestBody = {
fields: self.exportColumns.map(function (item) {
return item.field;
})
};
requestBody[simpleEntityName] = self.buildQueryParams();
$.ajax({
url: baseUrl + '/' + simpleEntityName + '/export/auth',
method: 'POST',
headers: $.extend({ 'Content-Type': 'application/json;charset=UTF-8' }, self.authHeaders()),
data: JSON.stringify(requestBody),
success: function (res) {
self.exporting = false;
if (self.handleForbidden(res)) {
return;
}
if (!res || res.code !== 200) {
self.$message.error((res && res.msg) ? res.msg : '导出失败');
return;
}
createDownloadFile(
simpleEntityName + '_' + buildTimestamp() + '.xls',
self.exportColumns.map(function (item) {
return item.label;
}),
Array.isArray(res.data) ? res.data : []
);
self.$message.success('导出成功');
},
error: function () {
self.exporting = false;
self.$message.error('导出失败');
}
});
}
})
});
}
})();