You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.1 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-dialog title="打款" :visible.sync="dialogFormVisible" width="500px" @close="close" :close-on-click-modal="false" v-dialogDrag>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="保证金">
<el-input v-model.trim="form.guaranteeMoney" readonly></el-input>
</el-form-item>
<el-form-item label="打款回执" prop="imageUrl">
<el-upload class="avatar-uploader" :limit="10" ref="upload" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleChange">
<img v-if="form.imageUrl" :src="form.imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { doPay } from "@/api/discount-coupon/management.js";
export default {
name: 'pay',
data() {
return {
form: {}, //需要提交的数据
rules: {
imageUrl: [
{ required: true, message: '请上传回执', trigger: ['blur', 'change'] },
],
},//form校验规则
dialogFormVisible: false//弹窗显示
}
},
created() { },
methods: {
// ============================ 弹窗 ============================ //
// 显示弹窗
show(row) {
row.state = 5
this.form = Object.assign({}, row);
this.dialogFormVisible = true
},
// 关闭弹窗
close() {
this.handleClear()
this.form = Object.assign({}, {});
this.dialogFormVisible = false
},
// ============================ 操作 ============================ //
// 选择图片后形成图片访问路径和将文件流传给edit.vue
handleChange(file, fileList) {
let form = Object.assign({}, this.form);
form.imageUrl = URL.createObjectURL(file.raw);//形成虚拟文件访问路径
form.multipartFile = file.raw //要上传的图片流
this.form = Object.assign({}, form);
this.$refs.form.validateField(['imageUrl'])
},
// 发布后清除选择的文件
handleClear() {
this.$refs.upload.clearFiles();
},
// 保存
save() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let form = Object.assign({}, this.form);
for (let key in form) {
// format写法会将null类型强行转化成字符串的null传到后台后台会报错所以需要删掉值为null的字段
if (form[key] !== 0 && !form[key]) {
delete form[key]
}
// 这三个数组无法用format传值会自动被编译成字符串[object object],后台无法识别,所以需要删掉
if (key == 'useStores' || key == 'useProjects' || key == 'fileLists') {
delete form[key]
}
}
let format = new FormData()
Object.keys(form).map(key => {
format.append(key, form[key])
})
let { code, message } = await doPay(format)
if (code == '000000') {
this.$message({
message: message,
type: 'success'
});
// 成功后刷新父页面的数据
this.$emit('fetch-data');
// 关闭弹窗
this.close()
}
if (code == '010000') {
this.$message({
message: message,
type: 'error'
});
}
} else {
return false
}
})
},
},
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
background-color: #fff;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 150px;
height: 150px;
line-height: 150px;
text-align: center;
}
.avatar {
width: 150px;
height: 150px;
display: block;
}
</style>