edit.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div>
  3. <el-button type="text" size="small" @click="onShow(dialogFormVisible = true)">编 辑</el-button>
  4. <el-dialog title="新建联系人" :visible.sync="dialogFormVisible" append-to-body width="50%">
  5. <el-row :gutter="20">
  6. <el-form :model="form" ref="form" label-position="right" label-width="90px" size="small">
  7. <el-col :span="12">
  8. <el-form-item label="姓名" prop="name" :rules="[
  9. { required: true, message: '联系人姓名不能为空'},
  10. ]">
  11. <el-input v-model="form.name" autocomplete="on" placeholder="输入联系人姓名"></el-input>
  12. </el-form-item>
  13. </el-col>
  14. <!-- <el-col :span="12">
  15. <el-form-item label="性别">
  16. <el-select v-model="form.sex" style="width:100%">
  17. <el-option v-for="item in sys_options" :key="item.index" :value="item.value" :label="item.value"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. </el-col> -->
  21. <el-col :span="12">
  22. <el-form-item label="手机号码" prop="phonenumber" :rules="[
  23. { required: true, message: '手机号码不能为空'},
  24. { pattern:/^1[3-9][0-9]\d{8}$/, message: '请输入正确手机号码',trigger: 'blur' }
  25. ]">
  26. <el-input v-model="form.phonenumber" autocomplete="on" placeholder="输入联系人手机号码"></el-input>
  27. </el-form-item>
  28. </el-col>
  29. <!-- <el-col :span="12">
  30. <el-form-item label="生日">
  31. <el-date-picker
  32. style="width:100%"
  33. v-model="form.birthday"
  34. value-format="yyyy-MM-dd"
  35. type="date"
  36. placeholder="选择日期">
  37. </el-date-picker>
  38. </el-form-item>
  39. </el-col> -->
  40. <!-- <el-col :span="12">
  41. <el-form-item label="邮箱" prop="email" :rules="[
  42. { pattern:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, message: '请输入正确邮箱',trigger: 'blur' }
  43. ]">
  44. <el-input v-model="form.email" autocomplete="on" placeholder="输入联系人邮箱"></el-input>
  45. </el-form-item>
  46. </el-col> -->
  47. <el-col :span="12">
  48. <el-form-item label="省市县" prop="value" :rules="[
  49. { required: true, message: '选择省市县', trigger: 'change' },
  50. ]">
  51. <el-cascader
  52. style="width:100%"
  53. v-model="form.value"
  54. :options="basicData.data().areaData"
  55. @change="cascaderChange" clearable>
  56. </el-cascader>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="24">
  60. <el-form-item label="地址">
  61. <el-input v-model="form.address" type="textarea" :rows="3" autocomplete="on" placeholder="输入地址"></el-input>
  62. </el-form-item>
  63. </el-col>
  64. <!-- <el-col :span="12">
  65. <el-form-item label="部门">
  66. <el-input v-model="form.depname" autocomplete="on" placeholder="输入联系人部门"></el-input>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="12">
  70. <el-form-item label="职位">
  71. <el-input v-model="form.position" autocomplete="on" placeholder="输入联系人职位"></el-input>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12">
  75. <el-form-item label="是否负责人">
  76. <el-checkbox v-model="form.isleader" :true-label="1" :false-label="0"></el-checkbox>
  77. </el-form-item>
  78. </el-col> -->
  79. <el-col :span="24">
  80. <el-form-item label="备注">
  81. <el-input v-model="form.remarks" autocomplete="on" type="textarea" :rows="3" placeholder="输入联系人备注"></el-input>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="24">
  85. <el-form-item label="是否默认" prop="isdefault">
  86. <el-checkbox :true-label="1" :false-label="0" v-model="form.isdefault"></el-checkbox>
  87. </el-form-item>
  88. </el-col>
  89. </el-form>
  90. </el-row>
  91. <div slot="footer" class="dialog-footer">
  92. <el-button size="small" style="width:120px" @click="dialogFormVisible = false">取 消</el-button>
  93. <el-button size="small" style="width:120px" type="primary" @click="submitAddress()">确 定</el-button>
  94. </div>
  95. </el-dialog>
  96. </div>
  97. </template>
  98. <script>
  99. import {mapGetters} from 'vuex'
  100. export default {
  101. props:['mainData','row'],
  102. data () {
  103. return {
  104. dialogFormVisible:false,
  105. form:{
  106. "contactsid":0,
  107. "sys_enterpriseid":null,
  108. "name":"",
  109. "sex":"男",
  110. "depname":"",
  111. "position":"",
  112. "isleader":1,
  113. "birthday":'2022-01-01',
  114. "phonenumber":"",
  115. "email":"",
  116. "province":"",
  117. "city":"",
  118. "county":"",
  119. "address":"",
  120. "remarks":"",
  121. "workaddress":1,
  122. "value":[],
  123. "isdefault":0
  124. }
  125. }
  126. },
  127. computed:{
  128. ...mapGetters({
  129. sys_options:'sys_options'
  130. })
  131. },
  132. methods:{
  133. onShow () {
  134. this.$store.dispatch('optiontypeselect','sex')
  135. let arr = ['province','city','county']
  136. arr.forEach(e=>{
  137. this.row[e] !== '' ?this.form.value.push(this.row[e]):''
  138. })
  139. this.form = Object.assign({},this.form,this.row)
  140. },
  141. cascaderChange (val) {
  142. if (val.length === 1)
  143. return this.form = Object.assign({},this.form,{province:val[0],city:'',county:''})
  144. this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
  145. },
  146. submitAddress () {
  147. this.$refs['form'].validate(async (valid) => {
  148. if (!valid) return false;
  149. this.form.sys_enterpriseid = this.mainData.sys_enterpriseid
  150. this.form.workaddress = 1
  151. const res = await this.$api.requested({
  152. "id": "20221009155703",
  153. "version":1,
  154. "content": this.form
  155. })
  156. this.tool.showMessage(res,()=>{
  157. this.$emit('onAddSuccess')
  158. this.$refs['form'].resetFields();
  159. this.dialogFormVisible = false
  160. })
  161. });
  162. }
  163. },
  164. mounted () {
  165. }
  166. }
  167. </script>
  168. <style>
  169. </style>