文件
chengduzhongchuliang/public/assets/js/backend/general/file.js

363 行
16 KiB
JavaScript

define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
let vue = new Vue({
el: '#vue',
data: {
uploadLoading: '',
uploadData: {},
navList: [],
// 表格当前页数据
tableData: [],
// 多选数组
multipleSelection: [],
// 搜索条件
key: '',
// 默认每页数据量
pageSize: 10,
// 当前页码
currentPage: 1,
// 默认数据总数
totalCount: 0,
// 列表加载遮罩
listLoading: false,
// 搜索字段
search: {
startTime: '',
endTime: '',
keyword: '',
type: '',
sort: 'id',
typeIndex: '',
category: '',
nav: '',
order: 'id DESC'
},
// 类型
typeList: [{
index: 1,
name: '图片',
key: 'image/'
}, {
index: 2,
name: '音频',
key: 'audio/'
}, {
index: 3,
name: '视频',
key: 'video/'
}, {
index: 4,
name: '文档',
key: 'text/'
}, {
index: 5,
name: '应用',
key: 'application/'
}, {
index: 6,
name: '压缩包',
key: 'zip/'
}],
searchOpt: [{
id: 1,
value: '文件名'
}],
sendStartTime: '',
sendEndTime: '',
navDialog: false,
formData: {
nav: ''
},
// 时间格式化
dateFormat: function (row, column) {
var date = row[column.property];
if (date === undefined || date === 0) {
return '';
}
return moment(date * 1000).format("YYYY-MM-DD HH:mm:ss");
}
},
created() {
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
methods: {
// 打开归类
handleNavDialog() {
if (this.multipleSelection.length === 0) {
this.$message.warning('请选择至少一个附件进行归类!');
return;
}
this.formData = {
nav: ''
};
this.navDialog = true;
},
// 提交
submitNav() {
if (this.formData.nav === '') {
this.$message.warning('请您选择分类!');
return;
}
// 提交
let loading = this.$loading({
lock: true,
text: '正在归类中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.3)'
});
var array = [];
this.multipleSelection.forEach((row) => {
array.push(row.id);
});
this.formData.ids = array;
$.ajax({
url: 'general/file/nav',
type: 'POST',
data: this.formData,
success: res => {
loading.close();
if (res.code === 200) {
this.$message.success(res.msg);
this.navDialog = false;
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
} else {
this.$message.warning(res.msg);
}
}
})
},
// 上传前
beforeFileUpload(file) {
// 文件大小验证
if (file.size / 1024 / 1024 > 10) {
this.$message.warning('上传的图片大小不能超过10M');
return false;
}
this.uploadLoading = this.$loading({
lock: true,
text: '正在上传中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.1)'
});
},
// 上传成功后
uploadFileSuccess(res, file, fileList) {
if (res.code === 1) {
this.uploadLoading.close();
this.$message.success(res.msg);
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
} else {
this.$message.warning(res.msg);
}
},
handleClearSelect(field) {
// 重新加载
this.$set(this.search, field, '');
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
handleClearSearchInp() {
if (this.search.type) {
// 重新加载
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
}
},
// 刷新页面
refreshPage() {
this.search = {
startTime: '',
endTime: '',
keyword: '',
type: '',
sort: 'id',
category: '',
typeIndex: '',
nav: '',
order: 'id DESC'
};
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 打开分类管理
handleOpenNav() {
Fast.api.open("general/nav/index", '分类管理', {
area: ['1200px', '720px'],
callback: res => {
}
});
},
// 选择图片
selectImage() {
Fast.api.open("general/attachment/select?multiple=false", '选择图片', {
callback: res => {
this.$set(this.formData, 'image', res.url);
}
});
},
// 从服务器读取数据
loadData(key, currentPage, pageSize, order) {
this.listLoading = true;
$.getJSON('general/file/index', {
keyword: key,
type: this.search.type,
status: this.search.status,
nav: this.search.nav,
start_time: this.sendStartTime,
end_time: this.sendEndTime,
category: this.search.category,
mimetype: this.search.typeIndex > 0 ? this.typeList[this.search.typeIndex - 1].key :'',
page: currentPage,
rows: pageSize,
order,
}, data => {
this.totalCount = data.total;
this.tableData = data.list;
this.navList = data.navList;
this.listLoading = false;
});
},
handleNavChange(e) {
if (e.length === 0) {
// 重新加载
this.$set(this.search, 'nav', '');
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
}
},
handleSelectCategory(index) {
for (let item of this.categoryOpt) {
item.selected = false;
}
this.categoryOpt[index].selected = true;
this.search.category = this.categoryOpt[index].category === 'all' ? '' : this.categoryOpt[index].category;
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 表格字段排序
handleTableFieldSort(e) {
let orderBy = e.order === 'ascending' ? 'ASC' : 'DESC';
this.search.order = `${e.prop} ${orderBy}`;
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 搜索
searchData() {
this.sendStartTime = this.search.startTime !== '' ? +this.search.startTime / 1000 : '';
this.sendEndTime = this.search.endTime !== '' ? +this.search.endTime / 1000 : '';
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 每页显示数据量变更
handleSizeChange(val) {
this.pageSize = val;
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 页码变更
handleCurrentChange(val) {
this.currentPage = val;
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
},
// 多选响应
handleSelectionChange(val) {
this.multipleSelection = val;
},
// 批量删除
del() {
if (this.multipleSelection.length === 0) {
this.$message.warning('请选择至少一个附件进行删除!');
return;
}
var array = [];
this.multipleSelection.forEach((row) => {
array.push(row.id);
});
this.$confirm('您确定要删除所选的附件吗?', '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let loading = this.$loading({
lock: true,
text: '正在删除中..',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.3)'
});
$.ajax({
url: 'general/attachment/del',
data: "ids=" + array,
type: "POST",
dataType: 'json',
success: res => {
loading.close();
if (res.code === 1) {
this.$message.success('删除附件成功');
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
} else {
this.$message.warning(res.msg);
}
},
error: function (er) {
}
});
}).catch(() => {
});
},
// 单条删除
dell(id) {
this.$confirm('您确定要删除此附件吗?', '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let loading = this.$loading({
lock: true,
text: '正在删除中..',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.3)'
});
$.ajax({
url: 'general/attachment/del',
data: {
ids: id
},
type: "POST",
dataType: 'json',
success: res => {
loading.close();
if (res.code === 1) {
this.$message.success('删除附件成功');
this.loadData(this.search.keyword, this.currentPage, this.pageSize, this.search.order);
} else {
this.$message.warning(res.msg);
}
},
error: function (er) {
}
});
}).catch(() => {
});
},
}
})
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});