<template> 
 | 
  <div class="add-contacts"> 
 | 
    <el-dialog 
 | 
      :title="editContactsConfig.title + '联系人'" 
 | 
      :visible.sync="editConfig.visible" 
 | 
      :width="dialogWidth" 
 | 
      :before-close="handleClose" 
 | 
    > 
 | 
      <el-form 
 | 
        ref="form" 
 | 
        :model="editConfig.infomation" 
 | 
        :rules="rules" 
 | 
        label-position="right" 
 | 
        label-width="308px" 
 | 
        size="mini" 
 | 
      > 
 | 
        <!-- 信息 --> 
 | 
        <div class="basic-info"> 
 | 
          <!-- 基本信息 --> 
 | 
          <div v-if="isUnflod" class="basic-info-title">基本信息</div> 
 | 
          <div class="basic-info-view"> 
 | 
            <el-row> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="联系人姓名" prop="name"> 
 | 
                  <el-input v-model="editConfig.infomation.name"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12" v-if="isUnflod"> 
 | 
                <el-form-item label="联系人编号" prop="number"> 
 | 
                  <el-input v-model="editConfig.infomation.number"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="客户名称" prop="client_id"> 
 | 
                  <div class="custom-name"> 
 | 
                    <el-input v-model="editConfig.infomation.client_id"></el-input> 
 | 
                    <div class="common-select-btn"> 
 | 
                      <i class="el-icon-circle-plus-outline"></i> 
 | 
                    </div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="手机" prop="phone"> 
 | 
                  <el-input v-model="editConfig.infomation.phone"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="职务" prop="position"> 
 | 
                  <el-input v-model="editConfig.infomation.position"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item v-if="isUnflod" label="销售负责人" prop="member_id"> 
 | 
                  <el-select v-model="editConfig.infomation.member_id" placeholder="请选择" size="mini"> 
 | 
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> 
 | 
                    </el-option> 
 | 
                  </el-select> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item v-if="isUnflod" label="首要联系人" prop="is_first"> 
 | 
                  <el-switch v-model="editConfig.infomation.is_first" active-color="#2E68DB" inactive-color="#AEB9CA"> 
 | 
                  </el-switch> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item v-if="isUnflod" label="微信号" prop="wechat"> 
 | 
                  <el-input v-model="editConfig.infomation.wechat"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item v-if="isUnflod" label="生日" prop="birthday"> 
 | 
                  <el-date-picker v-model="editConfig.infomation.birthday" type="date" placeholder="选择日期"> 
 | 
                  </el-date-picker> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="联系人Email" prop="email"> 
 | 
                  <el-input v-model="editConfig.infomation.email"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
          </div> 
 | 
          <!-- 地址信息 --> 
 | 
          <div v-if="isUnflod" class="basic-info-title">地址信息</div> 
 | 
          <div v-if="isUnflod" class="basic-info-view"> 
 | 
            <el-row> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="国家" prop="country_id"> 
 | 
                  <div class="common-select"> 
 | 
                    <el-select 
 | 
                      v-model="editConfig.infomation.country_id" 
 | 
                      placeholder="请选择" 
 | 
                      class="common-select-sel" 
 | 
                      size="mini" 
 | 
                    > 
 | 
                      <el-option v-for="item in countryOptions" :key="item.id" :label="item.name" :value="item.id"> 
 | 
                      </el-option> 
 | 
                    </el-select> 
 | 
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="省份" prop="province_id"> 
 | 
                  <div class="common-select"> 
 | 
                    <el-select 
 | 
                      v-model="editConfig.infomation.province_id" 
 | 
                      placeholder="请选择" 
 | 
                      class="common-select-sel" 
 | 
                      size="mini" 
 | 
                    > 
 | 
                      <el-option v-for="item in provinceOptions" :key="item.id" :label="item.name" :value="item.id"> 
 | 
                      </el-option> 
 | 
                    </el-select> 
 | 
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="城市" prop="city_id"> 
 | 
                  <div class="common-select"> 
 | 
                    <el-select 
 | 
                      v-model="editConfig.infomation.city_id" 
 | 
                      placeholder="请选择" 
 | 
                      class="common-select-sel" 
 | 
                      size="mini" 
 | 
                    > 
 | 
                      <el-option v-for="item in cityOptions" :key="item.id" :label="item.name" :value="item.id"> 
 | 
                      </el-option> 
 | 
                    </el-select> 
 | 
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="区域" prop="region_id"> 
 | 
                  <div class="common-select"> 
 | 
                    <el-select 
 | 
                      v-model="editConfig.infomation.region_id" 
 | 
                      placeholder="请选择" 
 | 
                      class="common-select-sel" 
 | 
                      size="mini" 
 | 
                    > 
 | 
                      <el-option v-for="item in regionOptions" :key="item.id" :label="item.name" :value="item.id"> 
 | 
                      </el-option> 
 | 
                    </el-select> 
 | 
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
              <!-- <el-col :span="12"> 
 | 
                <el-form-item label="邮编" prop="postalCode"> 
 | 
                  <el-input v-model="editConfig.infomation.postalCode"></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> --> 
 | 
            </el-row> 
 | 
          </div> 
 | 
          <!-- 备注信息 --> 
 | 
          <div v-if="isUnflod" class="basic-info-title">备注信息</div> 
 | 
          <div v-if="isUnflod" class="basic-info-view"> 
 | 
            <el-row> 
 | 
              <el-col :span="24"> 
 | 
                <el-form-item label="备注" prop="desc"> 
 | 
                  <el-input 
 | 
                    type="textarea" 
 | 
                    :autosize="{ minRows: 2, maxRows: 4 }" 
 | 
                    placeholder="请输入内容" 
 | 
                    v-model="editConfig.infomation.desc" 
 | 
                  ></el-input> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
          </div> 
 | 
          <!-- 附件信息 --> 
 | 
          <!-- <div v-if="isUnflod" class="basic-info-title">附件信息</div> 
 | 
          <div v-if="isUnflod" class="basic-info-view"> 
 | 
            <el-row> 
 | 
              <el-col :span="12"> 
 | 
                <el-form-item label="附件" prop=""> 
 | 
                  <template slot="label"> 
 | 
                    <div style="display: flex; float: right"> 
 | 
                      <div style="font-size: 16px"> 
 | 
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i> 
 | 
                      </div> 
 | 
                      <span style="margin-left: 5px">附件</span> 
 | 
                    </div> 
 | 
                  </template> 
 | 
                  <div class="annex-view"> 
 | 
                    <div @click="addAnnexClick"> 
 | 
                      <div style="display: flex; float: right"> 
 | 
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div> 
 | 
                        <span>添加</span> 
 | 
                      </div> 
 | 
                    </div> 
 | 
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> 
 | 
                  </div> 
 | 
                </el-form-item> 
 | 
              </el-col> 
 | 
            </el-row> 
 | 
          </div> --> 
 | 
        </div> 
 | 
        <!-- 展开收起 --> 
 | 
        <div v-if="editConfig.title === '新建'" class="unflod-collapse" @click="unflodCollapseClick"> 
 | 
          <div>{{ unflodCollapseStr }}</div> 
 | 
          <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div> 
 | 
          <div v-else><i class="el-icon-arrow-down"></i></div> 
 | 
        </div> 
 | 
      </el-form> 
 | 
      <div slot="footer" class="dialog-footer"> 
 | 
        <el-button type="primary" size="small" @click="saveClick('form')">保 存</el-button> 
 | 
        <el-button size="small" @click="editConfig.visible = false">取 消</el-button> 
 | 
      </div> 
 | 
    </el-dialog> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import { getAddContact, getUpdateContact } from "@/api/client/contacts" 
 | 
import { getAllData } from "@/api/client/client" 
 | 
export default { 
 | 
  name: "AddContactsDialog", 
 | 
  props: { 
 | 
    editContactsConfig: { 
 | 
      type: Object, 
 | 
      default: () => { 
 | 
        return { 
 | 
          visible: false, 
 | 
          title: "新建", 
 | 
          infomation: { 
 | 
            name: "", 
 | 
            number: "", 
 | 
            client_id: "", 
 | 
            phone: "", 
 | 
            position: "", 
 | 
            member_id: "5", 
 | 
            is_first: false, 
 | 
            wechat: "1", 
 | 
            birthday: "", 
 | 
            email: "", 
 | 
            nextFollowupDate: "", 
 | 
            country_id: "", 
 | 
            province_id: "", 
 | 
            city_id: "", 
 | 
            region_id: "", 
 | 
            postalCode: "", 
 | 
            desc: "" 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  components: {}, 
 | 
  computed: {}, 
 | 
  data() { 
 | 
    return { 
 | 
      dialogWidth: "80%", 
 | 
      editConfig: this.editContactsConfig, 
 | 
      rules: { 
 | 
        name: [{ required: true, message: "请输入", trigger: "blur" }], 
 | 
        number: [{ required: true, message: "请输入", trigger: "blur" }], 
 | 
        member_id: [{ required: true, message: "请选择", trigger: "change" }] 
 | 
      }, 
 | 
      businessSourceOptions: [ 
 | 
        { value: "1", label: "后台注册" }, 
 | 
        { value: "2", label: "代理商客户" }, 
 | 
        { value: "3", label: "电话陌生拜访" }, 
 | 
        { value: "4", label: "直接访问" }, 
 | 
        { value: "5", label: "项目合作" }, 
 | 
        { value: "6", label: "个人自找" }, 
 | 
        { value: "7", label: "二次销售" }, 
 | 
        { value: "8", label: "公司电话" } 
 | 
      ], 
 | 
      memberOptions: [], 
 | 
      countryOptions: [], // 国家 
 | 
      provinceOptions: [], // 省份 
 | 
      cityOptions: [], // 城市 
 | 
      regionOptions: [], // 区域 
 | 
      unflodCollapseStr: "收起", 
 | 
      isUnflod: true 
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.getCommonData() 
 | 
  }, 
 | 
  methods: { 
 | 
    getCommonData() { 
 | 
      getAllData() 
 | 
        .then((res) => { 
 | 
          console.log(res) 
 | 
          this.memberOptions = res.data.member 
 | 
          this.countryOptions = res.data.country 
 | 
          this.provinceOptions = res.data.province 
 | 
          this.cityOptions = res.data.city 
 | 
          this.regionOptions = res.data.region 
 | 
        }) 
 | 
        .catch((err) => { 
 | 
          console.log(err) 
 | 
        }) 
 | 
    }, 
 | 
    handleClose() { 
 | 
      this.editConfig.visible = false 
 | 
    }, 
 | 
    // 保存 
 | 
    saveClick(formName) { 
 | 
      this.$refs[formName].validate((valid) => { 
 | 
        if (valid) { 
 | 
          console.log(this.editConfig.infomation) 
 | 
          const params = this.saveParams() 
 | 
          console.log(params) 
 | 
          if (this.editConfig.title === "新建") { 
 | 
            getAddContact(params) 
 | 
              .then((res) => { 
 | 
                console.log(res) 
 | 
                this.editConfig.visible = false 
 | 
                if (res.code === 200) { 
 | 
                  this.$message({ 
 | 
                    message: "添加成功", 
 | 
                    type: "success" 
 | 
                  }) 
 | 
                  this.$parent.getData() 
 | 
                } 
 | 
              }) 
 | 
              .catch((err) => { 
 | 
                console.log(err) 
 | 
              }) 
 | 
          } else { 
 | 
            getUpdateContact(params) 
 | 
              .then((res) => { 
 | 
                console.log(res) 
 | 
                this.editConfig.visible = false 
 | 
                if (res.code === 200) { 
 | 
                  this.$message({ 
 | 
                    message: "编辑成功", 
 | 
                    type: "success" 
 | 
                  }) 
 | 
                  this.$parent.getData() 
 | 
                } 
 | 
              }) 
 | 
              .catch((err) => { 
 | 
                console.log(err) 
 | 
              }) 
 | 
          } 
 | 
        } else { 
 | 
          console.log("error submit") 
 | 
          return false 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    saveParams() { 
 | 
      let data = this.editConfig.infomation 
 | 
      let params = { 
 | 
        id: this.editConfig.title === "新建" ? 0 : data.id, 
 | 
        birthday: data.birthday || "", 
 | 
        city_id: data.city_id || 0, 
 | 
        client_id: 0, 
 | 
        country_id: data.country_id || 0, 
 | 
        desc: data.desc || "", 
 | 
        email: data.email || "", 
 | 
        is_first: data.is_first || false, 
 | 
        member_id: data.member_id || 0, 
 | 
        name: data.name || "", 
 | 
        number: data.number || "", 
 | 
        phone: data.phone || "", 
 | 
        position: data.position || "", 
 | 
        province_id: data.province_id || 0, 
 | 
        region_id: data.region_id || 0, 
 | 
        wechat: data.wechat || "" 
 | 
      } 
 | 
      return params 
 | 
    }, 
 | 
    // 添加附件 
 | 
    addAnnexClick() {}, 
 | 
    // 设置允许上传文件格式 
 | 
    setFormatClick() {}, 
 | 
    // 展开收起 
 | 
    unflodCollapseClick() { 
 | 
      if (this.unflodCollapseStr === "收起") { 
 | 
        this.unflodCollapseStr = "展开更多栏目" 
 | 
        this.isUnflod = false 
 | 
      } else { 
 | 
        this.unflodCollapseStr = "收起" 
 | 
        this.isUnflod = true 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<!-- Add "scoped" attribute to limit CSS to this component only --> 
 | 
<style lang="scss" scoped> 
 | 
.add-contacts { 
 | 
  .basic-info { 
 | 
    .basic-info-title { 
 | 
      background-color: #f4f8fe; 
 | 
      padding-left: 10px; 
 | 
      font-size: 15px; 
 | 
      font-weight: bold; 
 | 
      color: #666; 
 | 
      height: 42px; 
 | 
      line-height: 42px; 
 | 
    } 
 | 
    .basic-info-view { 
 | 
      margin-top: 10px; 
 | 
      padding-right: 40px; 
 | 
      .custom-name { 
 | 
        display: flex; 
 | 
        .common-select-btn { 
 | 
          margin-left: 5px; 
 | 
          font-size: 16px; 
 | 
        } 
 | 
      } 
 | 
      .common-select { 
 | 
        display: flex; 
 | 
        .common-select-sel { 
 | 
          width: 270px; 
 | 
        } 
 | 
        .common-select-btn { 
 | 
          margin-left: 5px; 
 | 
          font-size: 16px; 
 | 
          cursor: pointer; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .annex-view { 
 | 
      display: flex; 
 | 
      color: #6166d3; 
 | 
      .setFormat { 
 | 
        margin-left: 10px; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .unflod-collapse { 
 | 
    display: flex; 
 | 
    height: 30px; 
 | 
    justify-content: center; 
 | 
    align-items: center; 
 | 
    color: #6166d3; 
 | 
  } 
 | 
  .dialog-footer { 
 | 
    background-color: #f5f5f5; 
 | 
    height: 55px; 
 | 
    line-height: 55px; 
 | 
  } 
 | 
} 
 | 
</style> 
 |