You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
4.7 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <template>
  2. <div class="flagShip">
  3. <h2>购买信息</h2>
  4. <span class="desc">填写你的联系方式我们产品顾问将会尽快联系你</span>
  5. <el-form class="form" label-position="left" ref="form" :model="form" :rules="rules" label-width="80px">
  6. <el-form-item label="联系人" prop="contacts">
  7. <el-input class="inp" v-model="form.contacts"></el-input>
  8. </el-form-item>
  9. <el-form-item label="联系电话" prop="phone">
  10. <el-input class="inp" v-model="form.phone"></el-input>
  11. </el-form-item>
  12. <el-form-item label="使用人数">
  13. <el-select class="inp" v-model="form.usePeoples" placeholder="使用人数">
  14. <el-option
  15. v-for="item in usePeopleOptions"
  16. :key="item.value"
  17. :label="item.label"
  18. :value="item.value">
  19. </el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="服务需求">
  23. <el-select class="inp" multiple v-model="form.needs" placeholder="服务需求">
  24. <el-option
  25. v-for="item in needOptions"
  26. :key="item.value"
  27. :label="item.label"
  28. :value="item.value">
  29. </el-option>
  30. </el-select>
  31. </el-form-item>
  32. <span>想要我们提供哪些服务可多选</span>
  33. </el-form>
  34. </div>
  35. </template>
  36. <script>
  37. export default {
  38. data() {
  39. // 自定义验证
  40. const validPhone = (rule, value, callback) => {
  41. const reg = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/
  42. if (!value) {
  43. callback(new Error('请输入电话号码'))
  44. } else if (!reg.test(value)) { //判断用户输入的值是否符合规则
  45. callback(new Error('请输入正确的11位手机号码'))
  46. } else {
  47. callback()
  48. }
  49. }
  50. return {
  51. usePeopleOptions: [
  52. {
  53. label: '51-100',
  54. value: '51-100'
  55. },
  56. {
  57. label: '101-500',
  58. value: '101-500'
  59. },
  60. {
  61. label: '501-1000',
  62. value: '501-1000'
  63. },
  64. {
  65. label: '1000以上',
  66. value: '1000以上'
  67. }
  68. ],
  69. needOptions: [
  70. {
  71. label: '预约演示',
  72. value: '预约演示'
  73. },
  74. {
  75. label: '产品报价',
  76. value: '产品报价'
  77. },
  78. {
  79. label: '部署方式',
  80. value: '部署方式'
  81. },
  82. {
  83. label: '新增功能',
  84. value: '新增功能'
  85. },
  86. {
  87. label: '其它',
  88. value: '其它'
  89. }
  90. ],
  91. form: {
  92. phone: '',
  93. contacts: '',
  94. usePeoples: '',
  95. needs: [],
  96. },
  97. rules: {
  98. contacts: [
  99. { required: true, message: '请输入联系人', trigger: 'blur' },
  100. ],
  101. phone: [
  102. { required: true, trigger: 'blur', validator: validPhone }
  103. ],
  104. usePeoples: [
  105. { required: true, message: '请选择使用人数', trigger: 'blur' },
  106. ],
  107. needs: [
  108. { required: true, message: '请选择服务需求', trigger: 'blur' },
  109. ],
  110. }
  111. }
  112. },
  113. methods: {
  114. getData() {
  115. //验证表单
  116. return new Promise((resolve, reject) => {
  117. this.$refs['form'].validate((valid) => {
  118. if (valid) {
  119. resolve(this.form);
  120. } else {
  121. reject(new Error('前检查表单项是否填写正确'))
  122. }
  123. });
  124. })
  125. },
  126. clearForm() {
  127. this.form.phone = "";
  128. this.form.contacts = "";
  129. this.form.usePeoples = "";
  130. this.form.needs = [];
  131. }
  132. },
  133. }
  134. </script>
  135. <style lang="scss" scoped>
  136. .flagShip {
  137. margin-top: 30px;
  138. h2 {
  139. margin-bottom: 20px;
  140. }
  141. .desc {
  142. color: #7D7D7D;
  143. }
  144. .form {
  145. margin-top: 40px;
  146. .inp {
  147. width: 280px;
  148. }
  149. span {
  150. margin-left: 78px;
  151. color: #7D7D7D;
  152. }
  153. }
  154. }
  155. </style>