From 1e49e17d482e3a3e67108bdffa4ae5f374e26cb8 Mon Sep 17 00:00:00 2001 From: zhaoxiaoqiang <287285524@qq.com> Date: Thu, 31 Aug 2023 18:05:46 +0800 Subject: [PATCH] 订单管理管理员订单管理 --- src/components/upload.vue | 368 ++++++++++++++++------------------------------------ 1 files changed, 115 insertions(+), 253 deletions(-) diff --git a/src/components/upload.vue b/src/components/upload.vue index 0af7d97..faf40f5 100644 --- a/src/components/upload.vue +++ b/src/components/upload.vue @@ -2,294 +2,156 @@ * @Author: zxq * @Date: 2022-01-05 18:44:53 * @LastEditors: zhaoxiaoqiang 287285524@qq.com - * @LastEditTime: 2023-08-24 14:39:04 + * @LastEditTime: 2023-08-31 14:56:53 * @Description: Description - * @FilePath: \qyp_finlean_plat\src\components\upload.vue + * @FilePath: \sjzl-plat\src\components\upload.vue --> <template> - <div style="width: 100%"> + <div> <el-upload - action="#" - :limit="limit" - multiple - class="upload-demo" - :list-type="!isUploadOther?'picture-card':''" - :disabled="disabled" - :on-exceed="masterFileMax" - :before-upload="beforeAvatarUpload" - :http-request="uploadFileData" - :file-list="PicList" - :class="[uploadDisabled ? 'updispaly' : '']" - > - <el-button v-if="isUploadOther" size="small" icon="el-icon-plus" type="primary" >点击上传</el-button> - <i v-else slot="default" class="el-icon-plus"></i> - <div slot="file" slot-scope="{ file }"> - <template v-if="isUploadOther"> - <div class="pdf_style" v-if='file.url'> - <template - v-if=" - file.url - .substring(file.url.lastIndexOf('.')) - .split('.')[1] - .trim() != 'pdf' - " + action="#" + :limit='limit' + multiple + :disabled='disabled' + list-type="picture-card" + :on-exceed="masterFileMax" + :before-upload="beforeAvatarUpload" + :http-request="uploadFileData" + :file-list="pictureList" + > + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{ file }"> + <!-- <span>{{ file.url }}</span> --> + <img class="el-upload-list__item-thumbnail" :src="file.url" alt=""/> + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handlePictureCardPreview(file)" > - <div :style="imgStyle" class="img_box"> - <img - class="el-upload-list__item-thumbnail" - :style="imgStyle" - :src="file.url" - alt="" - /> - <div class="el-upload-list__item-actions" :style="imgStyle"> - <span class="el-upload-list__item-preview"> - <i - class="el-icon-zoom-in" - style="color: #fff; font-size: 20px" - @click="handlePictureCardPreview(file)" - ></i> - <i - class="el-icon-delete" - style="color: #fff; font-size: 20px" - @click="handleRemoveLoanT(file)" - ></i> - </span> - </div> - </div> - </template> - <template v-else> - <div class="pdf_box"> - <span>{{ file.fileName }}</span> - <i - class="el-icon-delete delete_file" - style="color: #fff; font-size: 20px" - @click="handleRemoveLoanT(file)" - ></i> - </div> - </template> - </div> - </template> - <template v-else> - <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" /> - <span class="el-upload-list__item-actions"> - <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)"> - <i class="el-icon-zoom-in"></i> + <i class="el-icon-zoom-in"></i> </span> - <span v-if='!disabled' class="el-upload-list__item-delete" @click="handleRemoveLoanT(file)"> - <i class="el-icon-delete"></i> + <span v-if='!disabled' + class="el-upload-list__item-delete" + @click="handleRemoveLoanT(file)" + > + <i class="el-icon-delete"></i> </span> - </span> - </template> - </div> + </span> + </div> </el-upload> - <el-dialog - title="查看图片" - :append-to-body="true" - top="0" - :visible.sync="imgVisible" - class="dialogImageUrlbox" - > - <img width="100%" :src="dialogImageUrl" alt="" /> + <el-dialog title="查看图片" top="1vh" :append-to-body='true' :visible.sync="imgVisible" class='dialogImageUrlbox'> + <img width="80%" :src="dialogImageUrl" alt="" /> </el-dialog> </div> </template> + <script> -import axios from "axios"; import { uploadFile } from "@/api/user"; import { imgShrink } from "@/utils/validate"; -import {showTipOfStatuCode} from '@/utils/statusCodeManage' + export default { - props: { - limit: { - type: Number | String, - default: "", - }, - disabled: { + props:{ + limit: { + type: Number, + default: 1 + }, + disabled: { type: Boolean, - default: false, - }, - defaultList: { + default: false + }, + defaultList:{ type: Array, - default: () => { - return []; - }, - }, - imgSize: { - type: Object, - default: () => { - return {}; - }, - }, - imgStyle: { - type: Object, - default: () => { - return { - width: "100px", - height: "100px", - }; - }, - }, - isUploadOther: { + default: ()=>{ + return [] + } + }, + isProject:{ type: Boolean, - default: false, - }, + default: false + } }, data() { - return { - PicList: [], - imgVisible: false, - dialogImageUrl: "", - uploadFileForm: { - suffix: "", - base64Data: "", - }, - uploadDisabled: false, - }; + return { + pictureList:[], + imgVisible:false, + dialogImageUrl:'', + uploadFileForm:{ + suffix:"", + base64Data:"" + } + }; }, - watch: { - defaultList: { - handler: function (val) { - this.PicList = val; - }, - deep: true, - }, + watch:{ + defaultList:{ + handler: function(val) { + console.log(val) + this.pictureList = val; + }, + deep: true + } }, methods: { - beforeAvatarUpload(file, type) { - var testmsg = !/\/(?:jpg|jpeg|png|pdf)/i.test(file.type); - const isLt5M = file.size / 1024 / 1024 < 100; - if (testmsg) { - this.$message.error("请检查文件格式"); - return false; - } - if (!isLt5M) { - this.$message.error("上传图片大小不能超过 100MB!"); - return false; - } - }, - uploadFileData(file, type) { - if(this.isUploadOther){ - var formData = new FormData(); //新建表单对象 - formData.append("file", file.file); //把文件对象添加到表单对象里 - formData.append("filename", file.file.name); //把文件名称添加到表单对象里 - axios.post("/sfPlat/pub/uploadLargeFile", formData).then(({ data }) => { - let { fileUrl, fileName, fileId } = data.body; - this.PicList.push({ - fileUrl: fileUrl, - fileName, - url: fileUrl, - fileId, - }); - this.$emit("sendList", this.PicList); - }) - .catch((err) => { - showTipOfStatuCode(err) - }); - }else{ + beforeAvatarUpload(file,type) { + var testmsg = /^image\/(jpeg|png|jpg)$/.test(file.type); + const isLt5M = file.size / 1024 / 1024 < 15; + if (!testmsg) { + this.$message.error("上传图片格式不对!"); + return false; + } + if (!isLt5M) { + this.$message.error("上传图片大小不能超过 15MB!"); + return false; + } + }, + uploadFileData(file,type) { //上传图片 const fileName = file.file.name; - this.uploadFileForm.suffix = fileName.substr(fileName.lastIndexOf(".") + 1, fileName.length); - imgShrink(file.file,this.imgSize.width,this.imgSize.height).then(resBase64 => { - this.uploadFileForm.base64Data = resBase64.split(",")[1]; - //直接拿到base64信息 - uploadFile(this.uploadFileForm).then(res => { - this.PicList.push({ - filePath: res.body.fileUrl, - fileName: fileName, - url: res.body.fileUrl, - fileId: res.body.fileId + this.uploadFileForm.suffix = fileName.substr( fileName.lastIndexOf(".") + 1,fileName.length); + imgShrink(file.file).then(resBase64 => { + this.uploadFileForm.base64Data = resBase64.split(",")[1]; + let apiEvent = {uploadFile}; + //直接拿到base64信息 + apiEvent["uploadFile"](this.uploadFileForm).then(res => { + this.pictureList.push({ + filePath: res.body.fileUrl, + fileName: fileName, + uid: file.file.uid, + url: res.body.fileUrl, + fileId:res.body.fileId + }); + this.$emit('sendList',this.pictureList); }); - this.uploadDisabled = this.PicList.length >= 1 && this.limit==1 - this.$emit('sendList', this.PicList); - }); }); + }, + handlePictureCardPreview(file) { + this.dialogImageUrl = file.url; + this.imgVisible = true; + }, + handleRemoveLoanT(file) { + const index = this.pictureList.findIndex(item => { + return item.uid == file.uid; + }); + this.pictureList.splice(index,1); + this.$emit('sendList',this.pictureList); + }, + masterFileMax(){ + this.$message.warning(`请最多上传 ${this.limit} 个文件。`); } - }, - handlePictureCardPreview(file) { - this.dialogImageUrl = file.url; - this.imgVisible = true; - }, - handleRemoveLoanT(file) { - const index = this.PicList.findIndex((item) => { - return item.fileId == file.fileId; - }); - this.PicList.splice(index, 1); - this.uploadDisabled = this.PicList.length >= 1 && this.limit == 1; - this.$emit("sendList", this.PicList); - }, - masterFileMax() { - this.$message.warning(`最多上传 ${this.limit} 个文件。`); - }, }, - created() {}, mounted() { if (this.defaultList.length > 0) { - this.PicList = this.defaultList; - this.uploadDisabled = this.PicList.length >= 1 && this.limit == 1; + this.pictureList = this.defaultList; + this.uploadDisabled = this.pictureList.length >= 1 && this.limit == 1; } }, }; </script> -<style lang="scss"> -.updispaly { - .el-upload--picture-card { - display: none; - } - .el-upload { - width: 100% !important; - height: 100% !important; - } - .uplaod_img > .el-upload--picture-card { - width: 100% !important; - height: 100% !important; - } +<style> +.el-upload--picture-card , .el-upload-list__item{ + width: 74px !important; + height: 74px !important; + line-height: 76px !important; } -.pdf_style{ - .img_box { - position: relative; - margin-right: 5px; - margin-bottom: 5px; - } - .el-upload-list__item { - width: inherit !important; - } - .el-upload-list__item-actions { - position: absolute !important; - top: 0 !important; - left: 0; - display: flex; - justify-content: center; - align-items: center; - opacity: 0; - background: rgba(0, 0, 0, 0.5); - } - - .img_box:hover .el-upload-list__item-actions { - opacity: 1; - } - .el-upload-list { - display: flex !important; - justify-content: flex-start !important; - align-items: center !important; - flex-wrap: wrap !important; - } - .pdf_box { - padding: 5px 0; - padding-right: 24px; - display: flex; - justify-content: flex-start; - align-items: center; - } - .delete_file { - display: inline-block; - margin-left: 12px; - opacity: 0; - } - .pdf_box:hover .delete_file { - opacity: 1; - color: #666 !important; - } -} - + </style> -- Gitblit v1.8.0