index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <script setup>
  2. import { Search as IconSearch } from '@element-plus/icons-vue';
  3. import CheckRow from "~/components/CheckRow/index.vue";
  4. import { getFullUrl, getAvatarUrl } from '~/utils/helper';
  5. const queryForm = reactive({
  6. // ks_status: 2,
  7. grade_id: undefined,
  8. team_id: undefined,
  9. limit: 10,
  10. page: 1
  11. })
  12. const keyword = $ref('')
  13. watch(
  14. queryForm,
  15. () => {
  16. queryData()
  17. }
  18. )
  19. function queryData() {
  20. request({
  21. url: '/kzkt/ssyskc/index',
  22. data: { ...queryForm, keyword }
  23. }).then(res => {
  24. if (res.code === '1') {
  25. data = res.data.page_data
  26. total = res.data.total_rows * 1
  27. }
  28. })
  29. }
  30. let nj = $ref([{ n: '全部', v: undefined }].concat(
  31. ('幼儿园,一年级,二年级,三年级,四年级,五年级,六年级,初一,初二,初三,高一,高二,高三'.split(',').map(_ => ({ n: _, v: _ })))
  32. ))
  33. let fc = $ref()
  34. request({
  35. url: '/jcxx/grade/index',
  36. data: {
  37. limit: 99
  38. }
  39. }).then(res => {
  40. if (res.code === '1') {
  41. nj = [{ n: '全部', v: undefined }].concat(res.data.page_data.map(({ grade_name, grade_id }) => ({ v: grade_id, n: grade_name })))
  42. }
  43. })
  44. let data = $ref([])
  45. let total = $ref(0)
  46. request({
  47. url: '/kzkt/ssyskc/index',
  48. data: { ...queryForm, keyword }
  49. }).then(res => {
  50. if (res.code === '1') {
  51. fc = [{ n: '全部', v: undefined }].concat(res.data.table_structure.field.team_id.option)
  52. data = res.data.page_data
  53. total = res.data.total_rows * 1
  54. }
  55. })
  56. const router = useRouter()
  57. function routerTo(name) {
  58. router.replace({ name })
  59. }
  60. function routerPush(name, payload) {
  61. router.push({ name, ...payload })
  62. }
  63. </script>
  64. <template>
  65. <div class="w-full shadow bg-white rounded-md flex items-center px-36 py-4 mb-4">
  66. <div class="text-lg text-hex-050026">学生作业</div>
  67. <el-divider direction="vertical" />
  68. <div class="text-sm">
  69. <span class="text-hex-949494">作业</span>
  70. <span class="text-hex-949494"> - 双师一生</span>
  71. <span> - 学生作业</span>
  72. </div>
  73. </div>
  74. <div class="w-full shadow bg-white rounded-md flex items-center px-4 py-4 flex-col items-stretch">
  75. <div class="flex items-center justify-between w-full mb-8">
  76. <div class="border p-1 rounded-md flex text-hex-666 ">
  77. <div @click="routerTo('personal_homework_ssys_cjzy')" class=" rounded-md py-1 px-2 cursor-pointer ">创建作业</div>
  78. <div @click="routerTo('personal_homework_ssys_xszy')" class=" rounded-md py-1 px-2 cursor-pointer "
  79. :class="'text-black bg-hex-E8F3FA font-semibold'">学生作业</div>
  80. </div>
  81. <div class="flex">
  82. <div class="w-500px h-40px ">
  83. <el-input class="w-500px h-full rounded-md" placeholder="搜索关键字" v-model="keyword">
  84. <template #suffix>
  85. <div class="w-26px h-26px bg-hex-00A3FF rounded-md flex justify-center items-center cursor-pointer"
  86. @click="queryData()">
  87. <el-icon size="13" color="#fff">
  88. <IconSearch />
  89. </el-icon>
  90. </div>
  91. </template>
  92. </el-input>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="mt-4 w-full">
  97. <check-row v-model="queryForm.grade_id" label="年级" :items="nj"></check-row>
  98. <!-- <check-row v-model="queryForm.team_id" label="分册" :items="fc"></check-row> -->
  99. </div>
  100. <div class="flex flex-wrap justify-between">
  101. <template v-if="data.length">
  102. <div class="w-647px h-155px rounded-xl shadow-lg my-7 flex overflow-hidden cursor-pointer" v-for="i in data"
  103. @click="routerPush('personal_homework_ssys_xszy_list',{params:{pid:i.ks_id}})">
  104. <div class="w-264px h-full flex-none">
  105. <img :src="getFullUrl(i.ks_img)" alt="" class="w-full h-full">
  106. </div>
  107. <div class="p-2 pr-6 flex-auto flex flex-col">
  108. <div class="flex justify-between w-full items-center py-1">
  109. <div class="font-bold">{{ i.ks_name }}</div>
  110. <!-- <div class="text-hex-949494 text-sm flex justify-between items-center">
  111. <el-icon :size="14" color="#949494">
  112. <icon-view />
  113. </el-icon>
  114. <span class="ml-1">{{ i.kss_views }}</span>
  115. </div> -->
  116. </div>
  117. <div class="text-sm text-hex-949494 py-1 line-clamp-2 overflow-ellipsis h-12 ">
  118. {{ i.ks_brief }}
  119. </div>
  120. <div class="text-sm py-1 flex-auto">
  121. <span>{{ i.grade_name }}</span>
  122. <span class="mx-2">|</span>
  123. <span>{{ i.subject_name }}</span>
  124. </div>
  125. <div class="flex text-sm justify-between items-center">
  126. <div class="cursor-pointer flex items-center">
  127. <el-avatar :size="16" :src="getAvatarUrl(i.user_id)" /><span class="ml-1">{{ i.ks_zjjsxm }}</span>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </template>
  133. <div v-else class="flex justify-center w-full">
  134. <el-empty description="暂无数据" />
  135. </div>
  136. </div>
  137. <div class="flex justify-end mb-8">
  138. <el-pagination background layout="prev, pager, next" :total="total" v-model:current-page="queryForm.page" />
  139. </div>
  140. </div>
  141. </template>