src/api/subject.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/Manage/Manage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/Manage/TestPaper/QuestionBank.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/Manage/TestPaper/subject.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/subject.js
@@ -4,6 +4,7 @@ list: query => post('/api/admin/subject/list'), pageList: query => post('/api/admin/subject/page', query), edit: query => post('/api/admin/subject/edit', query), updateStatus: query => post('/api/admin/question/status', query), select: id => post('/api/admin/subject/select/' + id), deleteSubject: id => post('/api/admin/subject/delete/' + id) } src/router.js
@@ -129,6 +129,13 @@ component: () => import('@/views/Manage/TestPaper/QuestionBank.vue'), meta: { title: '题库管理' } }, // 科目管理 { path: 'subject', name: 'subject', component: () => import('@/views/Manage/TestPaper/subject.vue'), meta: { title: '科目管理' } }, // 试卷生成 { path: 'test-paper-generation', src/views/Manage/Manage.vue
@@ -503,6 +503,46 @@ </div> <p>教师管理</p> </div> <!-- 科目管理 --> <div class="main-1-con" @click="routersTo('/manage/subject')" > <div class="icon-bg1"> <svg t="1651737345718" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4056" width="32" height="32" > <path d="M897.28 85.333333h-750.933333c-28.16 0-51.2 23.04-51.2 51.2v750.933334c0 28.16 23.04 51.2 51.2 51.2h276.906666c18.773333 0 34.133333-15.36 34.133334-34.133334s-15.36-34.133333-34.133334-34.133333H163.413333V153.6h716.8v275.626667c0 18.773333 15.36 34.133333 34.133334 34.133333s34.133333-15.36 34.133333-34.133333V136.533333c0-28.16-22.613333-51.2-51.2-51.2z" fill="#515151" p-id="4057" ></path> <path d="M649.813333 315.733333h-324.266666c-18.773333 0-34.133333-15.36-34.133334-34.133333s15.36-34.133333 34.133334-34.133333h324.266666c18.773333 0 34.133333 15.36 34.133334 34.133333s-14.933333 34.133333-34.133334 34.133333zM564.48 452.266667h-238.933333c-18.773333 0-34.133333-15.36-34.133334-34.133334s15.36-34.133333 34.133334-34.133333h238.933333c18.773333 0 34.133333 15.36 34.133333 34.133333s-14.933333 34.133333-34.133333 34.133334zM479.146667 588.8h-153.6c-18.773333 0-34.133333-15.36-34.133334-34.133333s15.36-34.133333 34.133334-34.133334h153.6c18.773333 0 34.133333 15.36 34.133333 34.133334s-14.933333 34.133333-34.133333 34.133333zM743.68 529.066667c-113.066667 0-204.8 91.733333-204.8 204.8s91.733333 204.8 204.8 204.8 204.8-91.733333 204.8-204.8c0-112.64-91.306667-204.8-204.8-204.8z m0 341.333333c-75.093333 0-136.533333-61.44-136.533333-136.533333s61.013333-136.533333 136.533333-136.533334 136.533333 61.44 136.533333 136.533334c0 75.52-61.013333 136.533333-136.533333 136.533333z" fill="#515151" p-id="4058" ></path> <path d="M709.546667 810.666667c-18.773333 0-34.133333-15.36-34.133334-34.133334v-85.333333c0-18.773333 15.36-34.133333 34.133334-34.133333s34.133333 15.36 34.133333 34.133333v85.333333c0 18.773333-14.933333 34.133333-34.133333 34.133334z" fill="#515151" p-id="4059" ></path> <path d="M675.413333 776.533333c0-18.773333 15.36-34.133333 34.133334-34.133333h85.333333c18.773333 0 34.133333 15.36 34.133333 34.133333s-15.36 34.133333-34.133333 34.133334h-85.333333c-18.773333 0-34.133333-15.36-34.133334-34.133334z" fill="#515151" p-id="4060" ></path> </svg> </div> <p>科目管理</p> </div> <!-- 题库管理 --> <div class="main-1-con" src/views/Manage/TestPaper/QuestionBank.vue
@@ -12,7 +12,7 @@ <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key" @click="getDialogFormVisible(item.name)">{{ item.name }} </el-button> <el-button slot="reference" type="primary" class="link-left">录入题目</el-button> <el-button slot="reference" type="primary" class="link-left">新增</el-button> </el-popover> </div> <!-- 搜索 --> @@ -39,7 +39,7 @@ </el-select> </el-form-item> <el-form-item label=""> <el-form-item> <el-button style="width:100px;" type="primary" size="small" @click="search()">查询</el-button> </el-form-item> </el-form> @@ -47,14 +47,12 @@ <!-- 表格 --> <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border style="width: 100%;"> <el-table-column align="center" prop="shortTitle" label="题目名" show-overflow-tooltip> <el-table-column align="center" prop="shortTitle" label="题目" show-overflow-tooltip> </el-table-column> <el-table-column align="center" prop="subjectName" label="科目" width="150px"> </el-table-column> <el-table-column align="center" prop="questionTypeName" label="题型" width="100px"> </el-table-column> <!-- <el-table-column align="center" prop="score" label="分数"> </el-table-column> --> <el-table-column align="center" prop="difficult" label="难度" width="60px" /> <el-table-column align="center" prop="createTime" label="创建时间" width="160px" /> <el-table-column label="状态" prop="status" width="70px"> @@ -80,8 +78,8 @@ :limit.sync="queryParam.pageSize" @pagination="search" /> </div> </div> </div> <!-- 填空 --> <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false" v-if="gapVisible"> <gap ref="gap" @children="parentGoods" @callback="callback" :id="updateId" /> src/views/Manage/TestPaper/subject.vue
New file @@ -0,0 +1,215 @@ <!-- 科目管理 --> <template> <div class="c"> <div class="bg"> <div class="main"> <!-- 待返回的标题 --> <TitleIndex title="科目管理" /> <div class="content"> <!-- 新增按钮 --> <div style="padding-bottom:20px; border-bottom: 3px solid #409EFF;margin-bottom: 20px;"> <el-button type="primary" class="link-left" @click="edit()">新增</el-button> </div> <!-- 搜索 --> <div> <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px"> <el-form-item> <el-input v-model="queryParam.name" placeholder="请输入名称" clearable></el-input> </el-form-item> <el-form-item> <el-select v-model="queryParam.status" placeholder="请选择状态" clearable @change="search"> <el-option value="1" label="启用"></el-option> <el-option value="2" label="禁用"></el-option> </el-select> </el-form-item> <el-form-item> <el-button style="width:100px;" type="primary" size="small" @click="search()">查询</el-button> </el-form-item> </el-form> </div> <!-- 表格 --> <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border style="width: 100%;"> <el-table-column align="center" prop="name" label="名称" show-overflow-tooltip /> <el-table-column align="center" prop="itemOrder" label="排序" width="150px" /> <el-table-column align="center" prop="createTime" label="创建时间" width="160px" /> <el-table-column label="状态" prop="status" width="70px"> <template slot-scope="{row}"> <el-tag :type="row.status === '禁用' ? 'danger' : 'success'"> {{ row.status ? row.status : '启用' }} </el-tag> </template> </el-table-column> <el-table-column label="操作" align="center" width="300px"> <template slot-scope="{row}"> <el-button size="mini" @click="edit(row)">编辑</el-button> <el-button size="mini" type="primary" @click="status(row)">{{ row.status === "禁用" ? "启用" : "禁用" }}</el-button> <el-popconfirm title="确认删除吗" @confirm="deleteSubject(row)"> <el-button slot="reference" size="mini" type="danger" class="link-left">删除</el-button> </el-popconfirm> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize" @pagination="search" /> </div> </div> </div> <el-dialog :visible.sync="form.visible" style="width: 100%;height: 100%"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> <el-form-item label="名称:" prop="name" required> <el-input v-model="form.name" /> </el-form-item> <el-form-item label="排序:" prop="itemOrder" required> <el-input v-model="form.itemOrder" type="number" /> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> <el-button @click="resetForm">重置</el-button> </el-form-item> </el-form> </el-dialog> </div> </template> <script> // 引入彈出窗口組件 import subjectApi from '@/api/subject' import Pagination from '@/components/Pagination' export default { // 注册 components: { Pagination }, data() { return { listLoading: true, queryParam: { name: '', pageIndex: 1, pageSize: 10 }, formLoading: false, total: 0, tableData: [], form: { id: '', name: '', itemOrder: '', visible: false }, rules: { name: [ { required: true, message: '请输入名称', trigger: 'blur' } ], itemOrder: [ { required: true, message: '请输入排序', trigger: 'blur', type: 'number' } ] }, }; }, created() { this.search() }, methods: { // 获取排序 getItemOrder() { subjectApi.getItemOrder.then(re => { this.form.itemOrder = re.data }) }, // 获取列表 search() { this.listLoading = true subjectApi.pageList(this.queryParam).then(re => { this.tableData = re.data.list this.total = re.data.total this.queryParam.pageSize = re.data.pageSize this.queryParam.pageIndex = re.data.pageNum this.listLoading = false }) }, // 修改表单头部的颜色 getRowClass() { return "background:#d2d3d6"; }, edit(row) { if (row) { subjectApi.select(row.id).then(re => { if (re.code === 1) { this.form.visible = true; this.form = re.data; } else { this.$message.error(re.message) } }) } else { this.form.visible = true; } }, status(row) { let question = { id: row.id, status: row.status === '禁用' ? '启用' : '禁用' } subjectApi.updateStatus(question).then(re => { if (re.code === 1) { this.$message.success(re.message) this.search() } else { this.$message.error(re.message) } }) }, deleteSubject(row) { let _this = this subjectApi.deleteSubject(row.id).then(re => { if (re.code === 1) { _this.search() _this.$message.success(re.message) } else { _this.$message.error(re.message) } }) }, submitForm() { let _this = this this.$refs.form.validate((valid) => { if (valid) { this.formLoading = true subjectApi.edit(this.form).then(re => { if (re.code === 1) { _this.$message.success(re.message) _this.search() } else { _this.$message.error(re.message) this.formLoading = false } }) } }) }, resetForm() { let lastId = this.form.id this.$refs['form'].resetFields() this.form.id = lastId }, } }; </script> <style scoped lang="scss"> .flex { display: flex; } // 内容 .content { width: 1262px; margin-bottom: 80px; background-color: #fff; padding: 20px 40px; border-radius: 10px; } </style>