addContact.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <template>
  2. <div>
  3. <el-button size="small" type="primary" @click="addBtn(drawerFormVisible = true)">添加</el-button>
  4. <el-drawer
  5. title="添加联系人"
  6. :visible.sync="drawerFormVisible"
  7. size="600px"
  8. direction="rtl"
  9. :show-close="false"
  10. append-to-body
  11. @close="onClose">
  12. <div class="drawer__panel">
  13. <el-row :gutter="20">
  14. <el-form :model="form" :rules="rules" ref="form" size="mini" label-position="right" label-width="90px">
  15. <el-col :span="24">
  16. <el-form-item label="姓名:" prop="name">
  17. <contactsNewTemplate ref="contactRef" ownertable="sys_enterprise" :isParam="true" :newParam="param" @contactData="contactData" ></contactsNewTemplate>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="24">
  21. <el-form-item >
  22. <el-radio v-model="form.isTelephone" label="0" disabled>手机号</el-radio>
  23. <el-radio v-model="form.isTelephone" label="1" disabled>座机电话</el-radio>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="24" v-if="form.isTelephone == '1'">
  27. <el-form-item label="联系方式:" prop="telephone" >
  28. <el-input v-model="form.areaCode" style="width: 25%" autocomplete="on" placeholder="请填写区号" disabled></el-input>
  29. <span style="color: #999999">——</span>
  30. <el-input v-model="form.telephone" style="width: 68%" autocomplete="on" placeholder="请填写座机电话" disabled></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="24" >
  34. <el-form-item v-if="form.isTelephone == '0'" label="联系方式:" prop="phonenumber" :rules="[
  35. { required: true, message: '手机号码不能为空'},
  36. { pattern:/^1[3-9][0-9]\d{8}$/, message: '请输入正确手机号码',trigger: 'change' }
  37. ]">
  38. <el-input v-model="form.phonenumber" autocomplete="on" placeholder="请填写手机号码" disabled></el-input>
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="24">
  42. <el-form-item label="微信:" prop="wechatnum" >
  43. <el-input autosize v-model="form.wechatnum" placeholder="请输入微信" disabled></el-input>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="24">
  47. <el-form-item label="邮箱:" :rules="[
  48. { pattern:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message: '请输入有效的邮箱',trigger: 'change' }
  49. ]">
  50. <el-input autosize v-model="form.email" placeholder="请输入邮箱" disabled></el-input>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="24">
  54. <el-form-item label="传真:" >
  55. <el-input autosize v-model="form.fax" placeholder="请输入传真" disabled></el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="24">
  59. <el-form-item label="关联企业:" >
  60. <el-input autosize v-model="form.enterprisename" placeholder="请输入关联企业" disabled></el-input>
  61. </el-form-item>
  62. </el-col>
  63. <el-col :span="24">
  64. <el-form-item label="部门:" prop="depname" >
  65. <el-input autosize v-model="form.depname" placeholder="请输入部门" disabled></el-input>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="24">
  69. <el-form-item label="职位:" prop="position">
  70. <el-input autosize v-model="form.position" placeholder="请输入职位" disabled></el-input>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="24">
  74. <el-form-item label="性别:" >
  75. <el-radio v-model="form.sex" label="男" disabled>男</el-radio>
  76. <el-radio v-model="form.sex" label="女" disabled>女</el-radio>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="24">
  80. <el-form-item label="生日:" >
  81. <el-date-picker
  82. disabled
  83. v-model="form.birthday"
  84. value-format="yyyy-MM-dd"
  85. type="date"
  86. placeholder="选择日期"
  87. style="width: 100%"
  88. >
  89. </el-date-picker>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="24">
  93. <el-form-item label="家庭住址:" >
  94. <el-input type="textarea" rows="5" v-model="form.address" placeholder="请输入家庭住址" disabled></el-input>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="24">
  98. <el-form-item label="偏好" prop="preference" >
  99. <el-input v-model="form.preference" autocomplete="on" placeholder="请填写偏好" disabled></el-input>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item label="爱好" prop="hobby" >
  104. <el-input v-model="form.hobby" autocomplete="on" placeholder="请填写爱好" disabled></el-input>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="24">
  108. <el-form-item label="备注:" >
  109. <el-input type="textarea" rows="5" v-model="form.remarks" placeholder="请输入备注" disabled></el-input>
  110. </el-form-item>
  111. </el-col>
  112. </el-form>
  113. </el-row>
  114. </div>
  115. <div class="fixed__btn__panel">
  116. <el-button size="small" @click="onClose" class="normal-btn-width" :disabled="loading">取 消</el-button>
  117. <el-button size="small" type="primary" :loading="loading" @click="onSubmit" class="normal-btn-width">确 定</el-button>
  118. </div>
  119. </el-drawer>
  120. </div>
  121. </template>
  122. <script>
  123. import contactsNewTemplate from '@/template/contactsNewTemplate/index'
  124. export default {
  125. name: "addContact",
  126. components:{contactsNewTemplate},
  127. props:['data'],
  128. data(){
  129. var validateMobilePhone = (rule, value, callback) => {
  130. if (value === '') {
  131. callback(new Error('手机号不可为空'));
  132. } else {
  133. if (value !== '') {
  134. var reg=/^1[3456789]\d{9}$/;
  135. if(!reg.test(value)){
  136. callback(new Error('请输入有效的手机号码'));
  137. }
  138. }
  139. callback();
  140. }
  141. };
  142. var telephone = (rule,value,callback) =>{
  143. if (this.form.areaCode === '' && this.form.telephone === ''){
  144. callback(new Error('座机电话不能为空'))
  145. } else {
  146. var reg=/^0\d{2,3}-\d{7,8}$/
  147. let telephone = this.form.areaCode + '-' + this.form.telephone
  148. if (!reg.test(telephone)){
  149. callback(new Error('请输入正确座机电话'))
  150. } else {
  151. callback();
  152. }
  153. }
  154. }
  155. return {
  156. drawerFormVisible:false,
  157. loading:false,
  158. form:{
  159. contactsid: 0,
  160. sys_enterpriseid: "",
  161. name: "",
  162. sex: "",
  163. depname: "",
  164. position: "",
  165. birthday: "",
  166. phonenumber: "",
  167. email: "",
  168. address: "",
  169. remarks: "",
  170. enterprisename:'',
  171. province: "",
  172. city: "",
  173. county: "",
  174. workaddress: 0,
  175. isdefault: 1,
  176. isprimary: 1,
  177. sys_phonebookid:'',
  178. telephone:'',
  179. fax:'',
  180. ownerid: this.$route.query.id,
  181. ownertable: "sa_customers",
  182. isTelephone:'0',
  183. areaCode:'',
  184. company:''
  185. },
  186. rules:{
  187. name: [
  188. { required: true, message: '姓名不能为空', trigger: 'change' },
  189. ],
  190. telephone:[
  191. { required: true, validator: telephone, trigger: 'change' }
  192. ],
  193. depname: [
  194. { required: true, message: '部门不能为空', trigger: 'blur' },
  195. ],
  196. position: [
  197. { required: true, message: '职位不能为空', trigger: 'blur' },
  198. ],
  199. },
  200. param:{
  201. "id": 20240923153304,
  202. "content": {
  203. "sa_contractid": this.$route.query.id,
  204. "pageNumber": 1,
  205. "pageSize": 20,
  206. "where": {
  207. "condition": ""
  208. }
  209. }
  210. }
  211. }
  212. },
  213. methods:{
  214. addBtn(){
  215. this.$refs.form.clearValidate()
  216. },
  217. onSubmit(){
  218. this.$refs.form.validate(async(valid)=>{
  219. if (!valid) return false
  220. this.loading = true
  221. const res = await this.$api.requested({
  222. "id": 20240923153004,
  223. "content": {
  224. "sa_contractid": this.$route.query.id,
  225. "sys_phonebookid": this.form.sys_phonebookid
  226. }
  227. })
  228. this.loading = false
  229. this.tool.showMessage(res,()=>{
  230. this.$emit('addSuccess')
  231. this.onClose()
  232. })
  233. })
  234. },
  235. onClose(){
  236. this.drawerFormVisible = false
  237. this.form = {}
  238. this.$refs.contactRef.nameValue = ''
  239. },
  240. contactData(val){
  241. this.form = Object.assign({},this.form,val)
  242. this.form.name = val.name
  243. if (val.phonenumber.indexOf('-') != '-1'){
  244. this.form.isTelephone = '1'
  245. this.form.areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
  246. this.form.telephone = val.phonenumber.substring(this.form.areaCode.length+1)
  247. this.form.phonenumber = ''
  248. }else {
  249. this.form.isTelephone = '0'
  250. this.form.phonenumber = val.phonenumber
  251. this.form.areaCode = ''
  252. this.form.telephone = ''
  253. }
  254. },
  255. }
  256. }
  257. </script>
  258. <style scoped>
  259. </style>