<template> <div class="container"> <div class="flex-start top"> <div class="flex-start"> <van-cell-group class="gn"> <van-cell title="专柜LOGO" class="logo" > <template slot="default"> <van-uploader v-model="logoList" :max-count="1" class="input" :after-read="afterRead" :before-read="beforeRead" @delete="deleteLogo" > <div> <van-icon name="photo" size="20" /> </div> </van-uploader> </template> </van-cell> <van-cell title="专柜名称"> <template slot="default"> <van-field v-model="addForm.name" placeholder="输入名称" class="input" /> </template> </van-cell> <van-cell title="专柜地址"> <template slot="default"> <van-field v-model="addForm.location" placeholder="输入地址" class="input" /> </template> </van-cell> <van-cell title="电话"> <template slot="default"> <van-field v-model="addForm.phone" placeholder="输入电话" class="input" /> </template> </van-cell> <div class="border"> <div class="des">摘要信息</div> <van-field v-model="addForm.summaryTitle" rows="4" autosize type="textarea" placeholder="请输入摘要信息" show-word-limit maxlength="30" /> </div> </van-cell-group> </div> <div class="flex-start fwb"> <div class="txt">轮播图</div> <van-uploader v-model="bannerList" :max-count="4" class="pic" :before-read="beforeRead" :after-read="afterAddBanner" @delete="deleteBanner" multiple="true" /> <quill-editor v-model="addForm.summary" ref="myQuillEditor" :options="editorOption" @change="onEditorChange($event)" ></quill-editor> </div> </div> <div class="creat" @click="handleSave">保存信息</div> </div> </template> <script> import { quillEditor, Quill } from "vue-quill-editor"; import { container, ImageExtend, QuillWatch } from "quill-image-extend-module"; import { editStore, getStoreDetail } from "@/api/sidebar/voucher"; import "quill/dist/quill.core.css"; import "quill/dist/quill.snow.css"; import "quill/dist/quill.bubble.css"; Quill.register("modules/ImageExtend", ImageExtend); import axios from "axios"; import { log } from "util"; const toolbarOptions = [ [{ size: ["small", false, "large", "huge"] }], // 字体大小 ["image"] // 图片 ]; export default { components: { quillEditor }, data() { return { addForm: { logo: '', summaryTitle: '', name: '', location: '', summary: '', phone: '' }, oyStallCode: "", list: [], bannerList: [], title: "", logoList: [], // 富文本框参数设置 editorOption: { modules: { ImageExtend: { name: "file", // 图片参数名 // size: 3, action: "http://139.155.48.151:8084/admin/auth/util/saveImg", response: res => { console.log(res.data.imgPath,'富文本'); return res.data.imgPath; }, headers: xhr => { // xhr.setRequestHeader('Content-Type','multipart/form-data') } // 可选参数 设置请求头部 }, toolbar: { // 如果不上传图片到服务器,此处不必配置 container: toolbarOptions, // container为工具栏,此次引入了全部工具栏,也可自行配置 placeholder: "请输入正文", handlers: { image: function() { // 劫持原来的图片点击按钮事件 QuillWatch.emit(this.quill.id); } } } } } }; }, mounted() { this.addForm.oyStallCode = sessionStorage.getItem("oyStallCode"); console.log(this.addForm.oyStallCode, "编辑专柜信息oyStallCode"); this.getDetail() }, methods: { getDetail() { let params = { oyStallCode: this.addForm.oyStallCode } getStoreDetail(params).then(res => { if (res.data.stallInfo != null) { console.log(res, "详情"); this.list = res.data.carousel; let obj = {}; obj.url = res.data.stallInfo.logo; this.logoList.push(obj); res.data.carousel.forEach(item => { let obj2 = {}; obj2.url = item; this.bannerList.push(obj2); }); this.addForm = res.data.stallInfo; } }); }, change(val) { console.log(val); }, onEditorChange({ editor, html, text }) { this.$emit("input", this.addForm.summary); }, beforeRead(file) { if(file.type) { if (file.type !== "image/jpeg" && file.type !== "image/png") { this.$toast("只允许上传jpg/png格式的图片!") return false; } }else { console.log(222); file.forEach( item => { if (item.type !== "image/jpeg" && item.type !== "image/png") { this.$toast("只允许上传jpg/png格式的图片!") } }) // console.log(file,'file'); // console.log(file.type,'file.type'); } //上传之前校验 return true; }, async afterRead(file) { // this.addForm.logo = await this.getImgUrl(file.file)//使用上传的方法。file.file this.addForm.logo = await this.getImgUrl(file.file); console.log(this.addForm.logo, "this.addForm.logo"); }, async getImgUrl(file) { let params = new FormData() params.append("file", file) let url = "http://139.155.48.151:8084/admin/auth/util/saveImg" const img = await axios.post(url, params) let urls = img.data.data.imgPath; console.log(urls, "urls"); return urls; }, async afterAddBanner(file) { if(file.file) { let img = await this.getImgUrl(file.file); this.list.push(img); }else { file.forEach(async item => { let imgs = await this.getImgUrl(item.file) this.list.push(imgs); console.log(this.list,'list1') }) } }, deleteBanner(file, index) { this.list.splice(index.index, 1); }, deleteLogo(file) { this.addForm.logo = ""; }, handleSave() { const carousel = this.list.join(';') // this.addForm.oyStallCode = 1 delete this.addForm.id if(!this.addForm.logo){ this.$toast("请上传logo") return false } if(!this.addForm.name){ this.$toast("请输入专柜名称") return false } if(!this.addForm.location){ this.$toast("请输入专柜地址") return false } if(!this.addForm.phone){ this.$toast("请输入电话号码") return false } if(!this.addForm.summaryTitle){ this.$toast("请输入摘要信息") return false } if(!this.addForm.summary){ this.$toast("请输入正文") return false } console.log(Object.assign(this.addForm,{ carousel }),'11'); editStore(Object.assign(this.addForm,{ carousel })).then( res => { if(res.result == 'success') { this.$router.go(-1) } }) } } }; </script> <style > </style> <style scoped> .logo >>> .van-cell__value { padding: 10px 0 0 0; } .pic { border-bottom: 2px solid #ebedf0; } .pic >>> .van-uploader__wrapper { justify-content: center; } .txt { font-size: 18px; color: rgba(45, 71, 106, 1); font-weight: bold; margin: 6px 16px 4px; } .top { background: #f8f8f8; } .fwb { margin-top: 10px; } .container { min-height: 100%; height: auto; background: #f8f8f8; display: flex; justify-content: space-between; flex-direction: column; align-items: center; } .content { background: #fff; height: auto; } .creat { margin: 20px 0; width: 343px; height: 40px; line-height: 40px; background: rgba(117, 178, 253, 1); border-radius: 10px; font-size: 16px; font-weight: bold; color: rgba(255, 255, 255, 1); text-align: center; bottom: 0; } .des { font-size: 14px; font-weight: bold; color: rgba(45, 71, 106, 1); margin-bottom: 12px; } .detail { background-color: #fff; padding: 12px 16px 0 16px; } .border { padding: 15px; } .border >>> .van-field__control { text-align: left !important; background-color: #f8f8f8; } .border >>> .van-cell { padding: 0; } .van-cell__value, .van-cell__value--alone { text-align: right; } .input { padding: 0; } .gn >>> .van-field__control { text-align: right; } .gn >>> .van-cell__title { font-size: 14px; font-weight: bold; color: rgba(45, 71, 106, 1); } .gn { width: 100%; padding-bottom: 12px; } .input >>> .van-uploader__input-wrapper { width: 100%; } </style>