customer-add-or-update.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <el-dialog
  3. :title="!id ? '新增' : display ? '详情' : '编辑'"
  4. :close-on-click-modal="false"
  5. :visible.sync="visible">
  6. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="100px">
  7. <h4>基础信息</h4>
  8. <el-form-item label="客户名称" prop="customerName">
  9. <el-input v-model="dataForm.customerName" :disabled="display" placeholder="客户名称"></el-input>
  10. </el-form-item>
  11. <el-form-item label="客户类型" prop="customerType">
  12. <el-select
  13. v-model="dataForm.customerType"
  14. :disabled="display"
  15. placeholder="请选择">
  16. <el-option v-for="item in optionsCT"
  17. :key="item.value"
  18. :label="item.label"
  19. :value="item.value">
  20. </el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="客户级别" prop="level">
  24. <el-select
  25. v-model="dataForm.level"
  26. :disabled="display"
  27. remote
  28. placeholder="请选择">
  29. <el-option
  30. v-for="item in options"
  31. :key="item.code"
  32. :label="item.value"
  33. :value="item.code">
  34. </el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="详细地址" prop="address">
  38. <el-input v-model="dataForm.address" :disabled="display" placeholder="详细地址"></el-input>
  39. </el-form-item>
  40. <el-form-item label="电话" prop="tel">
  41. <el-input v-model="dataForm.tel" :disabled="display" placeholder="电话"></el-input>
  42. </el-form-item>
  43. <el-form-item label="邮编">
  44. <el-input v-model="dataForm.zipCode" :disabled="display" placeholder="邮编"></el-input>
  45. </el-form-item>
  46. <el-form-item label="传真">
  47. <el-input v-model="dataForm.fax" :disabled="display" placeholder="传真"></el-input>
  48. </el-form-item>
  49. <el-form-item label="网址">
  50. <el-input v-model="dataForm.url" :disabled="display" placeholder="网址"></el-input>
  51. </el-form-item>
  52. <el-form-item label="公司简介">
  53. <el-input v-model="dataForm.introduction" :disabled="display" type="textarea" placeholder="公司简介"></el-input>
  54. </el-form-item>
  55. <h4>业务联系人</h4>
  56. <el-form-item label="联系人" prop="contact">
  57. <el-input v-model="dataForm.contact" :disabled="display" placeholder="联系人"></el-input>
  58. </el-form-item>
  59. <el-form-item label="手机号码" prop="contactTel">
  60. <el-input v-model="dataForm.contactTel" :disabled="display" placeholder="手机号码"></el-input>
  61. </el-form-item>
  62. <el-form-item label="职位">
  63. <el-input v-model="dataForm.contactPosition" :disabled="display" placeholder="职位"></el-input>
  64. </el-form-item>
  65. <el-form-item label="邮箱">
  66. <el-input v-model="dataForm.contactEmail" :disabled="display" placeholder="邮箱"></el-input>
  67. </el-form-item>
  68. <el-form-item label="对接业务员" prop="bizManager">
  69. <user-component v-model="dataForm.bizManager" :disabled="display" :user-id.sync="dataForm.bizManager" @userSelected="change"/>
  70. <!-- <el-input v-model="dataForm.bizManager" placeholder="对接业务员"></el-input> -->
  71. </el-form-item>
  72. <h4>财务信息</h4>
  73. <el-form-item label="企业税号" prop="taxNumber">
  74. <el-input v-model="dataForm.taxNumber" :disabled="display" placeholder="企业税号"></el-input>
  75. </el-form-item>
  76. <el-form-item label="发票抬头" prop="invoiceTitle">
  77. <el-input v-model="dataForm.invoiceTitle" :disabled="display" placeholder="发票抬头"></el-input>
  78. </el-form-item>
  79. <el-form-item label="开户银行" prop="bank">
  80. <el-input v-model="dataForm.bank" :disabled="display" placeholder="开户银行"></el-input>
  81. </el-form-item>
  82. <el-form-item label="银行账号" prop="account">
  83. <el-input v-model="dataForm.account" :disabled="display" placeholder="银行账号"></el-input>
  84. </el-form-item>
  85. <el-form-item label="单位地址" prop="billingAddr">
  86. <el-input v-model="dataForm.billingAddr" :disabled="display" placeholder="单位地址"></el-input>
  87. </el-form-item>
  88. </el-form>
  89. <span slot="footer" class="dialog-footer">
  90. <el-button @click="visible = false">取消</el-button>
  91. <el-button v-if="!display" type="primary" @click="dataFormSubmit()">确定</el-button>
  92. </span>
  93. </el-dialog>
  94. </template>
  95. <script>
  96. import UserComponent from '../common/user-component'
  97. import { getLevel } from '@/api/cus'
  98. export default {
  99. components: { UserComponent },
  100. computed: {
  101. orgId: {
  102. get () { return this.$store.state.user.orgId }
  103. }
  104. },
  105. data () {
  106. return {
  107. visible: false,
  108. options: [],
  109. // 客户类型
  110. optionsCT: [
  111. {
  112. value: '0',
  113. label: '公司'
  114. },
  115. {
  116. value: '1',
  117. label: '个人'
  118. }
  119. ],
  120. id: 0,
  121. display: false,
  122. dataForm: {},
  123. dataRule: {
  124. customerName: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
  125. customerType: [{required: true, message: '客户类型不能为空', trigger: 'blur'}],
  126. level: [{ required: true, message: '客户级别不能为空', trigger: 'blur' }],
  127. address: [{ required: true, message: '详细地址不能为空', trigger: 'blur' }],
  128. tel: [{ required: true, message: '电话不能为空', trigger: 'blur' }],
  129. contact: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
  130. contactTel: [{ required: true, message: '手机号码不能为空', trigger: 'blur' }],
  131. bizManager: [{ required: true, message: '对接业务员不能为空', trigger: 'blur' }],
  132. taxNumber: [{ required: true, message: '企业税号不能为空', trigger: 'blur' }],
  133. invoiceTitle: [{ required: true, message: '发票抬头不能为空', trigger: 'blur' }],
  134. bank: [{ required: true, message: '开户银行不能为空', trigger: 'blur' }],
  135. account: [{ required: true, message: '银行账号不能为空', trigger: 'blur' }],
  136. billingAddr: [{ required: true, message: '单位地址不能为空', trigger: 'blur' }]
  137. }
  138. }
  139. },
  140. methods: {
  141. async init (id, disabled) {
  142. this.dataForm = {}
  143. this.display = disabled
  144. this.id = id || 0
  145. this.visible = true
  146. await getLevel().then(({data}) => {
  147. if (data && data.code === '200') {
  148. this.options = data.data
  149. }
  150. })
  151. if (this.id) {
  152. this.$http({
  153. url: this.$http.adornUrl(`/biz-service/cusCustomer/info/${this.id}`),
  154. method: 'get',
  155. params: this.$http.adornParams()
  156. }).then(({data}) => {
  157. if (data && data.code === '200') {
  158. this.dataForm = data.data
  159. }
  160. })
  161. }
  162. },
  163. change (item) {
  164. this.dataForm.bizManager = item.value
  165. this.dataForm.bizManagerName = item.name
  166. },
  167. // 表单提交
  168. dataFormSubmit () {
  169. this.$refs['dataForm'].validate((valid) => {
  170. if (valid) {
  171. this.$http({
  172. url: this.$http.adornUrl(`/biz-service/cusCustomer/${!this.id ? 'save' : 'update'}`),
  173. method: 'post',
  174. data: this.$http.adornData({...this.dataForm, orgId: this.orgId})
  175. }).then(({data}) => {
  176. if (data && data.code === '200') {
  177. this.$message({
  178. message: '操作成功',
  179. type: 'success',
  180. duration: 1500,
  181. onClose: () => {
  182. this.visible = false
  183. this.$emit('refreshDataList')
  184. }
  185. })
  186. } else {
  187. this.$message.error(data.msg)
  188. }
  189. })
  190. }
  191. })
  192. },
  193. validateField (type) {
  194. this.$refs.dataForm.validateField(type)
  195. }
  196. }
  197. }
  198. </script>