update
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<script setup>
|
||||
import {ref} from "vue";
|
||||
import JumpMethod from '../../../../../components/JumpMethod/index.vue';
|
||||
|
||||
const visible = ref(false);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button v-if="!$slots.default" type="primary" @click="visible=true">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<div v-else @click="visible=true">
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
||||
<a-modal
|
||||
title="编辑平台消息"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form layout="vertical">
|
||||
<a-form-item label="封面">
|
||||
<a-upload></a-upload>
|
||||
</a-form-item>
|
||||
<a-form-item label="跳转方式">
|
||||
<JumpMethod></JumpMethod>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,35 @@
|
||||
<script setup>
|
||||
import {ref} from 'vue';
|
||||
|
||||
const {title} = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
default: '二维码'
|
||||
}
|
||||
});
|
||||
|
||||
const visible = ref(false);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-link :hoverable="false" @click="visible=true">编辑</a-link>
|
||||
|
||||
<a-modal
|
||||
ok-text="提交"
|
||||
:title="title"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form>
|
||||
<a-form-item label="位置">
|
||||
<a-input placeholder="首页/添加客服&我的/联系客服"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="二维码">
|
||||
<a-upload></a-upload>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -3,6 +3,7 @@ import SequenceAdjustment from "../../../../../components/SequenceAdjustment/ind
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../api/index.js";
|
||||
import EditBanner from "./EditBanner.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@@ -35,7 +36,7 @@ const columns = [
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 60,
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -56,12 +57,7 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button type="primary">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<EditBanner></EditBanner>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@@ -77,7 +73,12 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
<div class="flex gap-[10px]">
|
||||
<EditBanner>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</EditBanner>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
@@ -1,129 +1,55 @@
|
||||
<script setup>
|
||||
import {reactive, ref} from "vue";
|
||||
import SequenceAdjustment from "../../../../../components/SequenceAdjustment/index.vue";
|
||||
import useTableQuery from "../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../api/index.js";
|
||||
import {defineAsyncComponent} from "vue";
|
||||
|
||||
const FrequentlyQuestions = defineAsyncComponent(() => import('./tabs/FrequentlyQuestions.vue'));
|
||||
const BasicTeaching = defineAsyncComponent(() => import('./tabs/BasicTeaching.vue'));
|
||||
const BannerManagement = defineAsyncComponent(() => import('./tabs/BannerManagement.vue'));
|
||||
const SecondaryClassificationManagement = defineAsyncComponent(() => import('./tabs/SecondaryClassificationManagement.vue'));
|
||||
|
||||
const tabs = [
|
||||
{
|
||||
title: '常见问题',
|
||||
key: '1',
|
||||
component: FrequentlyQuestions
|
||||
},
|
||||
{
|
||||
title: '基础教学',
|
||||
key: '2',
|
||||
component: BasicTeaching
|
||||
},
|
||||
{
|
||||
title: 'banner管理',
|
||||
key: '3',
|
||||
component: BannerManagement
|
||||
},
|
||||
{
|
||||
title: '二级分类管理',
|
||||
key: '4',
|
||||
component: SecondaryClassificationManagement
|
||||
},
|
||||
];
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '二级分类',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '标题',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '简介',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '是否启用',
|
||||
dataIndex: 'isA',
|
||||
slotName: 'isA',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '是否置顶',
|
||||
dataIndex: 'isTop',
|
||||
slotName: 'isTop',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '排序',
|
||||
dataIndex: 'sort',
|
||||
slotName: 'sort',
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
const activeKey = ref('1');
|
||||
const po = reactive({});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-tabs v-model:active-key="activeKey" type="text">
|
||||
<a-tab-pane
|
||||
v-for="item in tabs"
|
||||
:key="item.key"
|
||||
:title="item.title">
|
||||
<a-tabs
|
||||
class="w-full"
|
||||
:justify="true"
|
||||
:destroy-on-hide="true"
|
||||
type="rounded">
|
||||
<a-tab-pane v-for="item in tabs" :key="item.key" :title="item.title">
|
||||
<Suspense>
|
||||
<template #default>
|
||||
<div class="h-full flex flex-col items-start">
|
||||
<component :is="item.component"></component>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template #fallback>
|
||||
加载中...
|
||||
</template>
|
||||
</Suspense>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
|
||||
<a-button type="primary">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:data="vo.rows"
|
||||
:columns="columns"
|
||||
class="flex-grow mt-[20px] w-full">
|
||||
<template v-slot:isA>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:isTop>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[20px]">
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -3,6 +3,7 @@ import SequenceAdjustment from "../../../../../components/SequenceAdjustment/ind
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../api/index.js";
|
||||
import EditBanner from "./EditBanner.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@@ -35,7 +36,7 @@ const columns = [
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 60,
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -56,12 +57,7 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button type="primary">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<EditBanner></EditBanner>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@@ -77,7 +73,12 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
<div class="flex gap-[10px]">
|
||||
<EditBanner>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</EditBanner>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../api/index.js";
|
||||
import EditQR from "./EditQR.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@@ -59,7 +60,7 @@ const {loading, pagination, initFetchData} = useTableQuery({
|
||||
</a-image>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
<EditQR></EditQR>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
<script setup>
|
||||
import SequenceAdjustment from "../../../../../../components/SequenceAdjustment/index.vue";
|
||||
import EditBanner from "../EditBanner.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../../api/index.js";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '封面',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '跳转方式',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '是否启用',
|
||||
dataIndex: 'isA',
|
||||
slotName: 'isA',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '排序',
|
||||
dataIndex: 'sort',
|
||||
slotName: 'sort',
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
const po = reactive({});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button type="primary">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:data="vo.rows"
|
||||
:columns="columns"
|
||||
class="flex-grow mt-[20px] w-full">
|
||||
<template v-slot:isA>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[10px]">
|
||||
<EditBanner>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</EditBanner>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,109 @@
|
||||
<script setup>
|
||||
import SequenceAdjustment from "../../../../../../components/SequenceAdjustment/index.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../../api/index.js";
|
||||
import AddBasicTeaching from "./components/AddBasicTeaching.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '二级分类',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '封面',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '标题',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '简介',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '跳转方式',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '是否启用',
|
||||
dataIndex: 'isA',
|
||||
slotName: 'isA',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '是否置顶',
|
||||
dataIndex: 'isTop',
|
||||
slotName: 'isTop',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '排序',
|
||||
dataIndex: 'sort',
|
||||
slotName: 'sort',
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
const po = reactive({});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<AddBasicTeaching></AddBasicTeaching>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:data="vo.rows"
|
||||
:columns="columns"
|
||||
class="flex-grow mt-[20px] w-full">
|
||||
<template v-slot:isA>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:isTop>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[20px]">
|
||||
<AddBasicTeaching>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</AddBasicTeaching>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,101 @@
|
||||
<script setup>
|
||||
import SequenceAdjustment from "../../../../../../components/SequenceAdjustment/index.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../../api/index.js";
|
||||
import AddFrequentlyQuestions from "./components/AddFrequentlyQuestions.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '二级分类',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '标题',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '简介',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '是否启用',
|
||||
dataIndex: 'isA',
|
||||
slotName: 'isA',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '是否置顶',
|
||||
dataIndex: 'isTop',
|
||||
slotName: 'isTop',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '排序',
|
||||
dataIndex: 'sort',
|
||||
slotName: 'sort',
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
const po = reactive({});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<AddFrequentlyQuestions></AddFrequentlyQuestions>
|
||||
|
||||
<a-table
|
||||
:loading="loading"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:data="vo.rows"
|
||||
:columns="columns"
|
||||
class="flex-grow mt-[20px] w-full">
|
||||
<template v-slot:isA>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:isTop>
|
||||
<a-switch></a-switch>
|
||||
</template>
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[20px]">
|
||||
<AddFrequentlyQuestions>
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</AddFrequentlyQuestions>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,129 @@
|
||||
<script setup>
|
||||
import SequenceAdjustment from "../../../../../../components/SequenceAdjustment/index.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../../../api/index.js";
|
||||
import AddSecondaryClassificationManagement from "./components/AddSecondaryClassificationManagement.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '二级分类名称',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '排序',
|
||||
dataIndex: 'sort',
|
||||
slotName: 'sort',
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 120,
|
||||
},
|
||||
];
|
||||
|
||||
const po = reactive({});
|
||||
const vo1 = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
const vo2 = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading: loading1, pagination: pagination1, initFetchData: initFetchData1} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo1, data);
|
||||
}
|
||||
});
|
||||
|
||||
const {loading: loading2, pagination: pagination2, initFetchData: initFetchData2} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo2, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="w-full h-full flex gap-[20px]">
|
||||
<div class="flex-grow flex flex-col gap-[20px]">
|
||||
<div class="flex justify-between">
|
||||
<div class="title">常见问题</div>
|
||||
|
||||
<AddSecondaryClassificationManagement :max-class="1"></AddSecondaryClassificationManagement>
|
||||
</div>
|
||||
|
||||
<a-table
|
||||
@page-change="(e) => pagination1.current = e"
|
||||
:pagination="pagination1"
|
||||
:data="vo1.rows"
|
||||
:loading="loading1"
|
||||
:columns="columns"
|
||||
class="w-full h-full">
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[10px]">
|
||||
<AddSecondaryClassificationManagement :max-class="1">
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</AddSecondaryClassificationManagement>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
|
||||
<div class="flex-grow flex flex-col gap-[20px]">
|
||||
<div class="flex justify-between">
|
||||
<div class="title">基础教学</div>
|
||||
|
||||
<AddSecondaryClassificationManagement :max-class="2"></AddSecondaryClassificationManagement>
|
||||
</div>
|
||||
|
||||
<a-table
|
||||
@page-change="(e) => pagination2.current = e"
|
||||
:pagination="pagination2"
|
||||
:data="vo2.rows"
|
||||
:loading="loading2"
|
||||
:columns="columns"
|
||||
class="w-full h-full">
|
||||
<template v-slot:sort>
|
||||
<SequenceAdjustment></SequenceAdjustment>
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[10px]">
|
||||
<AddSecondaryClassificationManagement :max-class="2">
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
</AddSecondaryClassificationManagement>
|
||||
<a-link :hoverable="false" status="danger">删除</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.title {
|
||||
color: rgb(29, 33, 41);
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
line-height: 24px;
|
||||
letter-spacing: 0;
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,54 @@
|
||||
<script setup>
|
||||
import Api from "../../../../../../../api/index.js";
|
||||
import XSelect from "../../../../../../../components/XSelect/index.vue";
|
||||
import JumpMethod from '../../../../../../../components/JumpMethod/index.vue';
|
||||
import {reactive, ref} from "vue";
|
||||
|
||||
const visible = ref(false);
|
||||
|
||||
const form = reactive({
|
||||
title: null,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button v-if="!$slots.default" type="primary" @click="visible=true">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<div v-else @click="visible=true">
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
||||
|
||||
<a-modal
|
||||
title="新增常见问题"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form
|
||||
layout="vertical"
|
||||
:model="form">
|
||||
<a-form-item label="二级分类">
|
||||
<XSelect :api="Api.system.getSelect" placeholder="请选择二级分类"></XSelect>
|
||||
</a-form-item>
|
||||
<a-form-item label="标题">
|
||||
<a-upload></a-upload>
|
||||
</a-form-item>
|
||||
<a-form-item label="标题">
|
||||
<a-input v-model:model-value="form.title" placeholder="请输入标题"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="简介">
|
||||
<a-textarea placeholder="请输入简介"></a-textarea>
|
||||
</a-form-item>
|
||||
<a-form-item label="跳转方式">
|
||||
<JumpMethod></JumpMethod>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<script setup>
|
||||
import {ref, reactive} from 'vue';
|
||||
import XSelect from "../../../../../../../components/XSelect/index.vue";
|
||||
import Api from "../../../../../../../api/index.js";
|
||||
|
||||
const visible = ref(false);
|
||||
|
||||
const form = reactive({
|
||||
title: null,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button v-if="!$slots.default" type="primary" @click="visible=true">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<div v-else @click="visible=true">
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
||||
|
||||
<a-modal
|
||||
title="新增常见问题"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form
|
||||
layout="vertical"
|
||||
:model="form">
|
||||
<a-form-item label="二级分类">
|
||||
<XSelect :api="Api.system.getSelect" placeholder="请选择二级分类"></XSelect>
|
||||
</a-form-item>
|
||||
<a-form-item label="标题">
|
||||
<a-input v-model:model-value="form.title" placeholder="请输入标题"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="简介">
|
||||
<a-textarea placeholder="请输入简介"></a-textarea>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,72 @@
|
||||
<script setup>
|
||||
import XSelect from "../../../../../../../components/XSelect/index.vue";
|
||||
import {reactive, ref} from "vue";
|
||||
|
||||
const {maxClass} = defineProps({
|
||||
maxClass: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
}
|
||||
});
|
||||
|
||||
const visible = ref(false);
|
||||
|
||||
const form = reactive({
|
||||
title: null,
|
||||
});
|
||||
|
||||
const getData = async () => {
|
||||
return new Promise((resolve) => {
|
||||
resolve({
|
||||
data: [
|
||||
{
|
||||
id: 1,
|
||||
name: '常见问题',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '基础教学',
|
||||
},
|
||||
]
|
||||
});
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-button v-if="!$slots.default" type="primary" @click="visible=true">
|
||||
<template #icon>
|
||||
<icon-plus/>
|
||||
</template>
|
||||
新建
|
||||
</a-button>
|
||||
<div v-else @click="visible=true">
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
||||
|
||||
<a-modal
|
||||
title="新增二级分类"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form
|
||||
layout="vertical"
|
||||
:model="form">
|
||||
<a-form-item label="一级分类">
|
||||
<XSelect
|
||||
:default-value="maxClass"
|
||||
:api="getData"
|
||||
placeholder="请选择二级分类"
|
||||
:disabled="true">
|
||||
</XSelect>
|
||||
</a-form-item>
|
||||
<a-form-item label="二级分类名称">
|
||||
<a-input v-model:model-value="form.title" placeholder="请输入二级分类名称"></a-input>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user