<template> <el-dialog :title="dialogObj.title" :visible.sync="dialogObj.show" center width="800px"> <el-form :model="form" :rules="rules" ref="form"> <el-form-item label="合同协议名称" prop="contract_name" label-width="120px"> <el-input v-model="form.contract_name" clearable></el-input> </el-form-item> <el-form-item label="类型" prop="contract_type" label-width="120px"> <el-select v-model="form.contract_type" placeholder="请选择" clearable> <el-option label="用户协议" value="0"></el-option> <el-option label="正式课合同" value="1"></el-option> </el-select> </el-form-item> <el-form-item label="关联商品" label-width="120px"> <el-select multiple v-model="form.goods_ids" placeholder="请选择" clearable :popper-class="'refresh-select-multi width-480'" style="width: 480px"> <el-option v-for="data in goodslist" :key="data.id" :label="`【${data.id}】${data.name}`" :value="data.id"> </el-option> </el-select> </el-form-item> <el-form-item label="合同/协议文本" prop="" label-width="120px" required> <!-- <el-input type="textarea" :rows="10" v-model="form.contract_text"></el-input>--> <editor-detail :lookData="form.contract_text"/> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="dialogObj.show = false">取 消</el-button> <el-button type="primary" @click="sub">保 存</el-button> </span> </el-dialog> </template> <script> import {contractGoodslistApi, contractAddApi, contractEditApi} from "../../service/api"; import editorDetail from "./editorDetail"; export default { name: "dialogObj", props: [ 'dialogObj' ], components: { editorDetail }, data() { return { form: { contract_name: '', contract_type: '', goods_ids: [], contract_text: { detail: "" } }, goodslist: [], rules: { contract_name: [ {required: true, message: '请输入赠品名称'}, {max: 20, message: '合同协议名称不能超过20汉字'} ], contract_type: [ {required: true, message: '请选择类型', trigger: 'change'} ] } } }, methods: { sub() { if (!this.form.contract_text.detail || this.form.contract_text.detail == "<!DOCTYPE html>\n<html>\n<head>\n</head>\n<body>\n\n</body>\n</html>") { this.$message({ message: '合同/协议文本不能为空', type: 'error' }); return; } this.$refs['form'].validate((valid) => { if (valid) { let json = { contract_name: this.form.contract_name, contract_type: this.form.contract_type, goods_ids: this.form.goods_ids.join(','), contract_text: this.form.contract_text.detail }; switch (this.dialogObj.type) { case 0: contractAddApi(json).then(res => { this.$message({ type: 'success', message: '新增成功!' }); this.$emit("reflash"); this.dialogObj.show = false; }); break; case 1: contractEditApi(this.dialogObj.id, json).then(res => { this.$message({ type: 'success', message: '修改成功!' }); this.$emit("reflash"); this.dialogObj.show = false; }); break; } } else { return false; } }); } }, created() { contractGoodslistApi().then(res => { this.goodslist = res.goods_list; }); }, watch: { 'dialogObj.show'() { this.$nextTick(() => { this.form.goods_ids = []; this.form.contract_text.detail = ''; this.$refs['form'].resetFields(); if (this.dialogObj.type == 1) { let goods_ids_arr = []; if (this.dialogObj.goods_ids) { this.dialogObj.goods_ids.split(',').map(i => { goods_ids_arr.push(Number(i)); }); } this.form.name = this.dialogObj.name; this.form.contract_name = this.dialogObj.contract_name; this.form.contract_type = this.dialogObj.contract_type.toString(); this.form.goods_ids = goods_ids_arr; this.form.contract_text.detail = this.dialogObj.contract_text; } }); } } } </script> <style scoped> </style>