index.vue 6.06 KB
Newer Older
1
<template>
dragondean@qq.com's avatar
dragondean@qq.com committed
2
  <el-dialog :visible.sync="show" :title="$t('快速新建客户')" :close-on-click-modal="false" class="quick-create-customer">
3
    <el-form ref="form" :model="form" :rules="rules" label-width="100px" :validate-on-rule-change="false">
dragondean@qq.com's avatar
dragondean@qq.com committed
4
      <el-form-item :label="$t('客户类别')" prop="type">
5 6
        <dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" form-type="checkbox" multiple v-model="form.type"></dict-selector>
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
7 8
      <el-form-item :label="$t('客户名称')" prop="name">
        <el-input v-model="form.name" :placeholder="$t('请输入客户名称')" />
9
      </el-form-item>
10 11 12 13 14 15
      <el-form-item :label="$t('国家')" prop="country">
        <el-select filterable clearable v-model="form.country" :placeholder="$t('请选择国家')">
          <el-option v-for="dict in countryList"
                      :key="dict.id" :label="$l(dict, 'name')" :value="parseInt(dict.id)" />
        </el-select>
      </el-form-item>
16

dragondean@qq.com's avatar
dragondean@qq.com committed
17 18
      <el-form-item :label="$t('联系人')" prop="customerContacts.0.name">
        <el-input v-model="form.customerContacts[0].name" :placeholder="$t('请输入联系人')" />
19
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
20 21
      <el-form-item :label="$t('手机号')" prop="customerContacts.0.phoneNew">
        <!-- <el-select v-model="form.customerContacts[0].areaCode" :placeholder="$t('请选择区号')" filterable class="w-200">
22 23
          <el-option v-for="(item, index) in countryList"
                      :key="index" :label="item.nameShort + item.nameZh + '(' + item.tel + ')'" :value="item.tel" />
dragondean@qq.com's avatar
dragondean@qq.com committed
24 25
        </el-select> -->
        <area-code-selector v-model="form.customerContacts[0].areaCode"  />
dragondean@qq.com's avatar
dragondean@qq.com committed
26
        <el-input v-model="form.customerContacts[0].phoneNew" maxlength="11" :placeholder="$t('请输入联系方式')" class="w-150 ml-10"/>
27
      </el-form-item>
28

dragondean@qq.com's avatar
dragondean@qq.com committed
29 30
      <el-form-item :label="$t('客户来源')" prop="source">
        <el-select v-model="form.source" :placeholder="$t('请选择客户来源')">
31 32 33 34
          <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
                      :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
        </el-select>
      </el-form-item>
35
      <!-- <el-form-item :label="$t('创建时间')" prop="createTime">
36 37 38 39
        <el-date-picker
          v-model="form.createTime"
          type="datetime"
          value-format="timestamp"
dragondean@qq.com's avatar
dragondean@qq.com committed
40
          :placeholder="$t('选择创建时间')">
41
        </el-date-picker>
42
      </el-form-item> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
43 44
      <el-form-item :label="$t('客户经理')" prop="customerService">
        <el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
45 46 47 48
          <el-option v-for="item in serviceUserList"
                      :key="item.id" :label="item.nickname" :value="item.id" />
        </el-select>
      </el-form-item>
49

dragondean@qq.com's avatar
dragondean@qq.com committed
50 51
      <el-form-item :label="$t('备注')" prop="remarks">
        <el-input v-model="form.remarks" :placeholder="$t('请输入备注')"/>
52 53 54
      </el-form-item>
    </el-form>
    <div style="text-align: right">
dragondean@qq.com's avatar
dragondean@qq.com committed
55 56
      <el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button>
      <el-button @click="cancel">{{$t('取消')}}</el-button>
57 58
    </div>
  </el-dialog>
59 60 61
</template>

<script>
62
import {createCustomer} from '@/api/ecw/customer'
63 64
import {listServiceUser} from "@/api/system/user"
import { getCountryListAll } from '@/api/ecw/country'
dragondean@qq.com's avatar
dragondean@qq.com committed
65
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
dragondean@qq.com's avatar
dragondean@qq.com committed
66
import AreaCodeSelector from '@/components/AreaCodeSelector'
67 68
export default {
  name: "quickCreateCustomer",
dragondean@qq.com's avatar
dragondean@qq.com committed
69
  components: {AreaCodeSelector},
70
  props:{
dragondean@qq.com's avatar
dragondean@qq.com committed
71
    type: String,
72
  },
73

74 75
  data(){
    return {
76 77
      show: true,

78 79
      // 表单参数
      form: {
dragondean@qq.com's avatar
dragondean@qq.com committed
80
        customerContacts:[{isDefault: 1}]
81 82
      },
      // 表单校验
dragondean@qq.com's avatar
dragondean@qq.com committed
83 84 85 86 87 88 89 90 91 92 93 94 95 96
      serviceUserList: [],
      countryList: [],
    }
  },
  watch:{
    show(){
      if(!this.show){
        this.$emit('close')
      }
    }
  },
  computed:{
    rules(){
      return {
97
        name                          : [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
98
        country                       : [{ required: true, message: this.$t("国家不能为空"), trigger: "blur" }],
99 100 101 102 103 104 105 106
        'customerContacts.0.phoneNew' : [{ required: true, message: this.$t("手机号不能为空"), trigger: "blur" }],
        'customerContacts.0.name'     : [{ required: true, message: this.$t("联系人不能为空"), trigger: "blur" }],
        type                          : [{ required: true, message: this.$t("客户类别不能为空"), trigger: "blur" }],
        createTime                    : [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
        source                        : [{ required: true, message: this.$t("客户来源不能为空"), trigger: "blur" }],
        customerService               : [{ required: true, message: this.$t("客户经理不能为空"), trigger: "blur" }],
        status                        : [{ required: true, message: this.$t("客户状态不能为空"), trigger: "blur" }],
        founder                       : [{ required: true, message: this.$t("创建人不能为空"), trigger: "blur" }],
107 108 109
      }
    }
  },
110
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
111 112
    if(this.type){
      this.$set(this.form, 'type', this.type)
113 114 115 116 117 118 119 120
    }
    listServiceUser().then(r => {
      this.serviceUserList = r.data
    })
    getCountryListAll().then(r => {
      this.countryList = r.data
    })
  },
121
  methods: {
122 123 124
    open(){
      this.show = true
    },
125 126
    /** 取消按钮 */
    cancel() {
127
      this.show = false
128 129 130 131 132 133 134 135
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (!valid) {
          return;
        }
        // 添加的提交
136 137 138
        let data = {...this.form}
        data.type = this.form.type.join(",")
        createCustomer(data).then(res => {
dragondean@qq.com's avatar
dragondean@qq.com committed
139
          this.$modal.msgSuccess(this.$t("新增成功"));
140
          return getCustomerContactsSelect({customerId: res.data})
dragondean@qq.com's avatar
dragondean@qq.com committed
141
        }).then(res => {
142
          this.$emit('success', res.data.list[0])
dragondean@qq.com's avatar
dragondean@qq.com committed
143
        })
144 145 146 147 148
      });
    },
  }
}
</script>
149
<style lang="scss">
150 151 152
.quick-create-customer .el-form-item{
  margin-bottom: 22px;
}
153
</style>