tianyi 3 weeks ago
parent
commit
320075660a
  1. 2251
      src/views/sys/file/file.vue
  2. 756
      src/views/sys/file/fileCategory.vue
  3. 762
      src/views/sys/file/trash.vue
  4. 102
      src/views/sys/upApp/upApp.vue

2251
src/views/sys/file/file.vue

File diff suppressed because it is too large

756
src/views/sys/file/fileCategory.vue

@ -1,414 +1,368 @@
<template> <template>
<div> <div>
<Row class="operation" v-if="!showOnly"> <Row class="operation" v-if="!showOnly">
<Button @click="add" type="primary" icon="md-add">添加文件夹</Button> <Button @click="add" type="primary" icon="md-add">添加文件夹</Button>
<Dropdown @on-click="handleTreeDropdown"> <Dropdown @on-click="handleTreeDropdown">
<Button> <Button>
更多操作 更多操作
<Icon type="md-arrow-dropdown" /> <Icon type="md-arrow-dropdown" />
</Button> </Button>
<DropdownMenu slot="list"> <DropdownMenu slot="list">
<DropdownItem <DropdownItem name="edit" :disabled="selectNode.id == 0 || selectNode.id == -1">编辑文件夹</DropdownItem>
name="edit" <DropdownItem name="del" :disabled="selectNode.id == 0 || selectNode.id == -1">删除文件夹</DropdownItem>
:disabled="selectNode.id == 0 || selectNode.id == -1" <DropdownItem name="refresh">刷新</DropdownItem>
>编辑文件夹</DropdownItem </DropdownMenu>
> </Dropdown>
<DropdownItem </Row>
name="del" <Alert show-icon v-if="!showOnly">
:disabled="selectNode.id == 0 || selectNode.id == -1" 当前选择
>删除文件夹</DropdownItem <span class="select-title">{{ editTitle }}</span>
> <a class="select-clear" v-if="editTitle && selectNode.id != '0'" @click="cancelEdit">取消选择</a>
<DropdownItem name="refresh">刷新</DropdownItem> </Alert>
</DropdownMenu> <Input v-model="searchKey" suffix="ios-search" @on-change="search" placeholder="输入搜索文件夹名称" clearable />
</Dropdown> <div style="position: relative">
</Row> <div class="tree-bar" :style="{ maxHeight: maxHeight }">
<Alert show-icon v-if="!showOnly"> <Tree ref="tree" :data="data" :load-data="loadData" :render="renderContent"
当前选择 @on-check-change="changeSelect" @on-select-change="selectTree"></Tree>
<span class="select-title">{{ editTitle }}</span> </div>
<a <Spin size="large" fix v-if="loading"></Spin>
class="select-clear" </div>
v-if="editTitle && selectNode.id != '0'"
@click="cancelEdit"
>取消选择</a
>
</Alert>
<Input
v-model="searchKey"
suffix="ios-search"
@on-change="search"
placeholder="输入搜索文件夹名称"
clearable
/>
<div style="position: relative">
<div class="tree-bar" :style="{ maxHeight: maxHeight }">
<Tree
ref="tree"
:data="data"
:load-data="loadData"
:render="renderContent"
@on-check-change="changeSelect"
@on-select-change="selectTree"
></Tree>
</div>
<Spin size="large" fix v-if="loading"></Spin>
</div>
<Modal <Modal :title="modalTitle" v-model="modalVisible" :mask-closable="false" :width="500">
:title="modalTitle" <Form ref="form" :model="form" :label-width="85" :rules="formValidate">
v-model="modalVisible" <FormItem label="上级节点:">{{ form.parentTitle }}
:mask-closable="false" <Tooltip :content="
:width="500"
>
<Form ref="form" :model="form" :label-width="85" :rules="formValidate">
<FormItem label="上级节点:"
>{{ form.parentTitle }}
<Tooltip
:content="
selectNode.id == '0' selectNode.id == '0'
? '若需添加子目录,请先点击选择一个文件夹' ? '若需添加子目录,请先点击选择一个文件夹'
: '若需添加一级目录,请先取消选择当前文目录' : '若需添加一级目录,请先取消选择当前文目录'
" " placement="right" transfer max-width="290" style="display: inline-block !important">
placement="right" <Icon type="md-help-circle" size="20" color="#c5c5c5"
transfer style="margin-left: 10px; cursor: pointer" />
max-width="290" </Tooltip>
style="display: inline-block !important" </FormItem>
> <FormItem label="文件夹名" prop="title">
<Icon <Input v-model="form.title" />
type="md-help-circle" </FormItem>
size="20" <FormItem label="排序值" prop="sortOrder">
color="#c5c5c5" <Tooltip trigger="hover" placement="right" content="值越小越靠前,支持小数">
style="margin-left: 10px; cursor: pointer" <InputNumber :max="1000" :min="0" v-model="form.sortOrder"></InputNumber>
/> </Tooltip>
</Tooltip> </FormItem>
</FormItem> </Form>
<FormItem label="文件夹名" prop="title"> <div slot="footer">
<Input v-model="form.title" /> <Button type="text" @click="modalVisible = false">取消</Button>
</FormItem> <Button type="primary" :loading="submitLoading" @click="handelSubmit">提交</Button>
<FormItem label="排序值" prop="sortOrder"> </div>
<Tooltip </Modal>
trigger="hover" </div>
placement="right"
content="值越小越靠前,支持小数"
>
<InputNumber
:max="1000"
:min="0"
v-model="form.sortOrder"
></InputNumber>
</Tooltip>
</FormItem>
</Form>
<div slot="footer">
<Button type="text" @click="modalVisible = false">取消</Button>
<Button type="primary" :loading="submitLoading" @click="handelSubmit"
>提交</Button
>
</div>
</Modal>
</div>
</template> </template>
<script> <script>
import { import {
getFileCate, getFileCate,
addFileCate, addFileCate,
editFileCate, editFileCate,
trashFileCate, trashFileCate,
searchFileCate, searchFileCate,
} from "@/api/index"; } from "@/api/index";
export default { export default {
name: "fileCategory", name: "fileCategory",
props: { props: {
showOnly: { showOnly: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
}, },
data() { data() {
return { return {
loading: false, // loading: false, //
maxHeight: "500px", maxHeight: "500px",
searchKey: "", // searchKey: "", //
selectNode: {}, selectNode: {},
selectList: [], // selectList: [], //
modalVisible: false, modalVisible: false,
modalTitle: "", modalTitle: "",
editTitle: "", editTitle: "",
submitLoading: false, submitLoading: false,
form: { form: {
title: "", title: "",
sortOrder: 0, sortOrder: 0,
parentId: 0, parentId: 0,
}, },
formValidate: { formValidate: {
// //
title: [{ required: true, message: "请输入", trigger: "blur" }], title: [{
sortOrder: [ required: true,
{ message: "请输入",
required: true, trigger: "blur"
type: "number", }],
message: "请输入排序值", sortOrder: [{
trigger: "change", required: true,
}, type: "number",
], message: "请输入排序值",
}, trigger: "change",
data: [], }, ],
editData: {}, },
}; data: [],
}, editData: {},
methods: { };
init() { },
this.getParentList(); methods: {
this.editTitle = "未归档"; init() {
this.selectNode = { this.getParentList();
id: "0", this.editTitle = "未归档";
title: "未归档", this.selectNode = {
}; id: "0",
this.$emit("on-select", this.selectNode); title: "未归档",
}, };
renderContent(h, { root, node, data }) { this.$emit("on-select", this.selectNode);
let icon = "md-folder-open"; },
if (data.id == "0") { renderContent(h, {
icon = "md-pricetags"; root,
} else if (data.id == "-1") { node,
icon = "md-star-outline"; data
} }) {
return h("span", [ let icon = "md-folder-open";
h( if (data.id == "0") {
"span", icon = "md-pricetags";
} else if (data.id == "-1") {
icon = "md-star-outline";
}
return h("span", [
h(
"span",
[ [
h("Icon", { h("Icon", {
props: { props: {
type: icon, type: icon,
size: 16, size: 16,
}, },
style: { style: {
"margin-right": "8px", "margin-right": "8px",
}, },
}), }),
h("span", data.title), h("span", data.title),
] ]
), ),
]); ]);
}, },
getParentList() { getParentList() {
this.loading = true; this.loading = true;
let param = { let param = {
parentId: 0, parentId: 0,
delFlag: 0, delFlag: 0,
}; };
getFileCate(param).then((res) => { getFileCate(param).then((res) => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
res.result.forEach(function (e) { res.result.forEach(function(e) {
if (e.isParent) { if (e.isParent) {
e.loading = false; e.loading = false;
e.children = []; e.children = [];
e._loading = false; e._loading = false;
} }
}); });
this.data = res.result; this.data = res.result;
this.data.unshift( this.data.unshift({
{ id: "0",
id: "0", title: "未归档",
title: "未归档", selected: true,
selected: true, }, {
}, id: "-1",
{ title: "收藏夹",
id: "-1", selected: false,
title: "收藏夹", });
selected: false, }
} });
); },
} loadData(item, callback) {
}); let param = {
}, parentId: item.id,
loadData(item, callback) { delFlag: 0,
let param = { };
parentId: item.id, getFileCate(param).then((res) => {
delFlag: 0, if (res.success) {
}; res.result.forEach(function(e) {
getFileCate(param).then((res) => { if (e.isParent) {
if (res.success) { e.loading = false;
res.result.forEach(function (e) { e.children = [];
if (e.isParent) { e._loading = false;
e.loading = false; }
e.children = []; });
e._loading = false; callback(res.result);
} }
}); });
callback(res.result); },
} search() {
}); //
}, if (this.searchKey) {
search() { this.loading = true;
// searchFileCate({
if (this.searchKey) { title: this.searchKey
this.loading = true; }).then((res) => {
searchFileCate({ title: this.searchKey }).then((res) => { this.loading = false;
this.loading = false; if (res.success) {
if (res.success) { this.data = res.result;
this.data = res.result; }
} });
}); } else {
} else { //
// this.getParentList();
this.getParentList(); }
} },
}, selectTree(v) {
selectTree(v) { if (v.length > 0) {
if (v.length > 0) { this.$refs.form.resetFields();
this.$refs.form.resetFields(); // null""
// null"" for (let attr in v[0]) {
for (let attr in v[0]) { if (v[0][attr] == null) {
if (v[0][attr] == null) { v[0][attr] = "";
v[0][attr] = ""; }
} }
} let str = JSON.stringify(v[0]);
let str = JSON.stringify(v[0]); let data = JSON.parse(str);
let data = JSON.parse(str); this.selectNode = data;
this.selectNode = data; this.form = data;
this.form = data; this.editData = data;
this.editData = data; this.editTitle = data.title;
this.editTitle = data.title; this.$emit("on-select", this.selectNode);
this.$emit("on-select", this.selectNode); } else {
} else { this.cancelEdit();
this.cancelEdit(); }
} },
}, cancelEdit() {
cancelEdit() { if (this.selectNode.id == "0") {
if (this.selectNode.id == "0") { this.data[0].selected = true;
this.data[0].selected = true; return;
return; }
} let data = this.$refs.tree.getSelectedNodes()[0];
let data = this.$refs.tree.getSelectedNodes()[0]; if (data) {
if (data) { data.selected = false;
data.selected = false; }
} this.$refs.form.resetFields();
this.$refs.form.resetFields(); this.editData = {};
this.editData = {}; //
// this.selectNode = {
this.selectNode = { id: "0",
id: "0", title: "未归档",
title: "未归档", };
}; this.editTitle = "未归档";
this.editTitle = "未归档"; this.data[0].selected = true;
this.data[0].selected = true; this.$emit("on-select", this.selectNode);
this.$emit("on-select", this.selectNode); },
}, changeSelect(v) {
changeSelect(v) { this.selectList = v;
this.selectList = v; },
}, handleTreeDropdown(name) {
handleTreeDropdown(name) { if (name == "edit") {
if (name == "edit") { this.edit();
this.edit(); } else if (name == "del") {
} else if (name == "del") { this.del();
this.del(); } else if (name == "refresh") {
} else if (name == "refresh") { this.init();
this.init(); }
} },
}, add() {
add() { this.modalType = 0;
this.modalType = 0; if (this.selectNode.id == "0" || this.selectNode.id == "-1") {
if (this.selectNode.id == "0" || this.selectNode.id == "-1") { //
// this.modalTitle = "添加一级文件夹";
this.modalTitle = "添加一级文件夹"; this.form = {
this.form = { parentId: "0",
parentId: "0", parentTitle: "一级目录",
parentTitle: "一级目录", sortOrder: this.data.length + 1,
sortOrder: this.data.length + 1, };
}; } else {
} else { //
// this.modalTitle = "添加子文件夹";
this.modalTitle = "添加子文件夹"; if (!this.form.children) {
if (!this.form.children) { this.form.children = [];
this.form.children = []; }
} this.form = {
this.form = { parentId: this.selectNode.id,
parentId: this.selectNode.id, parentTitle: this.selectNode.title,
parentTitle: this.selectNode.title, sortOrder: this.form.children.length + 1,
sortOrder: this.form.children.length + 1, };
}; }
} this.modalVisible = true;
this.modalVisible = true; },
}, edit() {
edit() { if (this.selectNode.id == "0" || this.selectNode.id == "-1") {
if (this.selectNode.id == "0" || this.selectNode.id == "-1") { this.$Message.warning("您还未选择要编辑的文件夹");
this.$Message.warning("您还未选择要编辑的文件夹"); return;
return; }
} if (this.editData) {
if (this.editData) { this.form = this.editData;
this.form = this.editData; }
} this.modalType = 1;
this.modalType = 1; this.modalTitle = "编辑文件夹";
this.modalTitle = "编辑文件夹"; this.modalVisible = true;
this.modalVisible = true; },
}, handelSubmit() {
handelSubmit() { this.$refs.form.validate((valid) => {
this.$refs.form.validate((valid) => { if (valid) {
if (valid) { this.submitLoading = true;
this.submitLoading = true; if (this.modalType == 0) {
if (this.modalType == 0) { // id
// id delete this.form.id;
delete this.form.id; addFileCate(this.form).then((res) => {
addFileCate(this.form).then((res) => { this.submitLoading = false;
this.submitLoading = false; if (res.success) {
if (res.success) { this.$Message.success("操作成功");
this.$Message.success("操作成功"); this.getParentList();
this.getParentList(); this.modalVisible = false;
this.modalVisible = false; }
} });
}); } else if (this.modalType == 1) {
} else if (this.modalType == 1) { //
// editFileCate(this.form).then((res) => {
editFileCate(this.form).then((res) => { this.submitLoading = false;
this.submitLoading = false; if (res.success) {
if (res.success) { this.editTitle = this.form.title;
this.editTitle = this.form.title; this.$Message.success("操作成功");
this.$Message.success("操作成功"); this.getParentList();
this.getParentList(); this.modalVisible = false;
this.modalVisible = false; }
} });
}); }
} }
} });
}); },
}, del() {
del() { if (this.selectNode.id == "0" || this.selectNode.id == "-1") {
if (this.selectNode.id == "0" || this.selectNode.id == "-1") { this.$Message.warning("您还未选择要删除的文件夹");
this.$Message.warning("您还未选择要删除的文件夹"); return;
return; }
} this.$Modal.confirm({
this.$Modal.confirm({ title: "确认删除",
title: "确认删除", loading: true,
loading: true, content: "您确认要将文件夹 " +
content: this.selectNode.title +
"您确认要将文件夹 " + " 及其所有文件移入回收站, 7天内后自动彻底删除",
this.selectNode.title + onOk: () => {
" 及其所有文件移入回收站, 7天内后自动彻底删除", //
onOk: () => { trashFileCate({
// id: this.selectNode.id
trashFileCate({ id: this.selectNode.id }).then((res) => { }).then((res) => {
this.$Modal.remove(); this.$Modal.remove();
if (res.success) { if (res.success) {
this.$Message.success("操作成功"); this.$Message.success("操作成功");
this.init(); this.init();
} }
}); });
}, },
}); });
}, },
}, },
mounted() { mounted() {
// //
let height = document.documentElement.clientHeight; let height = document.documentElement.clientHeight;
this.maxHeight = Number(height - 287) + "px"; this.maxHeight = Number(height - 287) + "px";
this.init(); this.init();
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
</style> </style>

762
src/views/sys/file/trash.vue

@ -1,403 +1,373 @@
<style lang="less"> <style lang="less">
@import "@/styles/single-common.less"; @import "@/styles/single-common.less";
</style> </style>
<template> <template>
<div> <div>
<Card> <Card>
<div slot="title"> <div slot="title">
<div class="edit-head"> <div class="edit-head">
<a @click="close" class="back-title"> <a @click="close" class="back-title">
<Icon type="ios-arrow-back" />返回 <Icon type="ios-arrow-back" />返回
</a> </a>
<div class="head-name">回收站</div> <div class="head-name">回收站</div>
<span></span> <span></span>
<a @click="close" class="window-close"> <a @click="close" class="window-close">
<Icon type="ios-close" size="31" class="ivu-icon-ios-close" /> <Icon type="ios-close" size="31" class="ivu-icon-ios-close" />
</a> </a>
</div> </div>
</div> </div>
<Row class="operation" align="middle" justify="space-between"> <Row class="operation" align="middle" justify="space-between">
<div class="br"> <div class="br">
<Button @click="clear" type="error" icon="md-trash" <Button @click="clear" type="error" icon="md-trash">清空回收站</Button>
>清空回收站</Button <Input v-model="searchForm.title" suffix="ios-search" @on-change="getDataList" placeholder="输入文件名搜索"
> clearable style="width: 250px" />
<Input </div>
v-model="searchForm.title" <div class="icons">
suffix="ios-search" <Tooltip content="刷新" placement="top" transfer>
@on-change="getDataList" <Icon type="md-refresh" size="18" class="item" @click="getDataList" />
placeholder="输入文件名搜索" </Tooltip>
clearable <Tooltip :content="openTip ? '关闭提示' : '开启提示'" placement="top" transfer>
style="width: 250px" <Icon type="md-bulb" size="18" class="item tip" @click="openTip = !openTip" />
/> </Tooltip>
</div> </div>
<div class="icons"> </Row>
<Tooltip content="刷新" placement="top" transfer> <Alert show-icon v-show="openTip">
<Icon 已选择
type="md-refresh" <span class="select-count">{{ selectList.length }}</span>
size="18" <a class="select-clear" @click="clearSelectAll">清空</a>
class="item" </Alert>
@click="getDataList" <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"
/> @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
</Tooltip> <Row type="flex" justify="end" class="page">
<Tooltip <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
:content="openTip ? '关闭提示' : '开启提示'" @on-change="changePage" size="small" show-total show-elevator></Page>
placement="top" </Row>
transfer </Card>
> </div>
<Icon
type="md-bulb"
size="18"
class="item tip"
@click="openTip = !openTip"
/>
</Tooltip>
</div>
</Row>
<Alert show-icon v-show="openTip">
已选择
<span class="select-count">{{ selectList.length }}</span>
<a class="select-clear" @click="clearSelectAll">清空</a>
</Alert>
<Table
:loading="loading"
border
:columns="columns"
:data="data"
ref="table"
sortable="custom"
@on-sort-change="changeSort"
@on-selection-change="changeSelect"
></Table>
<Row type="flex" justify="end" class="page">
<Page
:current="searchForm.pageNumber"
:total="total"
:page-size="searchForm.pageSize"
@on-change="changePage"
size="small"
show-total
show-elevator
></Page>
</Row>
</Card>
</div>
</template> </template>
<script> <script>
import { import {
getFileCate, getFileCate,
getUserFileListData, getUserFileListData,
trashFileCate, trashFileCate,
trashFile, trashFile,
deleteUserFile, deleteUserFile,
clearTrashFile, clearTrashFile,
deleteFileCate, deleteFileCate,
clearTrashFileCate, clearTrashFileCate,
} from "@/api/index"; } from "@/api/index";
import { vi } from "date-fns/locale"; import {
export default { vi
name: "trash", } from "date-fns/locale";
data() { export default {
return { name: "trash",
loading: false, data() {
openTip: true, return {
selectList: [], loading: false,
searchForm: { openTip: true,
// data selectList: [],
title: "", searchForm: {
pageNumber: 1, // // data
pageSize: 10, // title: "",
sort: "updateTime", // pageNumber: 1, //
order: "desc", // pageSize: 10, //
delFlag: 2, sort: "updateTime", //
}, order: "desc", //
columns: [ delFlag: 2,
// },
{ columns: [
type: "selection", //
width: 60, {
align: "center", type: "selection",
}, width: 60,
{ align: "center",
type: "index", },
width: 60, {
align: "center", type: "index",
}, width: 60,
{ align: "center",
title: "文件名", },
key: "title", {
minWidth: 150, title: "文件名",
sortable: true, key: "title",
render: (h, params) => { minWidth: 150,
return h( sortable: true,
"div", render: (h, params) => {
{ return h(
style: { "div", {
display: "flex", style: {
"align-items": "center", display: "flex",
}, "align-items": "center",
}, },
[ },
h("img", { [
attrs: { h("img", {
src: this.getFileIcon(params.row), attrs: {
}, src: this.getFileIcon(params.row),
style: { },
width: "30px", style: {
height: "40px", width: "30px",
margin: "0 10px 0 0", height: "40px",
"object-fit": "contain", margin: "0 10px 0 0",
}, "object-fit": "contain",
}), },
h("span", params.row.title), }),
] h("span", params.row.title),
); ]
}, );
}, },
{ },
title: "文件类型", {
key: "type", title: "文件类型",
width: 120, key: "type",
sortable: true, width: 120,
tooltip: true, sortable: true,
}, tooltip: true,
{ },
title: "文件大小", {
key: "size", title: "文件大小",
width: 120, key: "size",
align: "center", width: 120,
sortable: true, align: "center",
render: (h, params) => { sortable: true,
if (!params.row.isFolder) { render: (h, params) => {
let m = this.util.getFileSize(params.row.size); if (!params.row.isFolder) {
return h("span", m); let m = this.util.getFileSize(params.row.size);
} return h("span", m);
}, }
}, },
{ },
title: "创建时间", {
key: "createTime", title: "创建时间",
width: 180, key: "createTime",
sortable: true, width: 180,
}, sortable: true,
{ },
title: "更新时间", {
key: "createTime", title: "更新时间",
width: 180, key: "createTime",
sortable: true, width: 180,
sortType: "desc", sortable: true,
}, sortType: "desc",
{ },
title: "剩余时间", {
key: "restDelTime", title: "剩余时间",
width: 150, key: "restDelTime",
sortable: true, width: 150,
align: "center", sortable: true,
}, align: "center",
{ },
title: "操作", {
key: "action", title: "操作",
align: "center", key: "action",
fixed: "right", align: "center",
width: 170, fixed: "right",
render: (h, params) => { width: 170,
return h("div", [ render: (h, params) => {
h( return h("div", [
"a", h(
{ "a", {
on: { on: {
click: () => { click: () => {
this.revert(params.row); this.revert(params.row);
}, },
}, },
}, },
"恢复" "恢复"
), ),
h("Divider", { h("Divider", {
props: { props: {
type: "vertical", type: "vertical",
}, },
}), }),
h( h(
"a", "a", {
{ on: {
on: { click: () => {
click: () => { this.delete(params.row);
this.delete(params.row); },
}, },
}, },
}, "彻底删除"
"彻底删除" ),
), ]);
]); },
}, },
}, ],
], data: [], //
data: [], // total: 0, //
total: 0, // };
}; },
}, methods: {
methods: { init() {
init() { this.getDataList();
this.getDataList(); },
}, getDataList() {
getDataList() { this.loading = true;
this.loading = true; getFileCate(this.searchForm).then((res) => {
getFileCate(this.searchForm).then((res) => { if (res.success) {
if (res.success) { res.result.forEach((e) => {
res.result.forEach((e) => { e.isFolder = true;
e.isFolder = true; e.type = "文件夹";
e.type = "文件夹"; });
}); this.data = res.result;
this.data = res.result; let totalElements = res.result.length;
let totalElements = res.result.length; getUserFileListData(this.searchForm).then((res) => {
getUserFileListData(this.searchForm).then((res) => { this.loading = false;
this.loading = false; if (res.success) {
if (res.success) { this.data = this.data.concat(res.result.content);
this.data = this.data.concat(res.result.content); this.total = totalElements + res.result.totalElements;
this.total = totalElements + res.result.totalElements; if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
if (this.data.length == 0 && this.searchForm.pageNumber > 1) { this.searchForm.pageNumber -= 1;
this.searchForm.pageNumber -= 1; this.getDataList();
this.getDataList(); }
} }
} });
}); } else {
} else { this.loading = false;
this.loading = false; }
} });
}); },
}, getFileIcon(v) {
getFileIcon(v) { if (!v) {
if (!v) { return "";
return ""; }
} if (v.isFolder) {
if (v.isFolder) { return require("@/assets/icon/folder.png");
return require("@/assets/icon/folder.png"); }
} let url = "";
let url = ""; if (!v.type) {
if (!v.type) { url = require("@/assets/icon/file-unknown.png");
url = require("@/assets/icon/file-unknown.png"); } else if (v.type.indexOf("image") >= 0) {
} else if (v.type.indexOf("image") >= 0) { url = v.url;
url = v.url; } else if (v.type.indexOf("video") >= 0) {
} else if (v.type.indexOf("video") >= 0) { url = require("@/assets/icon/file-video.png");
url = require("@/assets/icon/file-video.png"); } else if (v.type.indexOf("audio") >= 0) {
} else if (v.type.indexOf("audio") >= 0) { url = require("@/assets/icon/mp3.png");
url = require("@/assets/icon/mp3.png"); } else if (v.type.indexOf("pdf") >= 0) {
} else if (v.type.indexOf("pdf") >= 0) { url = require("@/assets/icon/pdf.png");
url = require("@/assets/icon/pdf.png"); } else if (v.type.indexOf("word") >= 0) {
} else if (v.type.indexOf("word") >= 0) { url = require("@/assets/icon/word.png");
url = require("@/assets/icon/word.png"); } else if (
} else if ( v.type.indexOf("sheet") >= 0 ||
v.type.indexOf("sheet") >= 0 || v.fkey.indexOf(".xlsx") >= 0 ||
v.fkey.indexOf(".xlsx") >= 0 || v.fkey.indexOf(".xls") >= 0
v.fkey.indexOf(".xls") >= 0 ) {
) { url = require("@/assets/icon/xls.png");
url = require("@/assets/icon/xls.png"); } else if (v.type.indexOf("presentation") >= 0) {
} else if (v.type.indexOf("presentation") >= 0) { url = require("@/assets/icon/ppt.png");
url = require("@/assets/icon/ppt.png"); } else if (
} else if ( v.type.indexOf("zip") >= 0 ||
v.type.indexOf("zip") >= 0 || v.type.indexOf("rar") >= 0 ||
v.type.indexOf("rar") >= 0 || v.type.indexOf("7z") >= 0
v.type.indexOf("7z") >= 0 ) {
) { url = require("@/assets/icon/zip.png");
url = require("@/assets/icon/zip.png"); } else if (v.type.indexOf("text") >= 0 || v.type.indexOf("octet") >= 0) {
} else if (v.type.indexOf("text") >= 0 || v.type.indexOf("octet") >= 0) { url = require("@/assets/icon/file.png");
url = require("@/assets/icon/file.png"); } else {
} else { url = require("@/assets/icon/file.png");
url = require("@/assets/icon/file.png"); }
} return url;
return url; },
}, clearSelectAll() {
clearSelectAll() { this.$refs.table.selectAll(false);
this.$refs.table.selectAll(false); },
}, changePage(v) {
changePage(v) { this.searchForm.pageNumber = v;
this.searchForm.pageNumber = v; this.getDataList();
this.getDataList(); this.clearSelectAll();
this.clearSelectAll(); },
}, changeSort(e) {
changeSort(e) { this.searchForm.sort = e.key;
this.searchForm.sort = e.key; this.searchForm.order = e.order;
this.searchForm.order = e.order; if (e.order == "normal") {
if (e.order == "normal") { this.searchForm.order = "";
this.searchForm.order = ""; }
} this.getDataList();
this.getDataList(); },
}, clear() {
clear() { this.$Modal.confirm({
this.$Modal.confirm({ title: "请谨慎进行此操作!",
title: "请谨慎进行此操作!", content: "确认彻底清空回收站所有文件?",
content: "确认彻底清空回收站所有文件?", loading: true,
loading: true, onOk: () => {
onOk: () => { clearTrashFile().then((res) => {
clearTrashFile().then((res) => { if (res.success) {
if (res.success) { clearTrashFileCate().then((res) => {
clearTrashFileCate().then((res) => { this.$Modal.remove();
this.$Modal.remove(); if (res.success) {
if (res.success) { this.getDataList();
this.getDataList(); this.$Message.success("清空回收站成功");
this.$Message.success("清空回收站成功"); }
} });
}); }
} });
}); },
}, });
}); },
}, revert(v) {
revert(v) { if (!v.isFolder) {
if (!v.isFolder) { trashFile({
trashFile({ ids: v.id }).then((res) => { ids: v.id
if (res.success) { }).then((res) => {
this.getDataList(); if (res.success) {
this.$Message.success("操作成功"); this.getDataList();
} this.$Message.success("操作成功");
}); }
} else { });
trashFileCate({ id: v.id }).then((res) => { } else {
if (res.success) { trashFileCate({
this.getDataList(); id: v.id
this.$Message.success("操作成功"); }).then((res) => {
} if (res.success) {
}); this.getDataList();
} this.$Message.success("操作成功");
}, }
delete(v) { });
this.$Modal.confirm({ }
title: "确认彻底删除", },
content: v.isFolder delete(v) {
? "确定彻底删除文件夹 " + v.title this.$Modal.confirm({
: "确定彻底删除文件 " + v.title, title: "确认彻底删除",
loading: true, content: v.isFolder ?
onOk: () => { "确定彻底删除文件夹 " + v.title :
if (!v.isFolder) { "确定彻底删除文件 " + v.title,
deleteUserFile({ ids: v.id }).then((res) => { loading: true,
this.$Modal.remove(); onOk: () => {
if (res.success) { if (!v.isFolder) {
this.getDataList(); deleteUserFile({
this.$Message.success("删除文件 " + v.title + " 成功"); ids: v.id
} }).then((res) => {
}); this.$Modal.remove();
} else { if (res.success) {
deleteFileCate({ ids: v.id }).then((res) => { this.getDataList();
this.$Modal.remove(); this.$Message.success("删除文件 " + v.title + " 成功");
if (res.success) { }
this.getDataList(); });
this.$Message.success("删除文件夹 " + v.title + " 成功"); } else {
} deleteFileCate({
}); ids: v.id
} }).then((res) => {
}, this.$Modal.remove();
}); if (res.success) {
}, this.getDataList();
close() { this.$Message.success("删除文件夹 " + v.title + " 成功");
this.$emit("close", true); }
}, });
submited() { }
this.$emit("submited", true); },
}, });
}, },
mounted() { close() {
this.init(); this.$emit("close", true);
}, },
}; submited() {
this.$emit("submited", true);
},
},
mounted() {
this.init();
},
};
</script> </script>

102
src/views/sys/upApp/upApp.vue

@ -0,0 +1,102 @@
<template>
<div >
<Upload :action="uploadFileUrl" :headers="accessToken" :data="uploadData" :on-success="handleSuccess"
:on-error="handleError" :max-size="100000000" :before-upload="beforeUpload"
multiple type="drag" ref="up">
<div style="padding: 20px 0">
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
<p>点击这里或将文件拖拽到这里上传</p>
</div>
</Upload>
<Form ref="form" :model="form" :label-width="85" :rules="formValidate">
<FormItem label="版本号" prop="title">
<Input v-model="form.version" />
</FormItem>
</Form>
<div slot="footer">
<Button type="primary" :loading="submitLoading" @click="handelSubmit">提交</Button>
</div>
</div>
</template>
<script>
import {
getFileCate,
addFileCate,
editFileCate,
uploadFile,
trashFileCate,
searchFileCate,
checkOssSet,
} from "@/api/index";
export default {
name: "fileCategory",
props: {
showOnly: {
type: Boolean,
default: false,
},
},
data() {
return {
uploadFileUrl: uploadFile,
submitLoading: false,
accessToken: {},
uploadData: {},
form:{
path:'',
version:''
}
};
},
methods: {
init() {
this.accessToken = {
accessToken: this.getStore("accessToken"),
};
checkOssSet().then((res) => {
if (!res.success) {
this.$Modal.confirm({
title: "系统还未配置OSS",
content: "管理员还未配置第三方OSS服务,是否现在立即去配置?",
onOk: () => {
this.$router.push({
name: "setting",
query: {
name: "oss"
},
});
},
});
}
});
},
beforeUpload() {
return true;
},
handleSuccess(res, file, fileList) {
if (res.success) {
this.$Message.success("上传文件 " + file.name + " 成功");
this.form.path = res.result
} else {
file.percentage = 0;
file.status = "fail";
file.name += "(上传失败)";
this.$Message.error(res.message);
}
},
handleError(error, file, fileList) {
this.$Message.error(error.toString());
},
handelSubmit() {
console.log(this.form)
}
},
mounted() {
this.init();
},
};
</script>
<style lang="less">
</style>
Loading…
Cancel
Save