update-info.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div class="container">
  3. <n-form ref="formRef" label-placement="left" :label-width="140" :model="form" :rules="rules" size="large" require-mark-placement="left">
  4. <n-form-item :label="t('reportPop.phone')+':'" path="contact">
  5. <n-input v-model:value="form.contact" type="number" :placeholder="t('reportPop.phonePlaceholder')" />
  6. </n-form-item>
  7. <n-form-item :label="t('reportPop.companyName')+':'" path="companyName">
  8. <n-input v-model:value="form.companyName" type="text" :placeholder="t('reportPop.companyNamePlaceholder')" />
  9. </n-form-item>
  10. <n-form-item :label="t('reportPop.position')+':'" path="addr">
  11. <n-input v-model:value="form.addr" type="text" :placeholder="t('reportPop.positionPlaceholder')" />
  12. </n-form-item>
  13. <n-form-item :label="t('reportPop.email')+':'" path="email">
  14. <n-input v-model:value="form.email" type="text" :placeholder="t('reportPop.emailPlaceholder')" />
  15. </n-form-item>
  16. </n-form>
  17. <n-button class="login-btn" attr-type="button" type="info" color="#18A058" :disabled="submitLoading" @click="handleSure">
  18. {{ submitLoading ? t('reportPop.submitLoading') : t('reportPop.submit') }}
  19. </n-button>
  20. </div>
  21. </template>
  22. <script lang="ts" setup>
  23. import { useI18n } from "#imports";
  24. import { ref, reactive, onMounted } from "vue";
  25. import {
  26. // NForm,
  27. // NFormItem,
  28. // NInput,
  29. // NButton,
  30. // FormRules,
  31. // FormItemRule,
  32. createDiscreteApi,
  33. } from "naive-ui";
  34. const emit = defineEmits(["closeSginDialog"]);
  35. const props = defineProps({
  36. info: {
  37. type: Object,
  38. default: () => {},
  39. },
  40. });
  41. const { t } = useI18n();
  42. const formRef = ref();
  43. const submitLoading = ref(false);
  44. const form = reactive({
  45. contact: "",
  46. companyName: "",
  47. addr: "",
  48. email: "",
  49. });
  50. const rules: FormRules = {
  51. contact: [
  52. {
  53. required: true,
  54. message: t('reportPop.phoneRequired'),
  55. trigger: ["input", "blur"],
  56. },
  57. ],
  58. };
  59. const handleSure = () => {
  60. formRef.value?.validate(async (errors: any) => {
  61. if (!errors) {
  62. submitLoading.value = true;
  63. try {
  64. const { code } = await updateInfo_Api(form);
  65. if (code === 200) {
  66. message.message.success(t('reportPop.submitSuccess'));
  67. emit("closeSginDialog", "success");
  68. }
  69. } catch (error) {}
  70. submitLoading.value = false;
  71. }
  72. });
  73. };
  74. // onMounted(() => {
  75. for (let key in form) {
  76. form[key] = props.info[key];
  77. }
  78. // });
  79. const message = createDiscreteApi(["message"]);
  80. </script>
  81. <style lang="scss" scoped>
  82. .container {
  83. width: 100%;
  84. padding: 30px 20px;
  85. .login-btn {
  86. display: block;
  87. width: 50%;
  88. height: 50px;
  89. color: #fff;
  90. font-size: 18px;
  91. border-radius: 8px;
  92. margin: 0 auto;
  93. :deep(.n-button__content) {
  94. display: block;
  95. }
  96. }
  97. }
  98. </style>