当前位置:   article > 正文

vue3使用el-form实现登录、注册功能,且进行表单验证(Element Plus中的el-form)_vue登录注册表单切换

vue登录注册表单切换

简介:Element Plus 中的 el-form 是一个表单组件,用于快速构建表单并进行数据校验。它提供了丰富的表单元素和验证规则,使表单开发变得更加简单和高效。可以搭配el-dialog实现当前页面的登录、注册页 ,这两天在vue3中用到了表单登录,特意记录一下,这里没有封装,直接使用的。

效果:

1、登录页面,弹出框表单

  1. <el-dialog v-model="dialogFormVisible" class="poup_box">
  2. <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
  3. <el-tab-pane label="登录" name="login_one">
  4. <el-form ref="ruleFormRef" :model="loginForm" :rules="loginRules" class="login_one">
  5. <el-form-item label="用户" prop="username" v-if="loginStatus">
  6. <el-input clearable v-model="loginForm.username" autocomplete="off" placeholder="请输入用户名" />
  7. </el-form-item>
  8. <el-form-item label="邮箱" prop="email" v-else>
  9. <el-input v-model="loginForm.email" autocomplete="off" placeholder="请输入邮箱" />
  10. </el-form-item>
  11. <el-form-item label="密码" prop="password">
  12. <el-input v-model="loginForm.password" type="password" show-password autocomplete="off"
  13. placeholder="请输入密码" />
  14. </el-form-item>
  15. <el-form-item class="forget_item">
  16. <div @click="changeEmail">
  17. <span v-if="loginStatus">邮箱登录</span>
  18. <span v-else>用户名登录</span>
  19. </div>
  20. </el-form-item>
  21. <el-form-item class="checks_box">
  22. <el-checkbox v-model="checked1" size="large" class="checks_inpt" />
  23. <div class="checks_text">
  24. <span>我已阅读并同意</span>
  25. <b @click="changeAgreement">服务条款、</b>
  26. <b>隐私政策</b>
  27. </div>
  28. <div class="userDeal" v-if="userDeal">请阅读并同意协议</div>
  29. </el-form-item>
  30. <el-form-item class="login_item">
  31. <el-button @click="userLogin(ruleFormRef)" :loading="isLoading">
  32. <span v-if="isLoading">登录中......</span>
  33. <span v-else>登录</span>
  34. </el-button>
  35. </el-form-item>
  36. </el-form>
  37. </el-tab-pane>
  38. <el-tab-pane label="注册" name="register_two">
  39. <el-form ref="ruleFormRef2" :model="registerForm" :rules="registerRules" class="register_two">
  40. <el-form-item label="用户" prop="username">
  41. <el-input clearable v-model="registerForm.username" autocomplete="off" placeholder="请输入用户名" />
  42. </el-form-item>
  43. <el-form-item label="邮箱" prop="email">
  44. <el-input v-model="registerForm.email" autocomplete="off" placeholder="请输入邮箱" />
  45. </el-form-item>
  46. <el-form-item label="密码" prop="password">
  47. <el-input v-model="registerForm.password" type="password" show-password autocomplete="off"
  48. placeholder="密码由字母、数字或符号组成" />
  49. </el-form-item>
  50. <el-form-item label="邮箱验证码" prop="smsCode" class="auth_code">
  51. <el-input v-model="registerForm.smsCode" autocomplete="off" placeholder="请输入验证码" />
  52. <div class="auth_text">
  53. <span @click="getAuthCode(ruleFormRef2)" v-if="authCodeNum">获取验证码</span>
  54. <span class="auth_time" v-else>{{ registerNum }}秒后重发</span>
  55. </div>
  56. </el-form-item>
  57. <el-form-item class="checks_box">
  58. <el-checkbox v-model="registerCks" size="large" class="checks_inpt" />
  59. <div class="checks_text">
  60. <span>我已阅读并同意</span>
  61. <b @click="changeAgreement">服务条款、</b>
  62. <b>隐私政策</b>
  63. </div>
  64. <div class="userDeal" v-if="registerDeal">请阅读并同意协议</div>
  65. </el-form-item>
  66. <el-form-item class="login_item register_item">
  67. <el-button @click="registerUser(ruleFormRef2)">注册</el-button>
  68. </el-form-item>
  69. </el-form>
  70. </el-tab-pane>
  71. </el-tabs>
  72. </el-dialog>

2、相关参数,多去少补

  1. import { ElMessage } from 'element-plus'
  2. //import { ref,reactive,toRefs,computed } from 'vue';
  3. //import { useStore } from 'vuex';
  4. import { useRouter, useRoute } from 'vue-router';
  5. //const store = useStore();
  6. const router = useRouter();
  7. //const route = useRoute();
  8. //const state = reactive({});
  9. import { reactive, ref, onMounted } from 'vue';
  10. import func from 'vue-temp/vue-editor-bridge';
  11. const loginStatus = ref(true);//用户/邮箱
  12. const isLoading = ref(false); //按钮loading
  13. import type { FormInstance, FormRules } from 'element-plus';
  14. const ruleFormRef = ref<FormInstance>()
  15. const ruleFormRef2 = ref<FormInstance>()
  16. // 用户登录还是邮箱登录
  17. function changeEmail() {
  18. loginStatus.value = !loginStatus.value;
  19. }
  20. // 登录
  21. const loginForm = reactive({
  22. code: "",
  23. email: "",
  24. password: "",
  25. smsCode: "",
  26. username: "",
  27. uuid: ""
  28. })
  29. const loginRules = reactive({
  30. username: [
  31. {
  32. required: true,
  33. message: '用户名为4~16字符之间(中文、字母、数字或下划线)',
  34. min: 6, max: 18,
  35. trigger: 'blur',
  36. },],
  37. email: [
  38. { required: true, message: '请填写正确的邮箱格式', trigger: 'blur' },
  39. { min: 6, max: 18, message: '邮箱字符为6~18之间', trigger: 'blur' },
  40. ],
  41. password: [
  42. {
  43. required: true,
  44. message: '密码为6~18位字母、数字和符号',
  45. min: 6, max: 18,
  46. trigger: 'blur',
  47. },
  48. // { min: 6, max: 18, message: '密码字符为6~18之间', trigger: 'blur' },
  49. ],
  50. })
  51. // 注册
  52. const registerForm = reactive({
  53. code: "",
  54. email: "",
  55. password: "",
  56. smsCode: "",
  57. username: "",
  58. uuid: ""
  59. })
  60. const registerRules = reactive({
  61. username: [
  62. { required: true, message: '用户名为4~16位之间字符', trigger: 'blur', },
  63. { min: 4, max: 16, message: '4~16位中文、字母、数字或下划线', trigger: 'blur' },
  64. ],
  65. email: [
  66. { required: true, message: '请填写正确的邮箱格式', trigger: 'blur' },
  67. { min: 6, max: 18, message: '邮箱为6~18位之间字符', trigger: 'blur' },
  68. ],
  69. password: [
  70. {
  71. required: true,
  72. message: '密码为6~18位字符,必须包含字母、数字和符号',
  73. min: 6, max: 18,
  74. trigger: 'blur',
  75. },
  76. ],
  77. smsCode: [
  78. {
  79. required: true,
  80. message: '请输入验证码',
  81. trigger: 'blur',
  82. },
  83. ],
  84. })
  85. const checked1 = ref(false);//登录协议
  86. const userDeal = ref(false);//提示用户
  87. const registerCks = ref(false);//注册协议
  88. const registerDeal = ref(false);//注册状态
  89. const authInfo = reactive({})//注册uuid
  90. //登录信息
  91. const loginInfo = reactive({})
  92. // const formLoading = ref(false);
  93. //弹框默认
  94. const dialogFormVisible = ref(false);
  95. //tab默认选中
  96. const activeName = ref('login_one')
  97. //注册/登录
  98. const loginOrRetister = ref(true);
  99. //验证码时间
  100. const registerNum = ref(180);
  101. //文字还是验证码
  102. const authCodeNum = ref(true);

3、事件方法

  1. <script setup lang='ts'>
  2. // tab切换事件
  3. function handleClick(tab, event) {
  4. const iAgree = document.querySelector(".form_footer");
  5. if (activeName.value === "register_two") {// 注册
  6. loginOrRetister.value = true;
  7. iAgree.style.display = "none";
  8. } else if (activeName.value === "login_one") {// 登录
  9. loginOrRetister.value = false;
  10. iAgree.style.display = "block";
  11. }
  12. }
  13. // 右上角注册/登录状态切换
  14. function choseResgister() {
  15. if (loginOrRetister.value === true) {
  16. loginOrRetister.value = false;
  17. activeName.value = "register_two";
  18. } else if (loginOrRetister.value === false) {
  19. loginOrRetister.value = true;
  20. activeName.value = "login_one";
  21. }
  22. }
  23. </script>

这里的Element Plus组件使用的全局引入,所以可以直接使用;

样式大家自己写下吧!

然后点击登录、注册时,表单里的输入框验证,也有做,但是有时管用,有时不管用,这里给大家文档地址,自己看吧!

表单验证icon-default.png?t=N7T8https://element-plus.org/zh-CN/component/form.html#%E8%A1%A8%E5%8D%95%E6%A0%A1%E9%AA%8C

表单校验详情页icon-default.png?t=N7T8https://element-plus.run/#eyJzcmMvQXBwLnZ1ZSI6Ijx0ZW1wbGF0ZT5cbiAgPGVsLWZvcm1cbiAgICByZWY9XCJydWxlRm9ybVJlZlwiXG4gICAgOm1vZGVsPVwicnVsZUZvcm1cIlxuICAgIDpydWxlcz1cInJ1bGVzXCJcbiAgICBsYWJlbC13aWR0aD1cIjEyMHB4XCJcbiAgICBjbGFzcz1cImRlbW8tcnVsZUZvcm1cIlxuICAgIDpzaXplPVwiZm9ybVNpemVcIlxuICAgIHN0YXR1cy1pY29uXG4gID5cbiAgICA8ZWwtZm9ybS1pdGVtIGxhYmVsPVwiQWN0aXZpdHkgbmFtZVwiIHByb3A9XCJuYW1lXCI+XG4gICAgICA8ZWwtaW5wdXQgdi1tb2RlbD1cInJ1bGVGb3JtLm5hbWVcIiAvPlxuICAgIDwvZWwtZm9ybS1pdGVtPlxuICAgIDxlbC1mb3JtLWl0ZW0gbGFiZWw9XCJBY3Rpdml0eSB6b25lXCIgcHJvcD1cInJlZ2lvblwiPlxuICAgICAgPGVsLXNlbGVjdCB2LW1vZGVsPVwicnVsZUZvcm0ucmVnaW9uXCIgcGxhY2Vob2xkZXI9XCJBY3Rpdml0eSB6b25lXCI+XG4gICAgICAgIDxlbC1vcHRpb24gbGFiZWw9XCJab25lIG9uZVwiIHZhbHVlPVwic2hhbmdoYWlcIiAvPlxuICAgICAgICA8ZWwtb3B0aW9uIGxhYmVsPVwiWm9uZSB0d29cIiB2YWx1ZT1cImJlaWppbmdcIiAvPlxuICAgICAgPC9lbC1zZWxlY3Q+XG4gICAgPC9lbC1mb3JtLWl0ZW0+XG4gICAgPGVsLWZvcm0taXRlbSBsYWJlbD1cIkFjdGl2aXR5IGNvdW50XCIgcHJvcD1cImNvdW50XCI+XG4gICAgICA8ZWwtc2VsZWN0LXYyXG4gICAgICAgIHYtbW9kZWw9XCJydWxlRm9ybS5jb3VudFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQWN0aXZpdHkgY291bnRcIlxuICAgICAgICA6b3B0aW9ucz1cIm9wdGlvbnNcIlxuICAgICAgLz5cbiAgICA8L2VsLWZvcm0taXRlbT5cbiAgICA8ZWwtZm9ybS1pdGVtIGxhYmVsPVwiQWN0aXZpdHkgdGltZVwiIHJlcXVpcmVkPlxuICAgICAgPGVsLWNvbCA6c3Bhbj1cIjExXCI+XG4gICAgICAgIDxlbC1mb3JtLWl0ZW0gcHJvcD1cImRhdGUxXCI+XG4gICAgICAgICAgPGVsLWRhdGUtcGlja2VyXG4gICAgICAgICAgICB2LW1vZGVsPVwicnVsZUZvcm0uZGF0ZTFcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgbGFiZWw9XCJQaWNrIGEgZGF0ZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBpY2sgYSBkYXRlXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZWwtZm9ybS1pdGVtPlxuICAgICAgPC9lbC1jb2w+XG4gICAgICA8ZWwtY29sIGNsYXNzPVwidGV4dC1jZW50ZXJcIiA6c3Bhbj1cIjJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwXCI+LTwvc3Bhbj5cbiAgICAgIDwvZWwtY29sPlxuICAgICAgPGVsLWNvbCA6c3Bhbj1cIjExXCI+XG4gICAgICAgIDxlbC1mb3JtLWl0ZW0gcHJvcD1cImRhdGUyXCI+XG4gICAgICAgICAgPGVsLXRpbWUtcGlja2VyXG4gICAgICAgICAgICB2LW1vZGVsPVwicnVsZUZvcm0uZGF0ZTJcIlxuICAgICAgICAgICAgbGFiZWw9XCJQaWNrIGEgdGltZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBpY2sgYSB0aW1lXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZWwtZm9ybS1pdGVtPlxuICAgICAgPC9lbC1jb2w+XG4gICAgPC9lbC1mb3JtLWl0ZW0+XG4gICAgPGVsLWZvcm0taXRlbSBsYWJlbD1cIkluc3RhbnQgZGVsaXZlcnlcIiBwcm9wPVwiZGVsaXZlcnlcIj5cbiAgICAgIDxlbC1zd2l0Y2ggdi1tb2RlbD1cInJ1bGVGb3JtLmRlbGl2ZXJ5XCIgLz5cbiAgICA8L2VsLWZvcm0taXRlbT5cbiAgICA8ZWwtZm9ybS1pdGVtIGxhYmVsPVwiQWN0aXZpdHkgdHlwZVwiIHByb3A9XCJ0eXBlXCI+XG4gICAgICA8ZWwtY2hlY2tib3gtZ3JvdXAgdi1tb2RlbD1cInJ1bGVGb3JtLnR5cGVcIj5cbiAgICAgICAgPGVsLWNoZWNrYm94IGxhYmVsPVwiT25saW5lIGFjdGl2aXRpZXNcIiBuYW1lPVwidHlwZVwiIC8+XG4gICAgICAgIDxlbC1jaGVja2JveCBsYWJlbD1cIlByb21vdGlvbiBhY3Rpdml0aWVzXCIgbmFtZT1cInR5cGVcIiAvPlxuICAgICAgICA8ZWwtY2hlY2tib3ggbGFiZWw9XCJPZmZsaW5lIGFjdGl2aXRpZXNcIiBuYW1lPVwidHlwZVwiIC8+XG4gICAgICAgIDxlbC1jaGVja2JveCBsYWJlbD1cIlNpbXBsZSBicmFuZCBleHBvc3VyZVwiIG5hbWU9XCJ0eXBlXCIgLz5cbiAgICAgIDwvZWwtY2hlY2tib3gtZ3JvdXA+XG4gICAgPC9lbC1mb3JtLWl0ZW0+XG4gICAgPGVsLWZvcm0taXRlbSBsYWJlbD1cIlJlc291cmNlc1wiIHByb3A9XCJyZXNvdXJjZVwiPlxuICAgICAgPGVsLXJhZGlvLWdyb3VwIHYtbW9kZWw9XCJydWxlRm9ybS5yZXNvdXJjZVwiPlxuICAgICAgICA8ZWwtcmFkaW8gbGFiZWw9XCJTcG9uc29yc2hpcFwiIC8+XG4gICAgICAgIDxlbC1yYWRpbyBsYWJlbD1cIlZlbnVlXCIgLz5cbiAgICAgIDwvZWwtcmFkaW8tZ3JvdXA+XG4gICAgPC9lbC1mb3JtLWl0ZW0+XG4gICAgPGVsLWZvcm0taXRlbSBsYWJlbD1cIkFjdGl2aXR5IGZvcm1cIiBwcm9wPVwiZGVzY1wiPlxuICAgICAgPGVsLWlucHV0IHYtbW9kZWw9XCJydWxlRm9ybS5kZXNjXCIgdHlwZT1cInRleHRhcmVhXCIgLz5cbiAgICA8L2VsLWZvcm0taXRlbT5cbiAgICA8ZWwtZm9ybS1pdGVtPlxuICAgICAgPGVsLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIEBjbGljaz1cInN1Ym1pdEZvcm0ocnVsZUZvcm1SZWYpXCI+XG4gICAgICAgIENyZWF0ZVxuICAgICAgPC9lbC1idXR0b24+XG4gICAgICA8ZWwtYnV0dG9uIEBjbGljaz1cInJlc2V0Rm9ybShydWxlRm9ybVJlZilcIj5SZXNldDwvZWwtYnV0dG9uPlxuICAgIDwvZWwtZm9ybS1pdGVtPlxuICA8L2VsLWZvcm0+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHsgcmVhY3RpdmUsIHJlZiB9IGZyb20gJ3Z1ZSdcbmltcG9ydCB0eXBlIHsgRm9ybUluc3RhbmNlLCBGb3JtUnVsZXMgfSBmcm9tICdlbGVtZW50LXBsdXMnXG5cbmludGVyZmFjZSBSdWxlRm9ybSB7XG4gIG5hbWU6IHN0cmluZ1xuICByZWdpb246IHN0cmluZ1xuICBjb3VudDogc3RyaW5nXG4gIGRhdGUxOiBzdHJpbmdcbiAgZGF0ZTI6IHN0cmluZ1xuICBkZWxpdmVyeTogYm9vbGVhblxuICB0eXBlOiBzdHJpbmdbXVxuICByZXNvdXJjZTogc3RyaW5nXG4gIGRlc2M6IHN0cmluZ1xufVxuXG5jb25zdCBmb3JtU2l6ZSA9IHJlZignZGVmYXVsdCcpXG5jb25zdCBydWxlRm9ybVJlZiA9IHJlZjxGb3JtSW5zdGFuY2U+KClcbmNvbnN0IHJ1bGVGb3JtID0gcmVhY3RpdmU8UnVsZUZvcm0+KHtcbiAgbmFtZTogJ0hlbGxvJyxcbiAgcmVnaW9uOiAnJyxcbiAgY291bnQ6ICcnLFxuICBkYXRlMTogJycsXG4gIGRhdGUyOiAnJyxcbiAgZGVsaXZlcnk6IGZhbHNlLFxuICB0eXBlOiBbXSxcbiAgcmVzb3VyY2U6ICcnLFxuICBkZXNjOiAnJyxcbn0pXG5cbmNvbnN0IHJ1bGVzID0gcmVhY3RpdmU8Rm9ybVJ1bGVzPFJ1bGVGb3JtPj4oe1xuICBuYW1lOiBbXG4gICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ1BsZWFzZSBpbnB1dCBBY3Rpdml0eSBuYW1lJywgdHJpZ2dlcjogJ2JsdXInIH0sXG4gICAgeyBtaW46IDMsIG1heDogNSwgbWVzc2FnZTogJ0xlbmd0aCBzaG91bGQgYmUgMyB0byA1JywgdHJpZ2dlcjogJ2JsdXInIH0sXG4gIF0sXG4gIHJlZ2lvbjogW1xuICAgIHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgQWN0aXZpdHkgem9uZScsXG4gICAgICB0cmlnZ2VyOiAnY2hhbmdlJyxcbiAgICB9LFxuICBdLFxuICBjb3VudDogW1xuICAgIHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgQWN0aXZpdHkgY291bnQnLFxuICAgICAgdHJpZ2dlcjogJ2NoYW5nZScsXG4gICAgfSxcbiAgXSxcbiAgZGF0ZTE6IFtcbiAgICB7XG4gICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgcGljayBhIGRhdGUnLFxuICAgICAgdHJpZ2dlcjogJ2NoYW5nZScsXG4gICAgfSxcbiAgXSxcbiAgZGF0ZTI6IFtcbiAgICB7XG4gICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgcGljayBhIHRpbWUnLFxuICAgICAgdHJpZ2dlcjogJ2NoYW5nZScsXG4gICAgfSxcbiAgXSxcbiAgdHlwZTogW1xuICAgIHtcbiAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBhY3Rpdml0eSB0eXBlJyxcbiAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnLFxuICAgIH0sXG4gIF0sXG4gIHJlc291cmNlOiBbXG4gICAge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBhY3Rpdml0eSByZXNvdXJjZScsXG4gICAgICB0cmlnZ2VyOiAnY2hhbmdlJyxcbiAgICB9LFxuICBdLFxuICBkZXNjOiBbXG4gICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ1BsZWFzZSBpbnB1dCBhY3Rpdml0eSBmb3JtJywgdHJpZ2dlcjogJ2JsdXInIH0sXG4gIF0sXG59KVxuXG5jb25zdCBzdWJtaXRGb3JtID0gYXN5bmMgKGZvcm1FbDogRm9ybUluc3RhbmNlIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghZm9ybUVsKSByZXR1cm5cbiAgYXdhaXQgZm9ybUVsLnZhbGlkYXRlKCh2YWxpZCwgZmllbGRzKSA9PiB7XG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICBjb25zb2xlLmxvZygnc3VibWl0IScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzdWJtaXQhJywgZmllbGRzKVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgcmVzZXRGb3JtID0gKGZvcm1FbDogRm9ybUluc3RhbmNlIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghZm9ybUVsKSByZXR1cm5cbiAgZm9ybUVsLnJlc2V0RmllbGRzKClcbn1cblxuY29uc3Qgb3B0aW9ucyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEwMDAwIH0pLm1hcCgoXywgaWR4KSA9PiAoe1xuICB2YWx1ZTogYCR7aWR4ICsgMX1gLFxuICBsYWJlbDogYCR7aWR4ICsgMX1gLFxufSkpXG48L3NjcmlwdD5cbiIsImltcG9ydC1tYXAuanNvbiI6IntcbiAgXCJpbXBvcnRzXCI6IHt9XG59IiwidHNjb25maWcuanNvbiI6IntcbiAgXCJjb21waWxlck9wdGlvbnNcIjoge1xuICAgIFwiYWxsb3dKc1wiOiB0cnVlLFxuICAgIFwiY2hlY2tKc1wiOiB0cnVlLFxuICAgIFwianN4XCI6IFwicHJlc2VydmVcIixcbiAgICBcInRhcmdldFwiOiBcIkVTTmV4dFwiLFxuICAgIFwibW9kdWxlXCI6IFwiRVNOZXh0XCIsXG4gICAgXCJtb2R1bGVSZXNvbHV0aW9uXCI6IFwiQnVuZGxlclwiLFxuICAgIFwiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnNcIjogdHJ1ZSxcbiAgICBcInR5cGVzXCI6IFtcImVsZW1lbnQtcGx1cy9nbG9iYWwuZC50c1wiXVxuICB9LFxuICBcInZ1ZUNvbXBpbGVyT3B0aW9uc1wiOiB7XG4gICAgXCJ0YXJnZXRcIjogMy4zXG4gIH1cbn1cbiIsIl9vIjp7fX0=

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/438255
推荐阅读
相关标签
  

闽ICP备14008679号