<template>
|
<zt-dialog ref="dialog" @confirm="formSubmit" column="4">
|
<el-form :model="dataForm" style="padding: 0" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
|
<zt-form-item label="图片名称" prop="name" rules="required">
|
<el-input v-model="dataForm.name"></el-input>
|
</zt-form-item>
|
<zt-form-item label="产品类型" prop="productType" rules="required">
|
<zt-dict v-model="dataForm.productType" dict="product" :additional=additional></zt-dict>
|
</zt-form-item>
|
<zt-form-item label="是否默认" prop="isDefault" rules="required">
|
<zt-dict v-model="dataForm.isDefault" dict="is_or_not"></zt-dict>
|
</zt-form-item>
|
<zt-form-item label="检索关键字" prop="contentType">
|
<el-input v-model="dataForm.contentType"></el-input>
|
</zt-form-item>
|
<zt-form-item label="备注" prop="remark">
|
<el-input v-model="dataForm.remark"></el-input>
|
</zt-form-item>
|
<input type="hidden" id="svgContentId" :value="dataForm.svgContent"/>
|
<zt-form-item>
|
<!-- <el-upload action="*" :on-change="uploadSvgContent">-->
|
<!-- <el-button slot="trigger" size="small" type="primary">选取文件</el-button>-->
|
<!-- </el-upload>-->
|
<label class="custom-file-upload">
|
<input type="file" @change="uploadSvgContent"/>
|
</label>
|
</zt-form-item>
|
</el-form>
|
<iframe :src='SVGEditorUrl' ref="myIframe" width="100%" id="iframe"
|
style="height:calc(100vh - 300px)">
|
|
</iframe>
|
</zt-dialog>
|
</template>
|
|
<script>
|
import Cookies from "js-cookie";
|
|
export default {
|
data() {
|
return {
|
additional: [{dictValue: '20', dictLabel: '运算图元', remark: ''}],
|
SVGEditorUrl: `/SVGOrigin/Method-Draw-master/editor/index.html`,
|
url: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=`,
|
fileList: [],
|
dataForm: {
|
id: '',
|
isDefault: '',
|
name: '',
|
svgContent: '',
|
contentType: '',
|
productType: '',
|
remark: ''
|
},
|
readonly: {
|
type: Boolean,
|
default: false
|
},
|
}
|
},
|
methods: {
|
async init(id,row) {
|
if (id) {
|
//let res = await this.$http.get(`/sysPictureBase/${this.dataForm.id}`)
|
this.dataForm = {
|
...this.dataForm,
|
...row
|
}
|
console.log(this.dataForm, 'this.dataForm this.dataForm')
|
}
|
},
|
httpRequest(option) {
|
this.fileList.length = 0
|
this.fileList.push(option)
|
},
|
// 上传前处理
|
beforeUpload(file) {
|
let fileSize = file.size
|
const FIVE_M = 5 * 1024 * 1024;
|
//大于5M,不允许上传
|
if (fileSize > FIVE_M) {
|
this.$message.error("最大上传5M")
|
return false
|
}
|
if (fileSize = 0) {
|
this.$message.error("未上传图片")
|
return false
|
}
|
},
|
// 文件数量过多时提醒
|
handleExceed() {
|
this.$message({type: 'error', message: '最多支持1个附件上传'})
|
},
|
// 获取信息
|
async getInfo2() {
|
let res = await this.$http.get(`/sysPictureBase/${this.dataForm.id}`)
|
this.dataForm = {
|
...this.dataForm,
|
...res.data
|
}
|
console.log(this.dataForm, 'async getInfo()')
|
},
|
// 表单提交
|
async formSubmit() {
|
const iframeWindow = this.$refs.myIframe.contentWindow;
|
this.dataForm.svgContent = iframeWindow.getSVGContentTest()
|
console.log(this.dataForm.svgContent + 'this.dataForm.svgContent')
|
this.$http.post('/sysPictureBase/save', this.dataForm).then(res => {
|
if (res.success) {
|
console.log(this.dataForm, 'this.dataForm')
|
this.$tip.success()
|
this.$refs.dialog.close()
|
this.$emit('refreshDataList')
|
}
|
})
|
// 使用form表单的数据格式
|
},
|
async uploadSvgContent(event) {
|
const iframeWindow = this.$refs.myIframe.contentWindow
|
const file = event.target.files[0];
|
console.log(file, 'file file')
|
// 可以在这里进行进一步的文件处理,比如读取文件内容等操作
|
if (file && file.type === 'image/svg+xml') {
|
const reader = new FileReader();
|
reader.onload = (e) => {
|
const fileContent = e.target.result;
|
console.log('File content:', fileContent);
|
iframeWindow.setSvgContent(fileContent)
|
}
|
reader.readAsText(file); // 以文本形式读取文件内容
|
} else {
|
this.$message({message: '请选择SVG图片', type: 'warning'})
|
return false; // 取消操作
|
}
|
// iframeWindow.setSvgContent(data)
|
// 使用form表单的数据格式
|
}
|
},
|
mounted() {
|
// window.addEventListener('message', this.handleIframeMessage);
|
},
|
beforeDestroy() {
|
window.removeEventListener('message', this.handleIframeMessage);
|
},
|
}
|
</script>
|
<style>
|
.custom-file-upload {
|
border: 1px solid #ccc;
|
display: inline-block;
|
padding: 0 12px;
|
cursor: pointer;
|
background-color: #f9f9f9;
|
}
|
|
.img-sc > .el-form-item > .el-form-item__content {
|
width: 100%;
|
}
|
|
.marginTopAndMarginBottom {
|
margin-top: 10px !important;
|
margin-bottom: 0 !important;
|
}
|
|
/*.zt .el-dialog .el-dialog__body .el-form {
|
min-height: 310px !important;
|
}*/
|
</style>
|