selectUserDialog.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <Modal :visible="show" :class="'modalArea'" style="padding: 0;background: none;" :width="400" :closeButton="false" :closeOnClickMask="true" @closed="close()">
  3. <div class="header">
  4. <div class="title" v-html="title"></div>
  5. <div class="close" @click="close()"><svg viewBox="0 0 1024 1024" width="200" height="200"><path d="M999.819275 905.894092c26.805506 27.003004 26.78811 70.77902-0.051166 97.756441-13.398148 13.484106-30.970362 20.234857-48.534389 20.234857-17.58961 0-35.171034-6.758937-48.577369-20.277836L511.657192 609.698113 120.30704 1003.263723c-13.407358 13.475919-30.970362 20.217461-48.53439 20.217461-17.58961 0-35.17922-6.758937-48.585555-20.269649-26.813692-27.003004-26.78811-70.77902 0.042979-97.764628l391.33378-393.557424L23.572882 117.989251c-26.813692-27.012214-26.796296-70.780043 0.034792-97.764627 26.839275-26.985608 70.332858-26.960025 97.137341 0.042979l390.989949 393.909441L903.07693 20.61962c26.831089-26.977421 70.315462-26.960025 97.129154 0.042979 26.813692 27.01119 26.78811 70.770833-0.042979 97.764627L608.812953 511.98465l391.006322 393.909442z"></path></svg></div>
  6. </div>
  7. <div class="content">
  8. <div v-for="(item, index) in data.user" :key="index" v-if="!(data.notFiledUser && data.notFiledUser)">
  9. {{ item }}
  10. </div>
  11. <span v-if="data.isSubmitUser">{{ lang.ssSubStu2 }}:</span>
  12. <div v-for="(item, index) in data.isSubmitUser" :key="index" v-if="data.isSubmitUser">
  13. {{ item }}
  14. </div>
  15. <div class="line" v-if="data.isSubmitUser && data.isSubmitUser"></div>
  16. <span v-if="data.notFiledUser">{{ lang.ssUnsubStu2 }}:</span>
  17. <div v-for="(item, index) in data.notFiledUser" :key="index" v-if="data.notFiledUser">
  18. {{ item }}
  19. </div>
  20. </div>
  21. </Modal>
  22. </template>
  23. <script setup>
  24. import { ref } from 'vue'
  25. import Modal from '@/components/Modal.vue'
  26. import { lang } from '@/main'
  27. const show = ref(false)
  28. const data = ref({})
  29. const title = ref("")
  30. // 打开
  31. const open = (tit,value) => {
  32. init()
  33. show.value = true
  34. title.value = tit
  35. data.value = JSON.parse(JSON.stringify(value))
  36. }
  37. // 关闭
  38. const close = () => {
  39. show.value = false
  40. init()
  41. }
  42. const init = () => {
  43. title.value = ""
  44. data.value = {}
  45. }
  46. defineExpose({
  47. open,
  48. close,
  49. })
  50. </script>
  51. <style lang="scss" scoped>
  52. .modalArea{
  53. &>.modal-content {
  54. border-radius: 1rem;
  55. box-shadow: 0 0 10px #FDF6DE;
  56. padding: 0;
  57. border: solid 1px #FDF6DE;
  58. }
  59. }
  60. .header{
  61. padding: 1.2rem 1.5rem;
  62. border-bottom: solid 1px #FDF6DE;
  63. font-weight: bold;
  64. font-size: 1.2rem;
  65. display: flex;
  66. align-items: center;
  67. justify-content: space-between;
  68. &>.title{
  69. display: flex;
  70. align-items: center;
  71. gap: .5rem;
  72. }
  73. &>.close{
  74. cursor: pointer;
  75. padding: .6rem;
  76. border-radius: 2rem;
  77. border: solid 1px #FCEFC8;
  78. width: fit-content;
  79. height: fit-content;
  80. box-sizing: border-box;
  81. display: flex;
  82. align-items: center;
  83. justify-content: center;
  84. &>svg{
  85. width: .7rem;
  86. height: .7rem;
  87. }
  88. }
  89. }
  90. .content{
  91. padding: 1rem;
  92. display: flex;
  93. gap: .8rem;
  94. flex-wrap: wrap;
  95. max-height: calc(100vh - 8.6rem);
  96. overflow: auto;
  97. &>div{
  98. padding: .25rem .5rem;
  99. font-weight: 500;
  100. font-size: 1rem;
  101. }
  102. &>span{
  103. width: 100%;
  104. display: block;
  105. font-weight: 600;
  106. font-size: 1rem;
  107. }
  108. &>.line{
  109. padding: 0;
  110. width: 100%;
  111. height: 2px;
  112. background: #FDF6DE;
  113. }
  114. }
  115. </style>