|
@@ -0,0 +1,282 @@
|
|
|
+<template>
|
|
|
+ <div class="dashboard-container">
|
|
|
+ <div class="dashboard-text">
|
|
|
+ <el-button type="primary" @click="addList">增加专区课程列表</el-button>
|
|
|
+ <el-table
|
|
|
+ :data="getCategoryRelationData"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ label="序号"
|
|
|
+ width="60"
|
|
|
+ prop="sort"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="id"
|
|
|
+ width="160"
|
|
|
+ prop="id"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="专区名称"
|
|
|
+ width="200"
|
|
|
+ prop="title"
|
|
|
+ />
|
|
|
+ <el-table-column
|
|
|
+ label="专区类型"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ targetCode(scope.row.code) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="专题类型"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.courseType === 'KNOWLEDGE' ? '知识付费' : '图书馆' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="状态"
|
|
|
+ width="80"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.status === 'ABNORMAL' ? '不正常' : '正常' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="创建时间"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ newDate(scope.row.gmtCreated) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="修改时间"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ newDate(scope.row.gmtModified) }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="handleEdit(scope.$index, scope.row)"
|
|
|
+ >修改</el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="handleUp(scope.$index, scope.row)"
|
|
|
+ >{{ scope.row.status === 'ABNORMAL' ? '正常' : '不正常' }}</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-dialog title="专区" :visible.sync="dialogFormVisible">
|
|
|
+ <el-form ref="ruleForm" :model="form" :rules="rules">
|
|
|
+ <el-form-item label="专区类型" :label-width="formLabelWidth" prop="code">
|
|
|
+ <el-select v-model="form.code" placeholder="请选择">
|
|
|
+ <el-option value="PAY" label="知识付费" />
|
|
|
+ <el-option value="PRESCHOOL" label="学前" />
|
|
|
+ <el-option value="PRIMARY" label="小学" />
|
|
|
+ <el-option value="MIDDLE" label="中学" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="标题" :label-width="formLabelWidth" prop="title">
|
|
|
+ <el-input v-model="form.title" autocomplete="off" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="专题类型" :label-width="formLabelWidth" prop="courseType">
|
|
|
+ <el-select v-model="form.courseType" placeholder="请选择">
|
|
|
+ <el-option value="KNOWLEDGE" label="知识付费" />
|
|
|
+ <el-option value="LIBRARY" label="图书馆" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排序" :label-width="formLabelWidth" prop="sort">
|
|
|
+ <el-input v-model="form.sort" autocomplete="off" clearable />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="type === 'add'" label="状态" :label-width="formLabelWidth" prop="status">
|
|
|
+ <el-select v-model="form.status" placeholder="请选择">
|
|
|
+ <el-option value="ABNORMAL" label="不正常" />
|
|
|
+ <el-option value="NORMAL" label="正常" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogFormVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handOk('ruleForm')">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { mapGetters } from 'vuex'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'Dashboard',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogFormVisible: false,
|
|
|
+ form: {},
|
|
|
+ formLabelWidth: '120px',
|
|
|
+ type: '',
|
|
|
+ rules: {
|
|
|
+ code: [
|
|
|
+ { required: true, message: '请选择专区类型', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ title: [
|
|
|
+ { required: true, message: '请输入排序', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ courseType: [
|
|
|
+ { required: true, message: '请选择专题', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ status: [
|
|
|
+ { required: true, message: '请选择状态', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ sort: [
|
|
|
+ { required: true, message: '请输入排序', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.$store.dispatch('categoryList/getRelationList', {
|
|
|
+ categoryId: this.$route.query.categoryId
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // eslint-disable-next-line vue/order-in-components
|
|
|
+ computed: {
|
|
|
+ ...mapGetters([
|
|
|
+ 'getCategoryRelationData'
|
|
|
+ ])
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ newDate(date) {
|
|
|
+ return new Date(date).toLocaleString()
|
|
|
+ },
|
|
|
+ targetCode(type) {
|
|
|
+ let target = ''
|
|
|
+ switch (type) {
|
|
|
+ case 'PRESCHOOL':
|
|
|
+ target = '学前'
|
|
|
+ break
|
|
|
+ case 'PAY':
|
|
|
+ target = '知识付费课程'
|
|
|
+ break
|
|
|
+ case 'PRIMARY':
|
|
|
+ target = '小学'
|
|
|
+ break
|
|
|
+ case 'MIDDLE':
|
|
|
+ target = '中学'
|
|
|
+ break
|
|
|
+ }
|
|
|
+ return target
|
|
|
+ },
|
|
|
+ handleEdit(index, row) {
|
|
|
+ console.log(index, row)
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ this.type = 'set'
|
|
|
+ this.form = {
|
|
|
+ id: '',
|
|
|
+ code: '',
|
|
|
+ title: '',
|
|
|
+ status: '',
|
|
|
+ courseType: '',
|
|
|
+ sort: ''
|
|
|
+ }
|
|
|
+ this.setForm(row)
|
|
|
+ },
|
|
|
+ handleUp(index, row) {
|
|
|
+ console.log(index, row)
|
|
|
+ this.setForm(row)
|
|
|
+ this.form.status = row.status === 'NORMAL' ? 'ABNORMAL' : 'NORMAL'
|
|
|
+ this.$store.dispatch('categoryList/setBlockList', this.form).then(() => {
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ this.$store.dispatch('categoryList/getBlockList', {
|
|
|
+ blockType: '',
|
|
|
+ page: this.page
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handOk(formName) {
|
|
|
+ this.$refs[formName].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.type === 'set') {
|
|
|
+ console.log(this.form)
|
|
|
+ this.$store.dispatch('categoryList/setBlockList', this.form).then(() => {
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ this.$store.dispatch('categoryList/getBlockList', {
|
|
|
+ blockType: '',
|
|
|
+ page: this.page
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$store.dispatch('categoryList/addBlockList', this.form).then(() => {
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ this.$store.dispatch('categoryList/getBlockList', {
|
|
|
+ blockType: '',
|
|
|
+ page: this.page
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log('error submit!!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ addList() {
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ this.type = 'add'
|
|
|
+ this.form = {
|
|
|
+ code: '',
|
|
|
+ title: '',
|
|
|
+ status: '',
|
|
|
+ courseType: '',
|
|
|
+ sort: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCurrentChange(val) {
|
|
|
+ console.log(val)
|
|
|
+ this.page = val
|
|
|
+ this.$store.dispatch('categoryList/getBlockList', {
|
|
|
+ blockType: '',
|
|
|
+ page: this.page
|
|
|
+ })
|
|
|
+ },
|
|
|
+ setForm(data) {
|
|
|
+ this.form.id = data.id
|
|
|
+ this.form.courseType = data.courseType
|
|
|
+ this.form.title = data.title
|
|
|
+ this.form.code = data.code
|
|
|
+ this.form.sort = data.sort
|
|
|
+ this.form.status = data.status
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.dashboard {
|
|
|
+ &-container {
|
|
|
+ margin: 30px;
|
|
|
+ }
|
|
|
+ &-text {
|
|
|
+ font-size: 30px;
|
|
|
+ line-height: 46px;
|
|
|
+ }
|
|
|
+}
|
|
|
+ .el-input {
|
|
|
+ width: 300px;
|
|
|
+ }
|
|
|
+ .el-select>.el-input {
|
|
|
+ width: 300px;
|
|
|
+ }
|
|
|
+ .el-pagination {
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+</style>
|