sourcingForm.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div class="form">
  3. <el-form :model="form" ref="ruleFormRef" status-icon :rules="rules" >
  4. <el-form-item prop="name">
  5. <el-input v-model="form.name" :placeholder="L['请输入姓名']"/>
  6. </el-form-item>
  7. <el-form-item prop="email">
  8. <el-input v-model="form.email" :placeholder="L['请输入邮箱']"/>
  9. </el-form-item>
  10. <el-form-item prop="quantity">
  11. <el-input v-model="form.quantity" min="0" type="number" :placeholder="L['请输入数量']"/>
  12. </el-form-item>
  13. <el-form-item prop="message">
  14. <el-input v-model="form.message" type="textarea" :rows="5" :placeholder="L['请输入留言']" />
  15. </el-form-item>
  16. <el-form-item>
  17. <el-col :span="12">
  18. <el-button type="primary" class="self-btn" :loading="loading" block @click="submitForm(ruleFormRef)">{{L['立即发布您的需求']}}</el-button>
  19. </el-col>
  20. </el-form-item>
  21. </el-form>
  22. </div>
  23. </template>
  24. <script setup>
  25. import { ElForm,ElFormItem,ElButton,ElSelect,ElOption,ElInput,ElCol,ElMessage } from 'element-plus';
  26. import { useFiltersStore } from "@/store/filter.js";
  27. const filtersStore = useFiltersStore();
  28. const L = getCurLanguage();
  29. const loading = ref(false)
  30. const ruleFormRef = ref(null);
  31. // do not use same name with ref
  32. const form = reactive({
  33. name: '',
  34. message: '',
  35. email:'',
  36. quantity:''
  37. })
  38. if(filtersStore.getMemberInfo.memberEmail){
  39. form.email = filtersStore.getMemberInfo.memberEmail
  40. }
  41. if(filtersStore.getMemberInfo.memberNickName || filtersStore.getMemberInfo.memberName){
  42. form.name = filtersStore.getMemberInfo.memberNickName || filtersStore.getMemberInfo.memberName
  43. }
  44. const rules = reactive({
  45. name: [{ required: true, message: L["请输入姓名"], trigger: "blur" }],
  46. quantity: [{ required: true, message: L["请输入数量"], trigger: "blur" }],
  47. email: [{ required: true, message: L["请输入邮箱"], trigger: "blur" }],
  48. message: [
  49. {
  50. required: true,
  51. message: L["请输入留言"],
  52. trigger: "blur",
  53. },
  54. ],
  55. });
  56. //提交按钮
  57. const submitForm = async (formEl) => {
  58. openLoginDialog({
  59. onLogin: (data) => {
  60. console.log('登录数据:', data)
  61. // 发请求登录等操作
  62. },
  63. onRegister: () => {
  64. console.log('注册点击')
  65. },
  66. onForgot: () => {
  67. console.log('忘记密码点击')
  68. },
  69. onClose: () => {
  70. console.log('弹窗关闭')
  71. }
  72. })
  73. return;
  74. if (!formEl) return;
  75. await formEl.validate((valid, fields) => {
  76. if (valid) {
  77. loading.value = true;
  78. let url = "";
  79. if (!filtersStore.getLoginFlag) {
  80. url = apiUrl + "v3/member/front/enquiry/add";
  81. } else {
  82. url = apiUrl + "v3/member/front/enquiry/save";
  83. }
  84. form.pageUrl = window.location.href;
  85. form.itemType = 'MALL';
  86. post(url, form).then((res) => {
  87. loading.value = false;
  88. if (res.state == 200) {
  89. ElMessage.success(res.msg);
  90. } else {
  91. ElMessage.error(res.msg);
  92. }
  93. });
  94. } else {
  95. console.log("error submit!", fields);
  96. }
  97. });
  98. };
  99. </script>
  100. <style lang="scss">
  101. .self-btn{
  102. width: 100%;
  103. background: #00985E;
  104. }
  105. .self-btn:focus, .self-btn:hover {
  106. border-color: #1ba66c;
  107. background-color: #1ba66c;
  108. }
  109. </style>