subscribe.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div class="container">
  3. <n-form ref="formRef" label-placement="left" :label-width="100" :model="form" :rules="rules" size="large" require-mark-placement="left">
  4. <n-form-item label="公司名称:" path="companyName">
  5. <n-input v-model:value="form.companyName" placeholder="请输入公司名称" />
  6. </n-form-item>
  7. <n-form-item label="公司职务:" path="addr">
  8. <n-input v-model:value="form.addr" placeholder="请输入公司职务" />
  9. </n-form-item>
  10. <n-form-item label="邮箱:" path="contact">
  11. <n-input v-model:value="form.contact" placeholder="请输入邮箱" />
  12. </n-form-item>
  13. <n-form-item label="联系电话:" path="contact">
  14. <n-input v-model:value="form.contact" placeholder="请输入联系电话" />
  15. </n-form-item>
  16. <n-form-item label="联系人:" path="name">
  17. <n-input v-model:value="form.name" placeholder="请输入联系人" />
  18. </n-form-item>
  19. <n-form-item label="描述:" path="demand">
  20. <n-input v-model:value="form.demand" type="textarea" placeholder="请输入描述" />
  21. </n-form-item>
  22. </n-form>
  23. <div class="btns">
  24. <n-button class="login-btn" attr-type="button" type="info" color="#E6E6E6" @click="handleClose">
  25. 取消
  26. </n-button>
  27. <n-button class="login-btn" attr-type="button" type="info" color="#18A058" @click="handleSure">
  28. 确认
  29. </n-button>
  30. </div>
  31. </div>
  32. </template>
  33. <script lang="ts" setup>
  34. import {
  35. NForm,
  36. NFormItem,
  37. NInput,
  38. NButton,
  39. FormRules,
  40. FormItemRule,
  41. createDiscreteApi,
  42. } from "naive-ui";
  43. import { ref, reactive } from "vue";
  44. const emit = defineEmits(["closeToolsDialog"]);
  45. const message = createDiscreteApi(["message"]);
  46. const formRef = ref();
  47. const form: register = reactive({
  48. name: "",
  49. contact: "",
  50. email: "",
  51. companyName: "",
  52. demand: "",
  53. addr: "",
  54. });
  55. const rules: FormRules = {
  56. name: [
  57. {
  58. required: true,
  59. message: "请输入联系人",
  60. trigger: ["input", "blur"],
  61. },
  62. ],
  63. contact: [
  64. {
  65. required: true,
  66. message: "请输入联系电话",
  67. trigger: ["input", "blur"],
  68. },
  69. ],
  70. email: [
  71. {
  72. required: true,
  73. message: "请输入邮箱",
  74. trigger: ["input", "blur"],
  75. },
  76. ],
  77. companyName: [
  78. {
  79. required: true,
  80. message: "请输入公司名称",
  81. trigger: ["input", "blur"],
  82. },
  83. ],
  84. addr: [
  85. {
  86. required: true,
  87. message: "请输入公司职务",
  88. trigger: ["input", "blur"],
  89. },
  90. ],
  91. demand: [
  92. {
  93. required: true,
  94. message: "请输入需求",
  95. trigger: ["input", "blur"],
  96. },
  97. ],
  98. };
  99. const handleClose = () => {
  100. emit("closeToolsDialog", "success");
  101. };
  102. const handleSure = () => {
  103. formRef.value?.validate(async (errors: any) => {
  104. if (!errors) {
  105. const { code } = await register_Api(form);
  106. if (code === 200) {
  107. message.message.success("注册成功");
  108. emit("closeToolsDialog", "success");
  109. }
  110. }
  111. });
  112. };
  113. </script>
  114. <style lang="scss" scoped>
  115. .container {
  116. width: 100%;
  117. padding: 30px 20px;
  118. .btns {
  119. display: flex;
  120. justify-content: center;
  121. }
  122. .login-btn {
  123. display: block;
  124. width: 120px;
  125. height: 50px;
  126. color: #fff;
  127. font-size: 18px;
  128. border-radius: 8px;
  129. margin-right: 17px;
  130. :deep(.n-button__content) {
  131. display: block;
  132. }
  133. }
  134. }
  135. </style>