提交 9d7bd3ac authored 作者: 龙菲's avatar 龙菲

展览整量导入

上级 e558ce66
......@@ -174,5 +174,9 @@ export default {
};
</script>
<style>
<style lang="scss" scoped>
::v-deep .el-form-item{
margin-bottom: 0;
}
</style>
\ No newline at end of file
......@@ -66,6 +66,9 @@
<template v-else-if="item.needTimeTag">
<slot name="createTime" :scope="scope.row"></slot>
</template>
<template v-else-if="item.prop=='optType'">
<slot name="optType" :scope="scope.row"></slot>
</template>
<span v-else>{{ scope.row[item.prop] }}</span>
</template>
</el-table-column>
......
......@@ -63,3 +63,4 @@ div:focus {
.app-container {
padding: 40px;
}
......@@ -220,3 +220,17 @@ export function formatNum(num) {
}
}
// 格式化文件大小
export function renderSize(value) {
if (null == value || value == '') {
return "0 Bytes";
}
var unitArr = new Array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
var index = 0;
var srcsize = parseFloat(value);
index = Math.floor(Math.log(srcsize) / Math.log(1024));
var size = srcsize / Math.pow(1024, index);
size = size.toFixed(2);//保留的小数位数
return size + unitArr[index];
}
\ No newline at end of file
......@@ -9,7 +9,7 @@
>
<div class="title" slot="title">
<div class="divider"></div>
<span class="label">导入记录</span>
<span class="label">文物导入记录</span>
</div>
<div class="upload-progress">
<div class="top-bar">
......@@ -74,9 +74,10 @@ import {
importOperates,
importOperations,
} from "../config";
import { parseTime, getYestoday } from "@/utils/index";
import { parseTime, getYestoday ,renderSize} from "@/utils/index";
import { getImportListPage, deleteByBatchNum } from "@/api/file";
import SearchBar from "@/components/SearchBar";
export default {
name: "ImportRecordDialog",
components: {
......@@ -114,9 +115,12 @@ export default {
return importOperations;
},
getFileSize(fileSize) {
return (fileSize) => {
return (Number(fileSize) / 1024 / 1024).toFixed(2) + "M";
};
// return (fileSize) => {
// return (Number(fileSize) / 1024 / 1024).toFixed(2) + "M";
// };
return (fileSize)=>{
return renderSize(Number(fileSize))
}
},
isToday(time) {
......@@ -180,6 +184,7 @@ export default {
var params = {
page: this.list.current,
limit: this.list.size,
type:"biz_cultural_relic",
...form,
};
let res = await getImportListPage(params);
......@@ -197,6 +202,7 @@ export default {
var params = {
page: this.list.current,
limit: this.list.size,
type:'biz_cultural_relic'
};
let res = await getImportListPage(params);
if (res.code == 0) {
......@@ -268,7 +274,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
margin: 16px;
......
......@@ -2,6 +2,7 @@ export const title = [{
prop: "name",
label: "名称",
columnAlign: 'center',
showOverFlowToolTip: true,
},
// {
// prop: "level",
......@@ -40,11 +41,13 @@ export const title = [{
prop: "deptName",
label: "馆藏单位",
columnAlign: 'center',
showOverFlowToolTip: true,
},
{
prop: "regionName",
label: "所属地",
columnAlign: 'center',
showOverFlowToolTip: true,
},
// {
// prop: "intro",
......@@ -58,6 +61,7 @@ export const title = [{
prop: "themeWord",
label: "主题词",
columnAlign: 'center',
showOverFlowToolTip: true,
},
{
prop: "faceImageUrl",
......@@ -99,12 +103,14 @@ export const title = [{
prop: "sourceWay",
label: "来源方式",
columnAlign: 'center',
showOverFlowToolTip: true,
},
{
prop: "remark",
label: "备注",
columnAlign: 'center',
},
......@@ -164,13 +170,14 @@ export const importRecordsTitle = [{
prop: "remark",
label: "备注",
columnAlign: "center",
width: "60px",
},
]
export const importOperates = {
operate: true,
label: "操作",
width: "160px",
width: "220px",
minwidth: "220px",
titleAlign: "center",
columnAlign: "center",
......@@ -178,5 +185,5 @@ export const importOperates = {
export const importOperations = [{
type: 'delete',
title: '删除'
title: '删除记录及文物'
},]
\ No newline at end of file
......@@ -35,7 +35,6 @@
:headers="headers"
accept=".zip"
:show-file-list="false"
:on-exceed="handleExceed"
:before-upload="handleUpload"
:on-success="handleSuccess"
multiple
......@@ -233,11 +232,12 @@ export default {
headers: {
authorization: getToken(),
},
isUpLoading:false,
multiUploadVisible: false, //控制批量上传弹窗显示
importRecordVisible: false, //上传记录
filesList: [], //上传当中的文件队列
uploadCount: 0, //处于上传中的文件数量,当等于fileList的时候就关闭弹窗,请求完毕一个就++
cancelUploadArr: [], //保存每个文件上传接口对应的取消请求的函数[fn,fn,fn...],点叉叉关闭弹窗就遍历这个全部执行一遍就取消了所以请求,(有那么点点发布订阅的思想,关闭弹窗,通知取消请求,我这里是全部取消,也可以根据需要,取消某一个请求,思想都一样的)
cancelUploadArr: [], //保存每个文件上传接口对应的取消请求的函数[fn,fn,fn...],点叉叉关闭弹窗就遍历这个全部执行一遍就取消了所以请求
};
},
......@@ -367,10 +367,10 @@ export default {
a.remove();
},
// 文件个数超出
handleExceed() {
this.$message.error(`超出上传文件个数,请删除以后再上传!`);
},
// // 文件个数超出
// handleExceed() {
// this.$message.error(`超出上传文件个数,请删除以后再上传!`);
// },
handleUpload(file) {
this.multiUploadVisible = true; //显示弹窗
this.filesList.push({
......@@ -441,7 +441,6 @@ export default {
this.$message.warning("已取消上传!");
}
this.multiUploadVisible = false; //最后关闭
this.multiUploadVisible = false;
})
.catch(() => {
console.log("用户取消操作");
......@@ -465,7 +464,7 @@ export default {
handleSuccess(res) {
res.Success && this.$Message.success("上传成功"); //提示
this.processModal = false; //成功后关闭弹窗
// this.processModal = false; //成功后关闭弹窗
this.filesList = [];
},
......@@ -530,17 +529,9 @@ export default {
flex-direction: column;
}
.top-bar {
// display: flex;
// justify-content: space-between;
// align-items: center;
margin-bottom: 10px;
height: 68px;
}
// .scoll-area{
// height: calc(100vh - 170px);
// overflow: auto;
// }
.tools {
display: flex;
align-items: center;
......
<template>
<el-dialog
:visible="dialogVisible"
width="70%"
style="height: 98%"
:before-close="handleClose"
top="5vh"
lock-scroll
>
<div class="title" slot="title">
<div class="divider"></div>
<span class="label">展览导入记录</span>
</div>
<div class="upload-progress">
<div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" />
</div>
<TablePage :data="list.records" :tableTitle="tableTitle">
<template v-slot:fileSize="scope">
{{ getFileSize(scope.scope.fileSize) }}
</template>
<template v-slot:createTime="scope">
{{ scope.scope.createTime }}
<el-tag
size="mini"
type="success"
v-if="isToday(scope.scope.createTime)"
>今天</el-tag
>
<el-tag
size="mini"
type="primary"
v-if="getYestoday == scope.scope.createTime.split(' ')[0]"
>昨天
</el-tag>
</template>
<template v-slot:optType="scope">
<el-tag
size="mini"
type="primary"
v-if="scope.scope.optType.indexOf('导入')!=-1"
> {{ scope.scope.optType }}</el-tag
>
<el-tag
size="mini"
type="danger"
v-if="scope.scope.optType.indexOf('删除')!=-1"
> {{ scope.scope.optType }}
</el-tag>
</template>
<!-- <template v-slot:operates="scope">
<TableOperation
:operations="tableOperations"
:rawData="scope.scope.row"
:deleteTitle="'点击确定将会删除该批次导入的所有文物,确定删除?'"
@handleOperation="handleOperation"
></TableOperation>
</template> -->
</TablePage>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="Number(list.current)"
:page-sizes="[10, 20, 40, 50]"
:page-size="Number(list.size)"
layout="total, sizes, prev, pager, next, jumper"
:total="Number(list.total)"
class="pagination"
>
</el-pagination>
</div>
<div class="dialog-footer">
<el-button type="primary" @click.native="handleClose">关闭</el-button>
</div>
</el-dialog>
</template>
<script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import {
importRecordsTitle,
importOperates,
importOperations,
} from "../config";
import { parseTime, getYestoday } from "@/utils/index";
import { getImportListPage, deleteByBatchNum } from "@/api/file";
import { getLogList } from "@/api/log";
import SearchBar from "@/components/SearchBar";
export default {
name: "ImportRecordDialog",
components: {
TablePage,
TableOperation,
SearchBar,
},
props: {
visible: {
type: Boolean,
default: false,
},
filesList: {
type: Array,
default: () => [],
},
},
watch: {
visible: {
handler: function (value) {
this.dialogVisible = value;
},
deep: true,
immediate: true,
},
},
computed: {
tableTitle() {
return importRecordsTitle;
},
tableOperates() {
return importOperates;
},
tableOperations() {
return importOperations;
},
getFileSize(fileSize) {
return (fileSize) => {
return (Number(fileSize) / 1024 / 1024).toFixed(2) + "M";
};
},
isToday(time) {
return (time) => {
if (time) {
let timeDate = time.split(" ")[0];
let today = parseTime(new Date(), "{yy}-{mm}-{dd}");
return timeDate == today;
} else {
return false;
}
};
},
getYestoday() {
console.log(getYestoday());
return getYestoday();
},
},
data() {
return {
dialogVisible: false,
list: {
records: [],
size: 10,
current: 1,
total: 0,
},
searchForm: {
name: "",
status: "",
},
searchConfig: [
{
prop: "createTime",
type: "dateTimeRange",
label: "操作日期",
},
// {
// prop: "type",
// type: "select",
// label: "所属分类",
// selectOptions: [
// {
// label: "文物",
// value: "biz_cultural_relic",
// },
// {
// label: "展览",
// value: "biz_exhibition",
// },
// ],
// },
// {
// prop: "batchNum",
// type: "input",
// label: "批次",
// },
],
};
},
mounted() {
this.loadData();
},
methods: {
async search(form) {
var params = {
page: this.list.current,
limit: this.list.size,
// type:'biz_exhibition',
optType: "整量",
...form,
};
if (params.createTime && params.createTime.length > 0) {
params.startTime = params.createTime[0];
params.endTime = params.createTime[1];
}
if (params.createTime) {
delete params.createTime;
}
// let res = await getImportListPage(params);
let res = await getLogList(params);
if (res.code == 0) {
this.list = res.data;
}
},
reset() {
this.loadData();
},
// 加载表格数据
async loadData() {
var params = {
page: this.list.current,
limit: this.list.size,
// type: "biz_exhibition",
optType: "整量",
};
if (params.createTime && params.createTime.length > 0) {
params.startTime = params.createTime[0];
params.endTime = params.createTime[1];
}
if (params.createTime) {
delete params.createTime;
}
// let res = await getImportListPage(params);
let res = await getLogList(params);
if (res.code == 0) {
this.list = res.data;
}
},
async handleOperation(value, row) {
switch (value.type) {
case "delete":
let { batchNum, type, id } = row;
let deleteRes = await deleteByBatchNum({ batchNum, type });
if (deleteRes.code == 0) {
this.$message.success("删除成功!");
this.$emit("reload");
this.loadData();
}
break;
}
},
// 改变页容量
handleSizeChange(value) {
this.list.size = value;
this.loadData();
},
// 改变当前显示页
handleCurrentChange(value) {
this.list.current = value;
this.loadData();
},
handleClose() {
this.$emit("handleClose");
},
},
};
</script>
<style lang='scss' scoped>
.title {
display: flex;
.divider {
width: 8px;
height: 16px;
border-left: 4px solid #409eff;
margin-right: 8px;
}
.label {
font-weight: bold;
}
}
.dialog-content {
padding: 0 32px;
display: flex;
flex-direction: column;
}
.dialog-footer {
margin-top: 30px;
display: flex;
justify-content: flex-end;
}
.el-dialog__body {
padding: 0 20px 30px 20px;
}
.top-bar {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.pagination {
margin: 16px;
}
</style>
\ No newline at end of file
<template>
<el-dialog
:visible="dialogVisible"
width="60%"
style="height: 98%"
:before-close="handleClose"
top="5vh"
lock-scroll
>
<div class="title" slot="title">
<div class="divider"></div>
<span class="label">上传列表</span>
<span class="tips">
<i class="el-icon-info"></i
>提示:上传过程中请勿关闭此弹窗或刷新页面等操作
</span>
</div>
<div class="upload-progress">
<el-table :data="filesList" fit>
<el-table-column prop="name" label="文件名"> </el-table-column>
<el-table-column prop="size" label="文件大小">
<template slot-scope="scope">
{{ getSize(scope.row.size) }}
</template>
</el-table-column>
<el-table-column prop="progress" label="进度" width="300">
<template slot-scope="scope">
<el-progress
:percentage="scope.row.percent"
v-if="!isNaN(parseInt(scope.row.percent))"
:status="scope.row.status"
></el-progress>
</template>
</el-table-column>
<el-table-column prop="operation" label="操作" width="100">
<template slot-scope="scope">
<el-button
type="text"
size="48"
icon="el-icon-circle-close"
@click.native="handleCancel(scope.$index)"
v-if="scope.row.status == null"
></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="dialog-footer">
<el-button type="primary" @click.native="handleClose">关闭</el-button>
</div>
</el-dialog>
</template>
<script>
import TablePage from "@/components/Table/TablePage";
export default {
name: "UploadListDialog",
components: {
TablePage,
},
props: {
visible: {
type: Boolean,
default: false,
},
filesList: {
type: Array,
default: () => [],
},
},
watch: {
visible: {
handler: function (value) {
this.dialogVisible = value;
},
deep: true,
immediate: true,
},
filesList(value) {
// console.log("value", value);
},
},
data() {
return {
dialogVisible: false,
isUpLoading: false,
percentState: 0,
list: {
records: [],
current: 1,
size: 10,
},
progressStatus: null,
};
},
computed: {
getSize(size) {
return (size) => {
return (size / 1024 / 1024).toFixed(2) + "M"; //1M=1024Kb=1024*1024byte
};
},
},
mounted() {
// this.loadData();
},
methods: {
// 取消编辑
cancelForm() {
this.handleClose();
},
handleCancel(index) {
this.$emit("handleCancel", index);
},
handleClose() {
this.$emit("handleClose");
},
},
};
</script>
<style lang='scss' scoped>
.title {
display: flex;
align-items: center;
.divider {
width: 8px;
height: 16px;
border-left: 4px solid #409eff;
margin-right: 8px;
}
.label {
font-weight: bold;
}
.tips{
font-size: 14px;
color: #666;
margin-left: 10px;
}
}
.dialog-content {
padding: 0 32px;
display: flex;
flex-direction: column;
.upload-area {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
margin-bottom: 30px;
}
.upload-progress {
margin-bottom: 30px;
}
.upload-records {
margin-bottom: 30px;
}
}
.dialog-footer {
margin-top: 30px;
display: flex;
justify-content: flex-end;
}
.el-dialog__body {
padding: 0 20px 30px 20px;
}
</style>
\ No newline at end of file
......@@ -2,87 +2,89 @@ export const title = [{
prop: "title",
label: "标题",
columnAlign: 'center',
width:120
},
{
width: 120,
showOverFlowToolTip: true,
},
{
prop: "keyword",
label: "关键词",
columnAlign: 'center',
showOverFlowToolTip: true,
},
{
},
{
prop: "type",
label: "展览类型",
columnAlign: 'center',
isDisplayType:true
},
isDisplayType: true,
showOverFlowToolTip: true,
},
{
{
prop: "deptName",
label: "展览单位",
columnAlign: 'center',
},
{
columnAlign: 'center', showOverFlowToolTip: true,
},
{
prop: "regionName",
label: "所在地区",
columnAlign: 'center',
},
columnAlign: 'center', showOverFlowToolTip: true,
},
{
{
prop: "faceImageUrl",
label: "封面",
columnAlign: 'center',
isFaceImage: true,
width:130
},
width: 130
},
// {
// prop: "intro",
// label: "展览介绍",
// columnAlign: 'center',
// },
// {
// prop: "intro",
// label: "展览介绍",
// columnAlign: 'center',
// },
// {
// prop: "literature",
// label: "关联文献",
// columnAlign: 'center',
// width:100
// },
{
// {
// prop: "literature",
// label: "关联文献",
// columnAlign: 'center',
// width:100
// },
{
prop: "collectCount",
label: "收藏量",
columnAlign: 'center',
sortable:true
},
{
sortable: true
},
{
prop: "loveCount",
label: "点赞量",
columnAlign: 'center',
sortable:true
},
{
sortable: true
},
{
prop: "browseCount",
label: "浏览量",
columnAlign: 'center',
sortable:true
},
sortable: true
},
{
{
prop: "remark",
label: "备注",
columnAlign: 'center',
},
{
columnAlign: 'center', showOverFlowToolTip: true,
},
{
prop: "status",
label: "状态",
columnAlign: 'center',
isStatus: true
},
{
},
{
prop: "themeType",
label: "模板主题",
columnAlign: 'center',
},
},
// {
// prop: "images",
// label: "展览图片",
......@@ -115,15 +117,15 @@ export const operates = {
export const operations = [{
type: 'view',
title: '预览'
},
{
},
{
type: 'edit',
title: '编辑'
},
{
},
{
type: 'delete',
title: '删除'
},
},
]
......@@ -131,15 +133,71 @@ export const literatureTableTitle = [{
prop: "name",
label: "文献名称",
columnAlign: 'center',
},
{
},
{
prop: "authors",
label: "作者",
columnAlign: 'center',
},
{
},
{
prop: "remark",
label: "备注",
columnAlign: 'center',
},
},
]
export const importRecordsTitle = [{
prop: "createTime",
label: "导入时间",
columnAlign: "left",
needTimeTag: true
},
// {
// prop: "batchNum",
// label: "导入批次",
// columnAlign: "center",
// },
{
prop: "sourceName",
label: "文件名称",
columnAlign: "center",
width: 300
},
{
prop:'username',
label:'操作用户',
columnAlign: "center",
},
{
prop:'optType',
label:'操作类型',
columnAlign: "center",
},
// {
// prop: "fileSize",
// label: "文件大小",
// columnAlign: "center",
// },
// {
// prop: "remark",
// label: "备注",
// columnAlign: "center",
// width: "60px",
// },
]
export const importOperates = {
operate: true,
label: "操作",
width: "220px",
minwidth: "220px",
titleAlign: "center",
columnAlign: "center",
}
export const importOperations = [{
type: 'delete',
title: '删除记录及展览'
},]
\ No newline at end of file
......@@ -54,7 +54,7 @@
:fileLimit="1"
:fileSize="50"
listType="text"
:fileType="['pdf']"
:fileType="['pdf','ttf']"
ref="pdf"
/>
</el-form-item>
......
......@@ -224,16 +224,16 @@
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
margin: 16px;
}
.el-button {
margin-bottom: 22px;
}
// .el-button {
// margin-bottom: 22px;
// }
::v-deep .el-card__header {
padding: 10px 20px;
......
......@@ -243,4 +243,8 @@ export default {
.pagination {
margin: 16px;
}
::v-deep .el-form-item{
margin-bottom: 20px;
}
</style>
\ No newline at end of file
......@@ -356,7 +356,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
margin: 16px;
......
......@@ -301,7 +301,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
margin: 16px;
......
......@@ -267,7 +267,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: flex-end;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
......
......@@ -295,7 +295,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 20px;
}
.pagination {
margin: 16px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论