From 87317f44d9cc20ad70b6971168667e1c843e03d8 Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Fri, 26 Aug 2022 01:16:50 +0800 Subject: [PATCH] 添加上传进度条 添加日志统计文字 --- src/components/mini/box10-add.vue | 161 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 108 insertions(+), 53 deletions(-) diff --git a/src/components/mini/box10-add.vue b/src/components/mini/box10-add.vue index 6a4b427..e7f0ea4 100644 --- a/src/components/mini/box10-add.vue +++ b/src/components/mini/box10-add.vue @@ -21,18 +21,10 @@ </span> </a-form-model-item> - <a-form-model-item label="日志文件" v-show="!form.online"> - <!-- <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76" - :default-file-list="form.blogFileList"> - <a-button> - <a-icon type="upload" /> 限 markdown/html - </a-button> - </a-upload> --> - - <a-upload :customRequest="customRequest" name="file" :showUploadList="true" @change="handleChange" - :default-file-list="form.blogFileList" :beforeUpload="beforeUpload"> - + <a-upload ref="blogFileUpload" :customRequest="customRequest" name="file" :showUploadList="true" + @change="handleChange" :default-file-list="form.blogFileList" :beforeUpload="beforeUpload" + :data="{'bucketName':bucketName.bucket_article}" accept=".md,.html,.htm,.txt"> <a-button> <a-icon type="upload" />限 markdown/html </a-button> @@ -66,15 +58,28 @@ </span> </a-form-model-item> - <a-form-model-item label=" 日志类型"> - <a-radio-group v-model="form.blogType"> - <a-radio value="1"> + <a-form-model-item label=" 日志主类型"> + <a-select v-model="form.blogType" mode="default" placeholder="" + :getPopupContainer="getCalendarContainer()"> + <a-select-option value="1"> markdown - </a-radio> - <a-radio value="2"> + </a-select-option> + <a-select-option value="2"> html - </a-radio> - </a-radio-group> + </a-select-option> + <a-select-option value="3"> + 视频 + </a-select-option> + <a-select-option value="4"> + 音频 + </a-select-option> + <a-select-option value="5"> + 图组 + </a-select-option> + <a-select-option value="9"> + taking + </a-select-option> + </a-select> </a-form-model-item> @@ -102,16 +107,11 @@ <a-form-model-item label="封面"> - <!-- <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76" list-type="picture" - :default-file-list="form.coverFileList" class="upload-list-inline"> - <a-button> - <a-icon type="upload" /> jpg/png/jpeg.. - </a-button> - </a-upload> --> - <a-upload :customRequest="customRequest" name="file" :showUploadList="true" list-type="picture" - @change="handleChangeCoverFile" - :default-file-list="form.coverFileList"> + :data="{'bucketName':bucketName.bucket_cover}" @change="handleChangeCoverFile" + :default-file-list="form.coverFileList" :beforeUpload="beforeUploadCover" + accept=".jpg,.png,.jpeg"> + <!-- :disabled="form.coverFileList.length>=1" --> <a-button> <a-icon type="upload" />jpg/png/jpeg.. </a-button> @@ -165,7 +165,7 @@ </a-radio-group> </a-form-model-item> - <a-form-model-item label="授权密码" v-show="form.auth=='password'"> + <a-form-model-item label="授权密码" v-show="form.auth==3"> <a-input-password v-model="form.password" autocomplete='new-password' type="password" placeholder="独立密码"> <a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" /> @@ -184,13 +184,16 @@ <script> import moment from "moment"; import { - sysFileInfoUpload + sysFileInfoUpload, + myFileInfoUpload } from '../../api/fileManage.js'; import { queryBlogArticleType } from '../../api/blogArticleType.js' + import myConstant from "../../config/myConstant.js" + import md5 from 'js-md5'; export default { beforeMount() { @@ -199,18 +202,16 @@ }) }, data() { - + let _this = this; let validateContent = (rule, value, callback) => { - if (this.form.online) { - console.log("内容未填"); - this.$refs.myForm.validateField('content') - if (this.form.content == null || this.form.content == "") { + if (_this.form.online) { + //this.$refs.myForm.validateField('content') + if (_this.form.content == null || _this.form.content == "") { callback(new Error('内容未填')); } } else { - console.log("文件未传"); - this.$refs.myForm.validateField('blogFileList') - if (this.form.fileId == null) { + //this.$refs.myForm.validateField('blogFileList') + if (_this.form.fileId == null) { callback(new Error('文件未传')); } } @@ -218,6 +219,7 @@ }; return { + bucketName: myConstant.bucketName, blogArticleType: [], tags: [], inputVisible: false, @@ -240,7 +242,7 @@ publishDate: "", lock: false, top: false, - sliderValue:50, + sliderValue: 50, auth: 1, password: "", fileId: null, @@ -263,7 +265,7 @@ ], secret: [{ required: true, - message: '不正经的人..', + message: '好像这里错了..', trigger: 'blur' }], common: [{ @@ -291,21 +293,41 @@ }; }, methods: { - beforeUpload(file, fileList) { + reset() { + // this.form.blogFileList = []; + // this.form.coverFileList = []; + }, + beforeUploadCover(file, fileList) { return new Promise((resolve, reject) => { - if (this.form.fileId != null) { + if (this.form.secret == null || this.form.secret == "") { + this.$message.error('需要正确的授权码'); + return reject(false); + } + + if (this.form.coverFileList.length >= 1) { this.$message.error('这里最多上传一个文件'); return reject(false); } - // var testmsg=/^image\/(jpeg|png|jpg)$/.test(file.type) - // // var testmsg=/^image\/(md|html|markdown)$/.test(file.type) - // if (!testmsg) { - // this.$message.error('上传文件格式不对!'); - // return reject(false); - // } + if (file.size > myConstant.uploadFileSizeLimit) { + this.$message.error('上传文件大小不能超过 2M!'); + return reject(false); + } + return resolve(true) + }); + }, + beforeUpload(file, fileList) { + return new Promise((resolve, reject) => { + if (this.form.secret == null || this.form.secret == "") { + this.$message.error('需要正确的口令..'); + return reject(false); + } - const isLt2M = file.size / 1024 / 1024 <= 2 //图片大小不超过2MB - if (!isLt2M) { + if (this.form.blogFileList.length >= 1) { + this.$message.error('这里最多上传一个文件'); + return reject(false); + } + + if (file.size > myConstant.uploadFileSizeLimit) { this.$message.error('上传文件大小不能超过 2M!'); return reject(false); } @@ -314,6 +336,8 @@ }, handleChange(info) { + this.form.blogFileList = info.fileList; + if (info.file.status !== 'uploading') { console.log(info.file, info.fileList); } @@ -323,8 +347,14 @@ } else if (info.file.status === 'error') { this.$message.error(`${info.file.name} file upload failed.`); } + + if (this.form.blogFileList == null || this.form.blogFileList.length == 0) { + this.form.fileId = null + } }, handleChangeCoverFile(info) { + this.form.coverFileList = info.fileList; + if (info.file.status !== 'uploading') { console.log(info.file, info.fileList); } @@ -334,6 +364,10 @@ } else if (info.file.status === 'error') { this.$message.error(`${info.file.name} file upload failed.`); } + + if (this.form.coverFileList == null || this.form.coverFileList.length == 0) { + this.form.coverFile = null + } }, /** * 上传文件 @@ -341,15 +375,36 @@ customRequest(option) { const formData = new FormData() formData.append('file', option.file) - sysFileInfoUpload(formData).then((res) => { + formData.append('bucketName', option.data.bucketName) + formData.append('authCode', this.form.secret == "" ? "" : md5(this.form.secret)) + myFileInfoUpload(formData).then((res) => { if (res.success) { this.$message.success('上传成功') - option.onSuccess(res, option.file) + // 在上传成功后进度条显示为99 + progress.percent = 100 } else { this.$message.error('上传失败:' + res.message) } }) + + let progress = { + percent: 1 + } + let speed = 100 / (option.file.size / 65000) //上传速度 + const intervalId = setInterval(() => { + // 控制进度条防止在未上传成功时进度条达到100 + if (progress.percent < 99 && progress.percent + speed < 100) { + progress.percent += speed //控制进度条速度 + option.onProgress(progress) //onProgress接收一个对象{ percent: 进度 }在进度条上显示 + } else if ((progress.percent < 100)) { + progress.percent++ + } else if (progress.percent >= 100) { + clearInterval(intervalId) + } + }, 500) + + }, disabledDate(current) { return current < moment().subtract(1, "day"); @@ -358,9 +413,9 @@ return trigger => trigger.parentNode; }, handleClose(removedTag) { - const tags = this.tags.filter(tag => tag !== removedTag); + // const tags = this.tags.filter(tag => tag !== removedTag); //console.log(tags); - this.tags = tags; + this.tags = this.tags.filter(tag => tag !== removedTag); }, showInput() { -- Gitblit v1.9.1