|
@@ -1,8 +1,20 @@
|
|
|
<template>
|
|
|
<div class="elegant-container">
|
|
|
+ <Spin fix v-if="isLoading"></Spin>
|
|
|
<div class="header">
|
|
|
<span class="title">学生风采</span>
|
|
|
- <Button type="success" size="small" @click="onAddElegant">+ 添加素材</Button>
|
|
|
+ <div>
|
|
|
+ <Button type="success" size="small" @click="onDownloadExcel" icon="md-download" style="margin-right: 10px">导出数据</Button>
|
|
|
+ <Button type="success" size="small" @click="onAddElegant">+ 添加素材</Button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="filter-wrap">
|
|
|
+ <!-- 类型筛选 -->
|
|
|
+ <Select v-model="filterTypeIndex" style="width:200px;" @on-change="onFilterTypeChange">
|
|
|
+ <Option v-for="(item,index) in typeList" :value="index" :key="index">
|
|
|
+ {{ item }}
|
|
|
+ </Option>
|
|
|
+ </Select>
|
|
|
</div>
|
|
|
<div class="elegant-list">
|
|
|
<EmptyData :top="300" v-if="!elegantList.length"></EmptyData>
|
|
@@ -11,7 +23,8 @@
|
|
|
<p class="elegant-title">
|
|
|
<span>{{ item.title }}</span>
|
|
|
<span style="margin: 0 10px">
|
|
|
- <Tag color="geekblue" v-if="item.bizType">{{ item.bizType.join('-') }}</Tag>
|
|
|
+ <Tag color="geekblue" v-if="item.bizType">{{ item.bizType.join("-") }}</Tag>
|
|
|
+ <Tag color="green" v-if="item.classes && item.classes.length">{{ getClassNameById(item.classes[0]) }}</Tag>
|
|
|
<Tag color="primary">{{ $tools.formatTime(item.createTime) }}</Tag>
|
|
|
</span>
|
|
|
<!-- <Icon type="md-create" color="#2d8cf0" @click="onEditElegant(item,index)"></Icon> -->
|
|
@@ -23,20 +36,20 @@
|
|
|
<img :src="getFullPath(img.url)" alt="" />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="img-list" v-if="item.fileType === 'video'">
|
|
|
+ <div class="img-list" v-if="item.fileType === 'video'">
|
|
|
<div class="img-item" v-for="(img, imgIndex) in item.attachments" :key="imgIndex">
|
|
|
- <video :src="getFullPath(img.url)" style="width: 300px;" controls="controls"></video>
|
|
|
+ <video :src="getFullPath(img.url)" style="width: 300px" controls="controls"></video>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="file-list" v-if="item.fileType === 'doc'">
|
|
|
+ <div class="file-list" v-if="item.fileType === 'doc'">
|
|
|
<div class="file-item" v-for="(item, imgIndex) in item.attachments" :key="imgIndex" @click="onPreview(item)">
|
|
|
- <img src="../../assets/source/word.png" v-if="item.type === 'doc' && docType.includes(getSuffix(item.blob))" />
|
|
|
- <img src="../../assets/source/excel.png" v-else-if="item.type === 'doc' && excelType.includes(getSuffix(item.name))" />
|
|
|
- <img src="../../assets/source/ppt.png" v-else-if="item.type === 'doc' && pptType.includes(getSuffix(item.name))" />
|
|
|
- <img src="../../assets/source/pdf.png" v-else-if="item.type === 'doc' && getSuffix(item.name) === 'pdf'" />
|
|
|
- <img src="../../assets/source/zip.png" v-else-if="getSuffix(item.name) === 'zip' || getSuffix(item.name) === 'rar'" />
|
|
|
- <img src="../../assets/source/audio.png" v-else-if="item.type === 'audio'" />
|
|
|
- <img src="../../assets/source/unknow.png" v-else />
|
|
|
+ <img src="../../assets/source/word.png" v-if="item.type === 'doc' && docType.includes(getSuffix(item.blob))" />
|
|
|
+ <img src="../../assets/source/excel.png" v-else-if="item.type === 'doc' && excelType.includes(getSuffix(item.name))" />
|
|
|
+ <img src="../../assets/source/ppt.png" v-else-if="item.type === 'doc' && pptType.includes(getSuffix(item.name))" />
|
|
|
+ <img src="../../assets/source/pdf.png" v-else-if="item.type === 'doc' && getSuffix(item.name) === 'pdf'" />
|
|
|
+ <img src="../../assets/source/zip.png" v-else-if="getSuffix(item.name) === 'zip' || getSuffix(item.name) === 'rar'" />
|
|
|
+ <img src="../../assets/source/audio.png" v-else-if="item.type === 'audio'" />
|
|
|
+ <img src="../../assets/source/unknow.png" v-else />
|
|
|
<p>{{ item.name }}</p>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -49,15 +62,15 @@
|
|
|
<Input v-model="curElegantItem.title" :placeholder="`请输入活动名称...`"></Input>
|
|
|
</FormItem>
|
|
|
<FormItem :label="`参与对象`">
|
|
|
- <Cascader :data="csOptions" v-model="curElegantItem.classes" :placeholder="`请选择活动参与班级...`" @on-change="onTargetChange"/>
|
|
|
+ <Cascader :data="csOptions" v-model="curElegantItem.classes" :placeholder="`请选择活动参与班级...`" @on-change="onTargetChange" />
|
|
|
</FormItem>
|
|
|
<FormItem :label="`活动描述`">
|
|
|
<Input v-model="curElegantItem.content" :placeholder="`请输入活动描述内容...`"></Input>
|
|
|
</FormItem>
|
|
|
<FormItem :label="`素材类别`">
|
|
|
- <Cascader :data="bizTypeData" v-model="curElegantItem.bizType" @on-change="onTypeChange"/>
|
|
|
+ <Cascader :data="bizTypeData" v-model="curElegantItem.bizType" @on-change="onTypeChange" />
|
|
|
</FormItem>
|
|
|
- <FormItem :label="`自定义类型`" v-if="isCustomType">
|
|
|
+ <FormItem :label="`自定义类型`" v-if="isCustomType">
|
|
|
<Input v-model="customType" :placeholder="`请输入自定义艺术活动类型`"></Input>
|
|
|
</FormItem>
|
|
|
<FormItem :label="`附件类型`">
|
|
@@ -110,17 +123,17 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<p style="margin-top: 10px; color: red">上传须知:</p>
|
|
|
- <p style="color: red">1. 活动素材需为后缀名为mp4格式的图片文件,单个视频大小不得超出100M</p>
|
|
|
+ <p style="color: red">1. 活动素材需为后缀名为mp4格式的视频文件,单个视频大小不得超出100M</p>
|
|
|
<p style="color: red">2. 活动素材视频数量最多为1个</p>
|
|
|
</FormItem>
|
|
|
- <FormItem :label="`活动素材`" v-if="fileType === 'doc'">
|
|
|
- <Upload multiple type="drag" action="" :before-upload="onBeforeUpload" :show-upload-list="false" :format="['mp3','ppt','pptx','doc','docx','xls','xlsx','pdf','zip','rar']" :on-format-error="handleDocFormatError">
|
|
|
+ <FormItem :label="`活动素材`" v-if="fileType === 'doc'">
|
|
|
+ <Upload multiple type="drag" action="" :before-upload="onBeforeUpload" :show-upload-list="false" :format="['mp3', 'ppt', 'pptx', 'doc', 'docx', 'xls', 'xlsx', 'pdf', 'zip', 'rar']" :on-format-error="handleDocFormatError">
|
|
|
<div style="padding: 40px 0">
|
|
|
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
|
|
|
<p>拖拽或者点击上传文档类素材</p>
|
|
|
</div>
|
|
|
</Upload>
|
|
|
- <div class="img-list" v-if="fileType === 'doc'" style="display:flex;flex-direction:column">
|
|
|
+ <div class="img-list" v-if="fileType === 'doc'" style="display: flex; flex-direction: column">
|
|
|
<div v-for="(imgFile, imgFileIndex) in docFilePreviewList" :key="imgFileIndex" style="margin: 10px 0">
|
|
|
<p>
|
|
|
<span>{{ imgFile.name }}</span>
|
|
@@ -140,17 +153,22 @@
|
|
|
|
|
|
<script>
|
|
|
import BlobTool from "@/utils/blobTool.js";
|
|
|
+ import excel from "@/utils/excel.js";
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
+ isLoading:false,
|
|
|
+ allList:[],
|
|
|
+ typeList:['全部风采','德育风采','艺术特色'],
|
|
|
+ filterTypeIndex:0,
|
|
|
props: {
|
|
|
multiple: false,
|
|
|
value: "id",
|
|
|
label: "name"
|
|
|
},
|
|
|
- docType: ['doc', 'docx'],
|
|
|
- excelType: ['xls', 'csv', 'xlsx'],
|
|
|
- pptType: ['ppt', 'pptx'],
|
|
|
+ docType: ["doc", "docx"],
|
|
|
+ excelType: ["xls", "csv", "xlsx"],
|
|
|
+ pptType: ["ppt", "pptx"],
|
|
|
elegantList: [],
|
|
|
curElegantItem: null,
|
|
|
curElegantIndex: 0,
|
|
@@ -159,13 +177,14 @@
|
|
|
btnLoading: false,
|
|
|
fileArr: [],
|
|
|
priviewSrc: "",
|
|
|
+ originList:[],
|
|
|
imgFilePreviewList: [],
|
|
|
videoFilePreviewList: [],
|
|
|
- docFilePreviewList:[],
|
|
|
+ docFilePreviewList: [],
|
|
|
containerClient: null,
|
|
|
schoolProfile: null,
|
|
|
fileType: "image",
|
|
|
- customType:'',
|
|
|
+ customType: "",
|
|
|
bizTypeData: [
|
|
|
{
|
|
|
value: "1",
|
|
@@ -235,39 +254,70 @@
|
|
|
etime: null //可选
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- this.elegantList = res.elegants.reverse();
|
|
|
- this.getTargetList()
|
|
|
+ this.originList = res.elegants.reverse()
|
|
|
+ this.onFilterTypeChange();
|
|
|
+ this.getTargetList();
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
- onPreview(file){
|
|
|
- let fullLink = this.getFullPath(file.url)
|
|
|
- let fileSuffix = this.getSuffix(file.name)
|
|
|
- let allDocTypes = [...this.docType,...this.excelType,...this.pptType]
|
|
|
- if (fileSuffix === 'pdf') {
|
|
|
- this.openPdf(fullLink, file.name)
|
|
|
- } else if(allDocTypes.includes(fileSuffix)) {
|
|
|
- this.openDoc(escape(fullLink))
|
|
|
- }else{
|
|
|
- this.$tools.doDownloadByUrl(fullLink, file.name)
|
|
|
- }
|
|
|
- },
|
|
|
- /* 打开PDF文件进行预览 */
|
|
|
- openPdf(url) {
|
|
|
- window.open('/web/viewer.html?file=' + encodeURIComponent(url));
|
|
|
- },
|
|
|
- /* 预览文档 */
|
|
|
- openDoc(url) {
|
|
|
- window.open('https://view.officeapps.live.com/op/view.aspx?src=' + url);
|
|
|
- },
|
|
|
+ onDownloadExcel(){
|
|
|
+ this.isLoading = true
|
|
|
+ let schoolName = this.$store.state.user.schoolProfile.school_base.name;
|
|
|
+ let periodName = this.curPeriod.name;
|
|
|
+ let list = this.originList.map(i => {
|
|
|
+ return {
|
|
|
+ schoolName: schoolName,
|
|
|
+ className: this.getClassNameById(i.classes[0]),
|
|
|
+ classId: i.classes[0],
|
|
|
+ bizType: i.bizType ? i.bizType.join('-') : '-',
|
|
|
+ title:i.title,
|
|
|
+ content:i.content,
|
|
|
+ time: this.$tools.formatTime(i.createTime)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ const params = {
|
|
|
+ title: ["学校名称", "班级名称", "班级ID", "素材类别", "活动名称", "活动描述", "活动时间"],
|
|
|
+ key: ["schoolName", "className", "classId", "bizType", "title", "content", "time"],
|
|
|
+ data: list,
|
|
|
+ autoWidth: true,
|
|
|
+ filename: schoolName + "-" + periodName + "- 学生风采数据汇总表"
|
|
|
+ };
|
|
|
+ excel.export_array_to_excel(params);
|
|
|
+ this.isLoading = false;
|
|
|
+ },
|
|
|
+ onFilterTypeChange(){
|
|
|
+ console.log(this.allList)
|
|
|
+ this.elegantList = this.filterTypeIndex === 0 ? this._.cloneDeep(this.originList) : this.originList.filter(i => i.bizType && i.bizType.includes(this.typeList[this.filterTypeIndex]))
|
|
|
+ },
|
|
|
+ onPreview(file) {
|
|
|
+ let fullLink = this.getFullPath(file.url);
|
|
|
+ let fileSuffix = this.getSuffix(file.name);
|
|
|
+ let allDocTypes = [...this.docType, ...this.excelType, ...this.pptType];
|
|
|
+ if (fileSuffix === "pdf") {
|
|
|
+ this.openPdf(fullLink, file.name);
|
|
|
+ } else if (allDocTypes.includes(fileSuffix)) {
|
|
|
+ this.openDoc(escape(fullLink));
|
|
|
+ } else {
|
|
|
+ this.$tools.doDownloadByUrl(fullLink, file.name);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /* 打开PDF文件进行预览 */
|
|
|
+ openPdf(url) {
|
|
|
+ window.open("/web/viewer.html?file=" + encodeURIComponent(url));
|
|
|
+ },
|
|
|
+ /* 预览文档 */
|
|
|
+ openDoc(url) {
|
|
|
+ window.open("https://view.officeapps.live.com/op/view.aspx?src=" + url);
|
|
|
+ },
|
|
|
onTargetChange(data) {
|
|
|
- this.curElegantItem.classes = [data.at(-1)]
|
|
|
+ this.curElegantItem.classes = [data.at(-1)];
|
|
|
},
|
|
|
- onTypeChange(data,origin) {
|
|
|
- this.curElegantItem.bizType = origin.map(i => i.label)
|
|
|
+ onTypeChange(data, origin) {
|
|
|
+ this.curElegantItem.bizType = origin.map((i) => i.label);
|
|
|
},
|
|
|
getTargetList() {
|
|
|
if (!this.curPeriod?.id) return;
|
|
|
+ this.isLoading = true
|
|
|
let params = {
|
|
|
tmdid: this.$store.state.userInfo.TEAMModelId,
|
|
|
schoolId: this.$store.state.userInfo.schoolCode,
|
|
@@ -277,18 +327,20 @@
|
|
|
this.$api.common.getActivityTarget(params).then(
|
|
|
(res) => {
|
|
|
this.allList = res.groupLists;
|
|
|
+ this.isLoading = false
|
|
|
},
|
|
|
(err) => {
|
|
|
this.$Messag.error(this.$t("ae.ae15"));
|
|
|
+ this.isLoading = false
|
|
|
}
|
|
|
);
|
|
|
},
|
|
|
onAddElegant() {
|
|
|
this.editModal = true;
|
|
|
this.fileType = "image";
|
|
|
- this.videoFilePreviewList = []
|
|
|
- this.docFilePreviewList = []
|
|
|
- this.imgFilePreviewList = []
|
|
|
+ this.videoFilePreviewList = [];
|
|
|
+ this.docFilePreviewList = [];
|
|
|
+ this.imgFilePreviewList = [];
|
|
|
this.curElegantItem = {
|
|
|
title: "",
|
|
|
content: "",
|
|
@@ -296,15 +348,15 @@
|
|
|
bizCode: "elegant",
|
|
|
target: "",
|
|
|
attachments: [],
|
|
|
- classes:[],
|
|
|
- bizType:[]
|
|
|
+ classes: [],
|
|
|
+ bizType: []
|
|
|
};
|
|
|
},
|
|
|
onDrawerChange() {
|
|
|
this.fileType = "image";
|
|
|
- this.videoFilePreviewList = []
|
|
|
- this.docFilePreviewList = []
|
|
|
- this.imgFilePreviewList = []
|
|
|
+ this.videoFilePreviewList = [];
|
|
|
+ this.docFilePreviewList = [];
|
|
|
+ this.imgFilePreviewList = [];
|
|
|
this.curElegantItem = {
|
|
|
title: "",
|
|
|
content: "",
|
|
@@ -312,8 +364,8 @@
|
|
|
target: "",
|
|
|
createTime: 0,
|
|
|
attachments: [],
|
|
|
- classes:[],
|
|
|
- bizType:[]
|
|
|
+ classes: [],
|
|
|
+ bizType: []
|
|
|
};
|
|
|
},
|
|
|
onImgClick(imgList, index) {
|
|
@@ -324,8 +376,8 @@
|
|
|
imgList: imgList.map((i) => this.getFullPath(i.url))
|
|
|
});
|
|
|
},
|
|
|
- onVideoClick(file) {
|
|
|
- let full = this.getFullPath(file.url)
|
|
|
+ onVideoClick(file) {
|
|
|
+ let full = this.getFullPath(file.url);
|
|
|
console.log(full);
|
|
|
},
|
|
|
onEditElegant(item, index) {},
|
|
@@ -371,12 +423,12 @@
|
|
|
desc: file.name + " 文件格式错误"
|
|
|
});
|
|
|
},
|
|
|
- handleDocFormatError(file) {
|
|
|
+ handleDocFormatError(file) {
|
|
|
this.$Notice.warning({
|
|
|
title: "上传素材文件格式错误",
|
|
|
desc: file.name + " 文件格式错误"
|
|
|
});
|
|
|
- this.docFilePreviewList.pop()
|
|
|
+ this.docFilePreviewList.pop();
|
|
|
},
|
|
|
onBeforeUpload(file) {
|
|
|
if (this.fileType === "image") {
|
|
@@ -389,7 +441,7 @@
|
|
|
return;
|
|
|
}
|
|
|
this.imgFilePreviewList.push(file);
|
|
|
- } else if(this.fileType === 'video') {
|
|
|
+ } else if (this.fileType === "video") {
|
|
|
if (this.videoFilePreviewList.length) {
|
|
|
this.$Message.warning("最多允许上传1个视频素材!");
|
|
|
return;
|
|
@@ -399,8 +451,8 @@
|
|
|
return;
|
|
|
}
|
|
|
this.videoFilePreviewList.push(file);
|
|
|
- }else{
|
|
|
- if (this.docFilePreviewList.length > 5) {
|
|
|
+ } else {
|
|
|
+ if (this.docFilePreviewList.length > 5) {
|
|
|
this.$Message.warning("最多允许上传5个素材!");
|
|
|
return;
|
|
|
}
|
|
@@ -409,16 +461,16 @@
|
|
|
return;
|
|
|
}
|
|
|
this.docFilePreviewList.push(file);
|
|
|
- }
|
|
|
+ }
|
|
|
},
|
|
|
onRemoveFile(fileIndex) {
|
|
|
if (this.fileType === "image") {
|
|
|
this.imgFilePreviewList.splice(fileIndex, 1);
|
|
|
} else if (this.fileType === "video") {
|
|
|
this.videoFilePreviewList = [];
|
|
|
- } else{
|
|
|
- this.docFilePreviewList.splice(fileIndex, 1);
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ this.docFilePreviewList.splice(fileIndex, 1);
|
|
|
+ }
|
|
|
},
|
|
|
/* 保存上传 */
|
|
|
async onConfirm() {
|
|
@@ -427,7 +479,7 @@
|
|
|
this.$Message.warning("请填写完整!");
|
|
|
return;
|
|
|
}
|
|
|
- if ((this.fileType === "image" && !this.imgFilePreviewList.length) || (this.fileType === "video" && !this.videoFilePreviewList.length) || (this.fileType === "doc" && !this.docFilePreviewList.length)) {
|
|
|
+ if ((this.fileType === "image" && !this.imgFilePreviewList.length) || (this.fileType === "video" && !this.videoFilePreviewList.length) || (this.fileType === "doc" && !this.docFilePreviewList.length)) {
|
|
|
this.$Message.warning("素材附件不可为空!");
|
|
|
return;
|
|
|
}
|
|
@@ -437,10 +489,10 @@
|
|
|
this.btnLoading = true;
|
|
|
this.containerClient = new BlobTool(n.url, n.name, n.sas, "school");
|
|
|
try {
|
|
|
- if(this.isCustomType){
|
|
|
- params.bizType[2] = this.customType
|
|
|
- }
|
|
|
- let files = this.fileType === "image" ? this.imgFilePreviewList : this.fileType === "video" ? this.videoFilePreviewList : this.docFilePreviewList
|
|
|
+ if (this.isCustomType) {
|
|
|
+ params.bizType[2] = this.customType;
|
|
|
+ }
|
|
|
+ let files = this.fileType === "image" ? this.imgFilePreviewList : this.fileType === "video" ? this.videoFilePreviewList : this.docFilePreviewList;
|
|
|
let uploadResult = await this.uploadFiles(files, elegantId);
|
|
|
params.attachments = uploadResult;
|
|
|
params.id = elegantId;
|
|
@@ -483,14 +535,19 @@
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- getSuffix() {
|
|
|
- return name => {
|
|
|
- return name.substr(name.lastIndexOf(".") + 1)
|
|
|
- }
|
|
|
- },
|
|
|
- isCustomType(){
|
|
|
- return this.curElegantItem.bizType.at(-1) === '自定义'
|
|
|
- },
|
|
|
+ getClassNameById(){
|
|
|
+ return id => {
|
|
|
+ return this.allList.length ? this.allList.find(i => i.id === id)?.name : ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getSuffix() {
|
|
|
+ return (name) => {
|
|
|
+ return name.substr(name.lastIndexOf(".") + 1);
|
|
|
+ };
|
|
|
+ },
|
|
|
+ isCustomType() {
|
|
|
+ return this.curElegantItem.bizType.at(-1) === "自定义";
|
|
|
+ },
|
|
|
/* 当前学段信息 */
|
|
|
curPeriod() {
|
|
|
return this.$store.state.user.curPeriod;
|
|
@@ -529,12 +586,12 @@
|
|
|
let child = this.allList.filter((classItem) => {
|
|
|
return classItem.year == curYear - index && classItem.type == "class";
|
|
|
});
|
|
|
- if(child.length){
|
|
|
- child.forEach(i => {
|
|
|
- i.value = i.id
|
|
|
- i.label = i.name
|
|
|
- })
|
|
|
- }
|
|
|
+ if (child.length) {
|
|
|
+ child.forEach((i) => {
|
|
|
+ i.value = i.id;
|
|
|
+ i.label = i.name;
|
|
|
+ });
|
|
|
+ }
|
|
|
dataItem.children = child.length ? child : undefined;
|
|
|
if (child.length) data.push(dataItem);
|
|
|
});
|
|
@@ -553,7 +610,15 @@
|
|
|
return url + "?" + this.schoolProfile.blob_sas;
|
|
|
};
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ "$store.state.user.curSemester": {
|
|
|
+ deep: true,
|
|
|
+ handler(n, old) {
|
|
|
+ this.getTargetList()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -574,9 +639,9 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /deep/ .el-input__inner{
|
|
|
- padding: 0 10px !important;
|
|
|
- }
|
|
|
+ /deep/ .el-input__inner {
|
|
|
+ padding: 0 10px !important;
|
|
|
+ }
|
|
|
|
|
|
.elegant-list {
|
|
|
width: 100%;
|
|
@@ -586,7 +651,6 @@
|
|
|
align-items: center;
|
|
|
padding: 15px;
|
|
|
overflow: auto;
|
|
|
-
|
|
|
|
|
|
.ivu-timeline {
|
|
|
height: 100%;
|
|
@@ -615,21 +679,25 @@
|
|
|
color: #817f7f;
|
|
|
}
|
|
|
}
|
|
|
- .file-list{
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- .file-item{
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- color: #2d83ca;
|
|
|
- margin:5px 0;
|
|
|
- cursor: pointer;
|
|
|
- img{
|
|
|
- width: 20px;
|
|
|
- margin-right: 10px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ .ivu-timeline-item{
|
|
|
+ padding-bottom: 40px !important;
|
|
|
+ }
|
|
|
+ .file-list {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ .file-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ color: #2d83ca;
|
|
|
+ margin: 5px 0;
|
|
|
+ cursor: pointer;
|
|
|
+ img {
|
|
|
+ width: 20px;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
.img-list {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|