<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>