table-form.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div v-if="isType === ''" class="hc-body-loading">
  3. <div v-if="isErrorShow" class="error-page">
  4. <div class="img" :style="`background-image: url(${svg403});`" />
  5. <div class="content">
  6. <h1>401</h1>
  7. <div class="desc">抱歉,身份验证异常,请重新进入</div>
  8. </div>
  9. </div>
  10. </div>
  11. <HcDataForm v-if="isType === 'data-fill'" :option="formNode" />
  12. <HcLogForm v-if="isType === 'log-fill'" :option="formNode" />
  13. </template>
  14. <script setup>
  15. import { onMounted, ref } from 'vue'
  16. import { useAppStore } from '~src/store'
  17. import { useRoute } from 'vue-router'
  18. import svg403 from '~src/assets/view/403.svg'
  19. import { isNullES } from 'js-fast-way'
  20. import HcDataForm from './components/data-form.vue'
  21. import HcLogForm from './components/log-form.vue'
  22. import { userLogin } from '~api/user'
  23. //初始变量
  24. const useRoutes = useRoute()
  25. const store = useAppStore()
  26. //变量
  27. const isErrorShow = ref(false)
  28. const isType = ref('')
  29. const formNode = ref({})
  30. //渲染完成
  31. onMounted(() => {
  32. const { user, source } = useRoutes.query
  33. if (!isNullES(user)) {
  34. const userInfo = JSON.parse(decodeURIComponent(user))
  35. store.setIsSource(source)
  36. useAppLoginApi(userInfo)
  37. } else {
  38. formRender()
  39. isErrorShow.value = true
  40. postMsg('参数异常', 'error')
  41. }
  42. })
  43. //请求授权登录
  44. const useAppLoginApi = async (form) => {
  45. const { error, status, res } = await userLogin(form)
  46. if (!error && status === 200) {
  47. //设置token和用户信息
  48. store.setTokenVal(res['access_token'])
  49. store.setRefreshTokenVal(res['refresh_token'])
  50. store.setTenantId(res['tenant_id'])
  51. store.setUserInfo(res)
  52. //设置主题
  53. store.setTheme('light')
  54. store.setThemeVal('light')
  55. //处理其他数据
  56. setTimeout(() => {
  57. setFormType()
  58. isErrorShow.value = false
  59. }, 1000)
  60. } else {
  61. formRender()
  62. isErrorShow.value = true
  63. postMsg('身份验证异常', 'error')
  64. }
  65. }
  66. const formRender = () => {
  67. window?.postMessage({
  68. type: 'formRender',
  69. source: 'web',
  70. data: {},
  71. })
  72. }
  73. //弹出提示
  74. const postMsg = (title, icon) => {
  75. window?.postMessage({
  76. type: 'msg',
  77. source: 'web',
  78. data: {
  79. title: title,
  80. icon: icon,
  81. },
  82. })
  83. }
  84. //处理数据
  85. const setFormType = () => {
  86. const { type, node } = useRoutes.query
  87. if (isNullES(type)) {
  88. formRender()
  89. isErrorShow.value = true
  90. postMsg('身份验证异常', 'error')
  91. return
  92. }
  93. //处理其他数据
  94. formNode.value = node ? JSON.parse(decodeURIComponent(node)) : {}
  95. isType.value = type
  96. }
  97. </script>
  98. <style lang="scss" scoped>
  99. @import "../../styles/error/app-auth.scss";
  100. </style>
  101. <style lang="scss">
  102. html, body, #app {
  103. background-color: white;
  104. }
  105. </style>