EditContact.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <!-- 新建联系人弹窗 -->
  3. <el-dialog append-to-body :title="title" :visible.sync="contactVisible" @close="contactClose">
  4. <el-form ref="contactForm" :model="contactForm" :rules="contactRules">
  5. <el-row :gutter="20">
  6. <el-col :span="12">
  7. <el-form-item label="联系人姓名" prop="name">
  8. <el-input v-model="contactForm.name" placeholder="请输入联系人姓名" />
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="12">
  12. <el-form-item label="尊称" prop="honorific">
  13. <el-radio-group v-model="contactForm.honorific">
  14. <el-radio label="未知">未知</el-radio>
  15. <el-radio label="女士">女士</el-radio>
  16. <el-radio label="先生">先生</el-radio>
  17. </el-radio-group>
  18. </el-form-item>
  19. </el-col>
  20. </el-row>
  21. <el-row :gutter="20">
  22. <el-col :span="12">
  23. <el-form-item label="职位" prop="post">
  24. <el-input v-model="contactForm.post" placeholder="请输入职位" />
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="12">
  28. <el-form-item label="手机号码" prop="phone">
  29. <el-input v-model="contactForm.phone" maxlength="11" placeholder="请输入手机号码" />
  30. </el-form-item>
  31. </el-col>
  32. </el-row>
  33. <el-row :gutter="20">
  34. <el-col :span="12">
  35. <el-form-item label="电子邮箱" prop="mail">
  36. <el-input v-model="contactForm.mail" placeholder="请输入电子邮箱" />
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="12">
  40. <el-form-item label="微信" prop="wechat">
  41. <el-input v-model="contactForm.wechat" placeholder="请输入微信" />
  42. </el-form-item>
  43. </el-col>
  44. </el-row>
  45. <el-row :gutter="20">
  46. <el-col :span="12">
  47. <el-form-item label="负责区域/业务线" prop="territory">
  48. <el-input v-model="contactForm.territory" placeholder="请输入负责区域/业务线" />
  49. </el-form-item>
  50. </el-col>
  51. </el-row>
  52. </el-form>
  53. <span slot="footer">
  54. <el-button v-show="contactForm.id" type="primary" @click="contactEdit">保存</el-button>
  55. <el-button v-show="!contactForm.id" type="primary" @click="contactSave">保存</el-button>
  56. <el-button @click="contactVisible = false">取消</el-button>
  57. </span>
  58. </el-dialog>
  59. </template>
  60. <script>
  61. import to from 'await-to-js'
  62. import distrApi from '@/api/base/distr'
  63. export default {
  64. props: {
  65. distId: {
  66. type: Number,
  67. default: () => 0,
  68. },
  69. },
  70. data() {
  71. var validateTel = (rule, value, callback) => {
  72. const reg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
  73. if (value === '') {
  74. // callback(new Error('请输入手机号码'))
  75. callback()
  76. } else if (!reg.test(value)) {
  77. callback(new Error('请输入正确手机号码'))
  78. } else {
  79. callback()
  80. }
  81. }
  82. var validatemail = (rule, value, callback) => {
  83. const reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/
  84. if (!value) {
  85. callback()
  86. } else if (!reg.test(value)) {
  87. callback(new Error('请输入正确邮箱'))
  88. } else {
  89. callback()
  90. }
  91. }
  92. return {
  93. title: '新增联系人',
  94. contactVisible: false,
  95. contactForm: {
  96. id: null,
  97. name: '', //联系人名字
  98. honorific: '未知',
  99. phone: '', //电话
  100. wechat: '', //微信
  101. mail: '', //邮箱
  102. post: '', //部门
  103. territory: '', //负责区域、业务线
  104. },
  105. contactRules: {
  106. name: [{ required: true, trigger: 'blur', message: '请输入联系人姓名' }],
  107. territory: [{ required: true, trigger: 'blur', message: '请输入负责区域/业务线' }],
  108. honorific: [{ trigger: 'blur', message: '请选择尊称' }],
  109. post: [{ trigger: 'blur', message: '请输入部门名称' }],
  110. wechat: [{ trigger: 'blur', message: '请输入微信号' }],
  111. phone: [{ trigger: 'blur', validator: validateTel }],
  112. mail: [{ trigger: 'blur', validator: validatemail }],
  113. },
  114. }
  115. },
  116. methods: {
  117. open(row = null) {
  118. if (row) {
  119. this.contactForm = { ...row }
  120. }
  121. this.contactVisible = true
  122. },
  123. // 联系人新建
  124. async contactSave() {
  125. this.$refs.contactForm.validate(async (valid) => {
  126. if (valid) {
  127. if (!this.contactForm.wechat && !this.contactForm.telephone) {
  128. this.$message.warning('电话和微信二者必须填写其一。')
  129. return
  130. }
  131. let params = { ...this.contactForm, distId: this.distId }
  132. console.log(params)
  133. const [err, res] = await to(distrApi.addContact(params))
  134. if (err) return
  135. if (res.code == 200) {
  136. this.$message.success('新建联系人成功')
  137. this.contactVisible = false
  138. this.$emit('initData')
  139. }
  140. }
  141. })
  142. },
  143. // 联系人编辑
  144. async contactEdit() {
  145. this.$refs.contactForm.validate(async (valid) => {
  146. if (valid) {
  147. if (!this.contactForm.wechat && !this.contactForm.telephone) {
  148. this.$message.warning('电话和微信二者必须填写其一。')
  149. return
  150. }
  151. let params = { ...this.contactForm, distId: this.distId }
  152. console.log(params)
  153. const [err, res] = await to(distrApi.updateContact(params))
  154. if (err) return
  155. if (res.code == 200) {
  156. this.$message.success('更新联系人成功')
  157. this.contactVisible = false
  158. this.$emit('initData')
  159. }
  160. }
  161. })
  162. },
  163. contactClose() {
  164. this.$refs['contactForm'].resetFields()
  165. },
  166. },
  167. }
  168. </script>
  169. <style></style>