优化后台

This commit is contained in:
2023-03-27 18:35:31 +08:00
parent 1339aa2fe4
commit a2087efdc9
28 changed files with 238 additions and 135 deletions

View File

@@ -19,7 +19,7 @@ const course_id = ref(0)
const active = ref(0)
const form = ref({status:1,is_boutique:-1,is_audition:-1})
const subjectParams = ref({
pageIndex:1,
page:1,
pageSize:100,
})
const subjectList = ref([])

View File

@@ -20,7 +20,7 @@ import { getToken } from '@/utils/auth'
const headers = ref({ Authorization: 'Bearer ' + getToken() })
const drawer = ref(false)
const queryParams =ref({
pageIndex:1,
page:1,
pageSize:10,
name:'',
subject:''
@@ -41,7 +41,7 @@ function onSubmit() {
}
function onReset() {
queryParams.value = {
pageIndex:1,
page:1,
pageSize:10,
name:''
}

View File

@@ -38,16 +38,19 @@ onMounted(() => {
getSubjectList()
})
// 方法
const origin_list = ref([])
async function getSubjectList() {
const res = await api.getSubjectList(queryParams.value)
subjectList.value = res.data.records
if(res.code === 0) {
subjectList.value = res.data.records
total.value = res.data.total
origin_list.value = res.data.records
subjectList.value = addTreeFormatSubject(subjectList.value)
// console.log(subjectList.value)
}
}
const current_categral_id = ref(0) // 当前编辑id
function addTreeFormatSubject(data) {
if(!data) {
return []
@@ -55,6 +58,13 @@ function addTreeFormatSubject(data) {
data.map( item => {
item.label = item.name
item.value = item.id
if(current_categral_id.value && (item.id === current_categral_id.value || item.parent_id === current_categral_id.value)) {
item.disabled = true
}
else{
item.disabled = false
}
if(item.level === 3) {
item.disabled = true
}
@@ -83,12 +93,15 @@ const handleSelectionChange = (val) => {
apis.value = val
}
function editApiFunc(row) {
// 深拷贝?
for(let prop in form.value) {
if(row[prop]){
form.value[prop] = row[prop]
}
}
form.value.id = row.id
current_categral_id.value = row.id
subjectList.value = addTreeFormatSubject(origin_list.value)
// return
openDialog('edit')
}
@@ -119,6 +132,8 @@ function openDialog(key) {
switch (key) {
case 'add':
dialogTitle.value = '新增类型'
current_categral_id.value = 0
subjectList.value = addTreeFormatSubject(origin_list.value)
break
case 'edit':
dialogTitle.value = '编辑类型'
@@ -183,13 +198,13 @@ async function enterDialog() { // 确认创建或修改
}
const onReset = () => {
queryParams.value = {
pageIndex:1,
page:1,
pageSize:10,
keyword:''
}
}
function handleCurrentChange(val) {
queryParams.value.pageIndex = val
queryParams.value.page = val
getSubjectList()
}
function handleSizeChange(val) {
@@ -252,7 +267,7 @@ function handleSizeChange(val) {
</el-table>
<div class="gva-pagination">
<el-pagination
:current-page="queryParams.pageIndex"
:current-page="queryParams.page"
:page-size="queryParams.pageSize"
:page-sizes="[10, 30, 50, 100]"
:total="total"

View File

@@ -18,7 +18,7 @@ const queryParams = ref({
subject:''
})
const subjectParams = ref({
pageIndex:1,
page:1,
pageSize:100,
})
const tableData = ref([])
@@ -33,6 +33,28 @@ const rules = ref({
name: [{ required: true, message: '请输入课程名称', trigger: 'blur' }]
})
const course_id = ref(0)
const statusList = ref([
{
name:'已上架',
value:1
},
{
name:'已下架',
value:-1
},
{
name:'待审核',
value:2
},
{
name:'已通过',
value:3
},
{
name:'已拒绝',
value:4
}
])
// 生命周期
onMounted(() => {
getCourseList()
@@ -43,6 +65,7 @@ async function getCourseList() {
const res = await api.getCourseList(queryParams.value)
if(res.code === 0) {
tableData.value = res.data.records
total.value = res.data.total
}
}
async function getSubject(){ // 获取课程分类
@@ -58,7 +81,7 @@ function onSubmit() {
}
const onReset = () => {
queryParams.value = {
pageIndex:1,
page:1,
pageSize:10,
name:'',
status:'',
@@ -126,7 +149,7 @@ function deleteCourseFunc(row) {
})
}
function handleCurrentChange(val) {
queryParams.value.pageIndex = val
queryParams.value.page = val
getCourseList()
}
function handleSizeChange(val) {
@@ -206,17 +229,20 @@ async function enterVerifyDialog() { // 审核提交
<el-form-item label="课程名称">
<el-input v-model="queryParams.name" placeholder="根据课程名称进行查询" />
</el-form-item>
<el-form-item label="课程状态">
<el-select v-model="queryParams.status" clearable placeholder="请选择">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="课程分类">
<!-- <el-select v-model="queryParams.subject" clearable placeholder="请选择">-->
<!-- <el-option-->
<!-- v-for="item in subjectList"-->
<!-- :key="item.id"-->
<!-- :label="item.name"-->
<!-- :value="item.id"-->
<!-- />-->
<!-- </el-select>-->
<el-tree-select v-model="queryParams.subject" :data="subjectList" :render-after-expand="false" />
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button size="small" icon="refresh" @click="onReset">重置</el-button>
@@ -248,12 +274,13 @@ async function enterVerifyDialog() { // 审核提交
<el-table-column align="left" label="id" min-width="60" prop="course_id" sortable="custom" />
<el-table-column align="left" label="名称" min-width="150" prop="name" />
<el-table-column align="left" label="科目" min-width="150" prop="subject" />
<el-table-column align="left" label="教师" min-width="150" prop="teacher_name" />
<el-table-column align="left" label="价格" min-width="150">
<template #default="scope">{{scope.row.price/100}}</template>
</el-table-column>
<el-table-column align="left" label="状态" min-width="150" prop="status">
<template #default="scope">
{{scope.row.status == 1?'上架':scope.row.status == 2?'待审核':scope.row.status == 3?'通过':scope.row.status == 4?'未通过':'下架'}}
{{scope.row.status == 1?'上架':scope.row.status == 2?'待审核':scope.row.status == 3?'通过':scope.row.status == 4?'未通过':'下架'}}
</template>
</el-table-column>
<el-table-column align="left" label="是否精品" min-width="150" prop="is_boutique">
@@ -290,7 +317,7 @@ async function enterVerifyDialog() { // 审核提交
</el-table>
<div class="gva-pagination">
<el-pagination
:current-page="queryParams.pageIndex"
:current-page="queryParams.page"
:page-size="queryParams.pageSize"
:page-sizes="[10, 30, 50, 100]"
:total="total"
@@ -324,6 +351,10 @@ async function enterVerifyDialog() { // 审核提交
<el-form-item label="是否通过" prop="is_free">
<el-switch v-model="verifyForm.is_pass" active-text="通过" inactive-text="拒绝" :active-value="1" :inactive-value="-1" />
</el-form-item>
<el-form-item label="审核说明" prop="is_free">
<!-- <el-switch v-model="verifyForm.is_pass" active-text="通过" inactive-text="拒绝" :active-value="1" :inactive-value="-1" />-->
<el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" v-model="verifyForm.desc" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">

View File

@@ -28,6 +28,14 @@ function downloadChapterChildFunc(item) { // 点击下载
// console.log(item)
window.open(row.url)
}
function viewFunc(row,type) { // 查看课程课件或者试卷
if(type === 1) { // 课件
console.log(row.url)
}
else{ // 试卷
}
}
</script>
<template>
<div>
@@ -83,12 +91,16 @@ function downloadChapterChildFunc(item) { // 点击下载
<el-table-column align="left" label="子章节名称" min-width="60" prop="name" />
<el-table-column align="left" label="课件名称" min-width="60">
<template #default="scope">
{{scope.row.url === ''?'未上传课件':scope.row.url}}
<!-- {{scope.row.url === ''?'未上传课件':scope.row.url}}-->
<div v-if="scope.row.url" @click="viewFunc(scope.row,1)">查看</div>
<div v-else>未上传课件</div>
</template>
</el-table-column>
<el-table-column align="left" label="试卷习题" min-width="60" prop="is_contain_exercise">
<template #default="scope">
{{scope.row.exam_id === 0?'未添加习题':scope.row.exam_id}}
<!-- {{scope.row.exam_id === 0?'未添加习题':scope.row.exam_id}}-->
<div v-if="scope.row.exam_id" @click="viewFunc(scope.row,2)">查看</div>
<div v-else>未添加试卷</div>
</template>
</el-table-column>
<el-table-column align="left" label="是否免费" min-width="60">
@@ -96,11 +108,11 @@ function downloadChapterChildFunc(item) { // 点击下载
{{scope.row.is_free === 1? '是':'否'}}
</template>
</el-table-column>
<el-table-column align="left" label="是否展示" min-width="60">
<template #default="scope">
{{scope.row.is_show === 1? '是':'否'}}
</template>
</el-table-column>
<!-- <el-table-column align="left" label="是否展示" min-width="60">-->
<!-- <template #default="scope">-->
<!-- {{scope.row.is_show === 1? '是':'否'}}-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column align="left" label="操作" min-width="60">
<template #default="scope">
<el-button v-if="scope.row.url"