123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <script setup lang='ts'>
- import { Search } from '@element-plus/icons-vue'
- import { useRouter, RouteLocationRaw } from 'vue-router'
- import { Grade, Subject } from '~/store/info'
- import user from '~/store/user'
- const router = useRouter()
- function routerPush(_route: RouteLocationRaw) {
- router.push(_route)
- }
- const tableData = ref([])
- const total = ref(0)
- const queryForm = reactive({
- dc_grade_id: undefined,
- dc_subject_id: undefined,
- dc_keyword: undefined,
- page: 1
- })
- watch(queryForm, () => {
- doQuery()
- }, { deep: true, immediate: true })
- function doQuery() {
- request({
- url: '/dyaw/ctfx/index',
- data: {
- ...queryForm,
- sm_id: user.sm_info.sm_id,
- limit: 8,
- dc_check: '1'
- }
- }).then(res => {
- if (res.code === "1") {
- tableData.value = res.data.page_data
- total.value = parseInt(res.data.total_rows)
- }
- })
- }
- // TODO: 临时处理
- function translateString(str: string) {
- return str
- }
- </script>
- <template>
- <div class="w-1400px h-640px flex flex-col">
- <div class="flex justify-between items-center">
- <div class="flex flex-none space-x-12 text-lg h-50px">
- <div class="cursor-pointer relative mb-22px tab_selected">错题列表</div>
- </div>
- <div class="flex space-x-2">
- <el-select clearable size="large" placeholder="年级" v-model="queryForm.dc_grade_id">
- <el-option v-for="({ grade_id, grade_name }) in Grade" :key="grade_id" :label="grade_name" :value="grade_id" />
- </el-select>
- <el-select clearable size="large" placeholder="科目" v-model="queryForm.dc_subject_id">
- <el-option v-for="({ subject_id, subject_name }) in Subject" :key="subject_id" :label="subject_name"
- :value="subject_id" />
- </el-select>
- <el-input size="large" placeholder="关键字搜索" class="max-w-240px" :suffix-icon="Search"
- v-model="queryForm.dc_keyword"></el-input>
- </div>
- </div>
- <div class="flex-auto flex-col flex mt-4 justify-between">
- <div class="grid grid-cols-2 grid-rows-4 gap-4">
- <div class="cursor-pointer rounded shadow px-4 py-2 h-120px space-y-3" v-for="d in tableData"
- @click="routerPush({ name: 'student_index_detail', params: { id: d.dc_id } })">
- <div class="flex justify-between">
- <div class="text-xl whitespace-nowrap overflow-ellipsis overflow-hidden max-w-420px">{{ d.dc_title }}</div>
- <el-tag>{{ d.dc_keyword }}</el-tag>
- </div>
- <div class="flex space-x-6 text-gray-500">
- <div>{{ d.dc_grade_name }}</div>
- <div>{{ d.dc_subject_name }}</div>
- </div>
- <div class="text-sm text-gray-500 whitespace-nowrap overflow-ellipsis overflow-hidden">{{
- translateString(d.dc_content) }}</div>
- </div>
- </div>
- <div class="flex justify-end">
- <el-pagination background layout="prev, pager, next" :total="total"></el-pagination>
- </div>
- </div>
- </div>
- </template>
- <style scoped lang="scss">
- .tab_selected {
- color: #007DFF;
- &::after {
- content: '-';
- color: transparent;
- position: absolute;
- left: -5px;
- right: -5px;
- bottom: -4px;
- height: 15px;
- background: rgba(0, 125, 255, 0.30);
- border-radius: 8px;
- }
- }
- </style>
|