index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <div class="wx">
  3. <div class="head">
  4. <img class="logo" src="/src/assets/images/login/logo.png" />
  5. <span class="title">冷链驿站</span>
  6. </div>
  7. <a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
  8. <a-form-item label="请输入您的真实姓名" name="name">
  9. <a-input v-model:value.trim="formData.name" placeholder="请输入真实姓名" allow-clear />
  10. </a-form-item>
  11. <a-form-item label="请输入您要绑定的组织" name="createOrg">
  12. <a-select
  13. v-model:value.trim="formData.createOrg"
  14. show-search
  15. allowClear
  16. placeholder="请输入您要绑定的组织"
  17. style="width: 100%"
  18. :default-active-first-option="false"
  19. :show-arrow="false"
  20. :not-found-content="null"
  21. :filter-option="false"
  22. :options="options"
  23. @search="handleSearch"
  24. :field-names="{ label: 'name', value: 'id' }"
  25. />
  26. </a-form-item>
  27. </a-form>
  28. <div class="btn">
  29. <a-button type="primary" @click="onSubmit" :loading="loading" :disabled="!formData.createOrg || !formData.name"
  30. >确定</a-button
  31. >
  32. </div>
  33. </div>
  34. </template>
  35. <script setup>
  36. import { useRoute } from 'vue-router'
  37. import { cloneDeep } from 'lodash-es'
  38. import router from '@/router'
  39. import { message } from 'ant-design-vue'
  40. import { required } from '@/utils/formRules'
  41. import alarmUserApi from '@/api/coldchain/alarmUserApi'
  42. const formData = ref({}) // 表单数据
  43. const formRef = ref()
  44. const Route = useRoute()
  45. // 默认要校验的
  46. const formRules = {
  47. name: [required('请输入您的真实姓名')],
  48. createOrg: [required('请输入您要绑定的组织')]
  49. }
  50. const loading = ref(false) //按钮加载
  51. const options = ref([]) //所有的组织数据
  52. const queryObj = ref({}) //携带的参数
  53. onMounted(() => {
  54. if (Route.query.id) {
  55. queryObj.value = Route.query
  56. console.log(queryObj.value, 'x')
  57. }
  58. })
  59. const handleSearch = (val) => {
  60. if (val) {
  61. alarmUserApi
  62. .getOrgByName({ orgName: val })
  63. .then((res) => {
  64. if (res) {
  65. const data = [{ ...res }]
  66. options.value = data
  67. } else {
  68. options.value = []
  69. message.error('暂无您需要绑定的组织')
  70. }
  71. })
  72. .catch((err) => {
  73. options.value = []
  74. message.error('暂无您需要绑定的组织')
  75. })
  76. }
  77. }
  78. // 确定
  79. const onSubmit = () => {
  80. if (queryObj.value && queryObj.value.id) {
  81. loading.value = true
  82. alarmUserApi
  83. .alarmUserSubmitForm({ ...formData.value, id: queryObj.value.id }, true)
  84. .then((res) => {
  85. loading.value = false
  86. router.push({
  87. path: '/success',
  88. query: {
  89. data: '授权成功'
  90. }
  91. })
  92. })
  93. .catch((err) => {
  94. loading.value = false
  95. })
  96. } else {
  97. loading.value = false
  98. message.error('当前无权授权')
  99. }
  100. }
  101. </script>
  102. <style lang="less" scoped>
  103. .wx {
  104. height: 100vh;
  105. padding: 0 30px;
  106. background-image: url('/src/assets/images/login/logo_background.png');
  107. background-size: cover;
  108. background-position: center;
  109. .head {
  110. padding-top: 35%;
  111. padding-bottom: 30px;
  112. display: flex;
  113. align-items: center;
  114. justify-content: center;
  115. .logo {
  116. width: 35px;
  117. height: 30px;
  118. }
  119. .title {
  120. font-size: 28px;
  121. font-weight: bold;
  122. padding: 30px 10px;
  123. letter-spacing: 10px;
  124. color: #303133;
  125. }
  126. }
  127. .btn {
  128. margin: 35px 0;
  129. text-align: center;
  130. }
  131. }
  132. </style>