产品分化调整
This commit is contained in:
parent
0fac6ce22e
commit
1fb0cf3e94
9
src/api/trainingPlatform.js
Normal file
9
src/api/trainingPlatform.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
export function getTrainingSystemList(params) {
|
||||||
|
return request({
|
||||||
|
url: '/api/mapSystem/queryByCityCode',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
});
|
||||||
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 51 KiB |
@ -36,6 +36,8 @@ import TrainingRuleList from '@/views/lesson/trainingRule/list';
|
|||||||
import TrainingRuleEdit from '@/views/lesson/trainingRule/detail/index';
|
import TrainingRuleEdit from '@/views/lesson/trainingRule/detail/index';
|
||||||
import Trainingmanage from '@/views/lesson/trainingmanage/index';
|
import Trainingmanage from '@/views/lesson/trainingmanage/index';
|
||||||
import Lessoncategory from '@/views/lesson/lessoncategory/index';
|
import Lessoncategory from '@/views/lesson/lessoncategory/index';
|
||||||
|
import LessonHome from '@/views/lesson/home';
|
||||||
|
import LessonManage from '@/views/lesson/index';
|
||||||
// import Scriptmanage from '@/views/lesson/scriptmanage/list';
|
// import Scriptmanage from '@/views/lesson/scriptmanage/list';
|
||||||
|
|
||||||
import Scriptmanage from '@/views/scriptManage/index';
|
import Scriptmanage from '@/views/scriptManage/index';
|
||||||
@ -205,6 +207,9 @@ export const UrlConfig = {
|
|||||||
// pay: '/plan/pay'
|
// pay: '/plan/pay'
|
||||||
mapDraw: '/design/map/draw',
|
mapDraw: '/design/map/draw',
|
||||||
lessonEdit: '/design/lesson/edit',
|
lessonEdit: '/design/lesson/edit',
|
||||||
|
lessonHome: '/design/lesson/home',
|
||||||
|
lessonManage: '/design/lesson/manage',
|
||||||
|
lessonTraining: '/design/lesson/training',
|
||||||
runPlan: '/design/runPlan/detail'
|
runPlan: '/design/runPlan/detail'
|
||||||
},
|
},
|
||||||
replay: {
|
replay: {
|
||||||
@ -396,14 +401,27 @@ export const asyncRouter = [
|
|||||||
{
|
{
|
||||||
path: 'lesson/edit',
|
path: 'lesson/edit',
|
||||||
component: Lessoncategory,
|
component: Lessoncategory,
|
||||||
meta: {
|
|
||||||
},
|
|
||||||
hidden: true
|
hidden: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'runPlan/detail/:lessonId',
|
path: 'runPlan/detail/:lessonId',
|
||||||
component: PlanMonitorDetail,
|
component: PlanMonitorDetail,
|
||||||
hidden: true
|
hidden: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'lesson/home',
|
||||||
|
component: LessonHome,
|
||||||
|
hidden: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'lesson/manage',
|
||||||
|
component: LessonManage,
|
||||||
|
hidden: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'lesson/training/:trainingId/:trainingName',
|
||||||
|
component: TrainingrecordManage,
|
||||||
|
hidden: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1250,6 +1268,10 @@ router.beforeEach((to, from, next) => {
|
|||||||
document.title = '琏课堂-大屏系统';
|
document.title = '琏课堂-大屏系统';
|
||||||
} else if (name.includes('/plan/') || name.includes('/planEdit/')) {
|
} else if (name.includes('/plan/') || name.includes('/planEdit/')) {
|
||||||
document.title = '琏计划';
|
document.title = '琏计划';
|
||||||
|
} else if (name.includes('/TrainingPlatform/')) {
|
||||||
|
document.title = '城市轨道交通实训平台';
|
||||||
|
} else if (name.includes('/design/')) {
|
||||||
|
document.title = '城市轨道交通设计平台';
|
||||||
} else {
|
} else {
|
||||||
document.title = '琏课堂';
|
document.title = '琏课堂';
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'lessonDesign': {
|
case 'lessonDesign': {
|
||||||
this.$router.push({ path: `${UrlConfig.design.lessonEdit}` });
|
this.$router.push({ path: `${UrlConfig.design.lessonHome}` });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'runPlanDesign': {
|
case 'runPlanDesign': {
|
||||||
|
188
src/views/lesson/home.vue
Normal file
188
src/views/lesson/home.vue
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
<el-card>
|
||||||
|
<div slot="header" style="text-align: center;">
|
||||||
|
<b>课程管理系统</b>
|
||||||
|
</div>
|
||||||
|
<div style="margin:50px" :style="{ height: height - 190 +'px' }">
|
||||||
|
<p style="font-size: 14px; margin-bottom: 20px"> 课程管理说明:
|
||||||
|
<span style="color: #808080 !important;">{{ courseModel.remarks }}</span>
|
||||||
|
</p>
|
||||||
|
<div :style="{ height: height - 270 +'px' }">
|
||||||
|
<el-scrollbar wrap-class="scrollbar-wrapper">
|
||||||
|
<el-tree
|
||||||
|
ref="tree"
|
||||||
|
:data="courseModel.detail"
|
||||||
|
node-key="id"
|
||||||
|
:props="defaultProps"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
highlight-current
|
||||||
|
@node-contextmenu="showContextMenu"
|
||||||
|
:span="22"
|
||||||
|
@node-click="clickEvent"
|
||||||
|
>
|
||||||
|
<span slot-scope="{ node, data }">
|
||||||
|
<span v-if="node.data.trial" class="el-icon-goods" :style="{color: 'green'}"> {{ node.label +'(免费)'}}</span>
|
||||||
|
<span v-else class="el-icon-sold-out"> {{ node.label }}</span>
|
||||||
|
</span>
|
||||||
|
</el-tree>
|
||||||
|
</el-scrollbar>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="btn-buy">
|
||||||
|
<el-button type="success" @click="lessonEdit">课程编辑</el-button>
|
||||||
|
<el-button type="primary" >实训录制</el-button>
|
||||||
|
<el-button type="primary" >任务管理</el-button>
|
||||||
|
<el-button type="primary" >操作定义</el-button>
|
||||||
|
<el-button type="primary" >实训管理</el-button>
|
||||||
|
<el-button type="primary" >从发布课程新建</el-button>
|
||||||
|
</div>
|
||||||
|
<tree-operate-menu ref="treeOperateMenu" :point="point" :selected="selected" @refresh="refresh"
|
||||||
|
@lessonCreate="lessonCreate" @chapterCreate="chapterCreate" @treeSort="treeSort"></tree-operate-menu>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getPublishLessonDetail } from '@/api/jmap/lesson';
|
||||||
|
import { UrlConfig } from '@/router/index';
|
||||||
|
import { DeviceMenu } from '@/scripts/ConstDic';
|
||||||
|
import TreeOperateMenu from './lessoncategory/category/operateMenu';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'LessonDetail',
|
||||||
|
components: {
|
||||||
|
TreeOperateMenu,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
num: 5,
|
||||||
|
loading: false,
|
||||||
|
WhetherTypeList: [],
|
||||||
|
EffectiveTypeList: [],
|
||||||
|
courseModel: {
|
||||||
|
id: '',
|
||||||
|
name: 'test',
|
||||||
|
skinCode: '',
|
||||||
|
price: 0,
|
||||||
|
remarks: '创建课程的一套工具',
|
||||||
|
detail: [],
|
||||||
|
pmsList: []
|
||||||
|
},
|
||||||
|
activeName: 'first',
|
||||||
|
defaultProps: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name'
|
||||||
|
},
|
||||||
|
point: {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
},
|
||||||
|
selected: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
hasPermssion() {
|
||||||
|
return this.courseModel.pmsList.length > 0;
|
||||||
|
},
|
||||||
|
height() {
|
||||||
|
return this.$store.state.app.height - 50;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
$route(newVal) {
|
||||||
|
this.initLoadPage();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$Dictionary.effectiveType().then(list => {
|
||||||
|
this.EffectiveTypeList = list;
|
||||||
|
});
|
||||||
|
this.initLoadPage();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initLoadPage() {
|
||||||
|
this.courseModel.detail = [
|
||||||
|
{
|
||||||
|
id:'1',
|
||||||
|
name:'地图设计',
|
||||||
|
type:'lesson',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
id: '9',
|
||||||
|
name: '测试章节',
|
||||||
|
type: 'lesson'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:'2',
|
||||||
|
name:'课程设计',
|
||||||
|
type:'lesson'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:'3',
|
||||||
|
name:'剧本设计',
|
||||||
|
type:'lesson'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:'4',
|
||||||
|
name:'运行图设计',
|
||||||
|
type:'lesson'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
clickEvent(obj, data, ele) {
|
||||||
|
// if (obj.type){
|
||||||
|
// this.$router.push({ path: `${UrlConfig.trainingPlatform.practical}/${obj.id}/${data.id}`});
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.name.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
showContextMenu(e, obj, node, vueElem) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.point = {
|
||||||
|
x: e.clientX,
|
||||||
|
y: e.clientY
|
||||||
|
};
|
||||||
|
this.node = node;
|
||||||
|
this.selected = obj;
|
||||||
|
let menu = DeviceMenu.Lesson;
|
||||||
|
this.$store.dispatch('menuOperation/setPopMenu', { position: this.point, menu: menu });
|
||||||
|
},
|
||||||
|
refresh() {
|
||||||
|
},
|
||||||
|
lessonCreate() {
|
||||||
|
this.$router.push({ path: `${UrlConfig.design.lessonEdit}`})
|
||||||
|
},
|
||||||
|
treeSort() {
|
||||||
|
this.$router.push({ path: `${UrlConfig.design.lessonEdit}`})
|
||||||
|
},
|
||||||
|
chapterCreate() {
|
||||||
|
this.$router.push({ path: `${UrlConfig.design.lessonEdit}`})
|
||||||
|
},
|
||||||
|
lessonEdit() {
|
||||||
|
this.$router.push({ path: `${UrlConfig.design.lessonManage}`})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
@import "src/styles/mixin.scss";
|
||||||
|
|
||||||
|
.menu li {
|
||||||
|
border-right: solid white 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
line-height: 22px;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-buy {
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
transform: translateY(-20px);
|
||||||
|
}
|
||||||
|
</style>
|
46
src/views/lesson/index.vue
Normal file
46
src/views/lesson/index.vue
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<template>
|
||||||
|
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
||||||
|
<el-tab-pane label="课程编辑" name="first">
|
||||||
|
<lesson-edit ref="lessonEdit"></lesson-edit>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="实训录制" name="second">
|
||||||
|
<training-record ref="trainingRecord"></training-record>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="任务管理" name="third">
|
||||||
|
<task-manage ref="taskManage"></task-manage>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="操作定义" name="fourth">
|
||||||
|
<training-rule ref="trainingRule"></training-rule>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="实训管理" name="fifth">
|
||||||
|
<training-manage ref="trainingManage"></training-manage>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import TaskManage from './taskmanage/list';
|
||||||
|
import TrainingManage from './trainingmanage/index';
|
||||||
|
import TrainingRule from './trainingRule/list';
|
||||||
|
import LessonEdit from './lessoncategory/index';
|
||||||
|
import TrainingRecord from './trainingrecord/home';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
TaskManage,
|
||||||
|
TrainingManage,
|
||||||
|
TrainingRule,
|
||||||
|
LessonEdit,
|
||||||
|
TrainingRecord
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeName: 'first'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleClick(tab, event) {
|
||||||
|
console.log(tab, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
142
src/views/lesson/trainingrecord/home.vue
Normal file
142
src/views/lesson/trainingrecord/home.vue
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<template>
|
||||||
|
<el-card v-loading="loading" class="map-list-main">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ $t(`lesson.trainingList`) }}</span>
|
||||||
|
</div>
|
||||||
|
<el-input v-model="filterText" :placeholder="$t(`lesson.filterPlaceholder`)" clearable />
|
||||||
|
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: (height-270) +'px' }">
|
||||||
|
<el-tree
|
||||||
|
ref="tree"
|
||||||
|
:data="treeData"
|
||||||
|
:props="defaultProps"
|
||||||
|
node-key="id"
|
||||||
|
:default-expanded-keys="defaultShowKeys"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
expand-on-click-node
|
||||||
|
highlight-current
|
||||||
|
:span="22"
|
||||||
|
@node-contextmenu="showContextMenu"
|
||||||
|
@node-click="clickEvent"
|
||||||
|
>
|
||||||
|
<div slot-scope="{ node: nodeScop }">
|
||||||
|
<span v-if="nodeScop.data.type == 'skin'" class="el-icon-news"> {{ nodeScop.label }}</span>
|
||||||
|
<span v-else-if="nodeScop.data.type == 'prd'" class="el-icon-tickets"> {{ nodeScop.label }}</span>
|
||||||
|
<span
|
||||||
|
v-else-if="nodeScop.data.type == 'trainingType'"
|
||||||
|
class="el-icon-document"
|
||||||
|
> {{ nodeScop.label }}</span>
|
||||||
|
<span
|
||||||
|
v-else-if="nodeScop.data.type == 'training'"
|
||||||
|
class="el-icon-edit-outline"
|
||||||
|
> {{ nodeScop.label }}</span>
|
||||||
|
</div>
|
||||||
|
</el-tree>
|
||||||
|
</el-scrollbar>
|
||||||
|
<operate-menu ref="menu" :point="point" :node="node" @refresh="refresh" @trainingShow="trainingShow" />
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { DeviceMenu } from '@/scripts/ConstDic';
|
||||||
|
import { getTrainingTree } from '@/api/jmap/training';
|
||||||
|
import OperateMenu from './category/operateMenu';
|
||||||
|
import { UrlConfig } from '@/router/index';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainingOperate',
|
||||||
|
components: {
|
||||||
|
OperateMenu
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: true,
|
||||||
|
defaultShowKeys: [],
|
||||||
|
filterText: '',
|
||||||
|
treeData: [],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name'
|
||||||
|
},
|
||||||
|
point: {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
},
|
||||||
|
node: {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
height() {
|
||||||
|
return this.$store.state.app.height - 50;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.refresh();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.name.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
clickEvent(obj, node, data) {
|
||||||
|
this.$store.dispatch('menuOperation/setPopMenu', { position: null, menu: null });
|
||||||
|
if (obj && obj.type === 'training') {
|
||||||
|
this.$router.push({ path:`${UrlConfig.design.lessonTraining}/${obj.id}/${obj.name}`})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showContextMenu(e, obj, node, vueElem) {
|
||||||
|
if (obj && obj.type === 'trainingType' || obj.type === 'training') {
|
||||||
|
e.preventDefault();
|
||||||
|
this.point = {
|
||||||
|
x: e.clientX,
|
||||||
|
y: e.clientY
|
||||||
|
};
|
||||||
|
this.node = node;
|
||||||
|
const menu = DeviceMenu.Training;
|
||||||
|
this.$store.dispatch('menuOperation/setPopMenu', { position: this.point, menu: menu });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getParent(node) {
|
||||||
|
while (node && node.data.type != 'skin') {
|
||||||
|
node = node.parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return node || {};
|
||||||
|
},
|
||||||
|
trainingShow() {
|
||||||
|
this.$emit('trainingStart', { id: this.node.data.id, lessonId: this.getParent(this.node).data.id });
|
||||||
|
},
|
||||||
|
refresh() {
|
||||||
|
this.loading = true;
|
||||||
|
getTrainingTree().then(response => {
|
||||||
|
this.treeData = response.data;
|
||||||
|
this.defaultShowKeys = [this.$route.params.trainingId];
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.loading = false;
|
||||||
|
this.$refs.tree.setCurrentKey(this.$route.params.trainingId); // value 绑定的node-key
|
||||||
|
if (this.filterText) {
|
||||||
|
this.$refs.tree.filter(this.filterText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false;
|
||||||
|
this.$messageBox(this.$t('error.refreshFailed'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.el-tree {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tree-node.is-current>.el-tree-node__content {
|
||||||
|
background-color: #e4e3e3 !important;
|
||||||
|
}
|
||||||
|
</style>
|
@ -29,6 +29,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getPublishMapTree } from '@/api/management/mapprd';
|
import { getPublishMapTree } from '@/api/management/mapprd';
|
||||||
|
import { getTrainingSystemList } from '@/api/trainingPlatform'
|
||||||
import { UrlConfig } from '@/router/index';
|
import { UrlConfig } from '@/router/index';
|
||||||
import { getSessionStorage, setSessionStorage, removeSessionStorage } from '@/utils/auth';
|
import { getSessionStorage, setSessionStorage, removeSessionStorage } from '@/utils/auth';
|
||||||
import FilterCity from '@/views/components/filterCity';
|
import FilterCity from '@/views/components/filterCity';
|
||||||
@ -105,16 +106,16 @@
|
|||||||
this.mapId = obj.id;
|
this.mapId = obj.id;
|
||||||
this.$router.push({ path: `${UrlConfig.trainingPlatform.permission}/${this.mapId}`});
|
this.$router.push({ path: `${UrlConfig.trainingPlatform.permission}/${this.mapId}`});
|
||||||
} else if ( obj.type === 'lesson' ){
|
} else if ( obj.type === 'lesson' ){
|
||||||
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${obj.id}`});
|
this.$router.push({ path: `${UrlConfig.trainingPlatform.teachDetail}/${obj.id}`});
|
||||||
} else if ( obj.type === 'exam' ){
|
} else if ( obj.type === 'exam' ){
|
||||||
this.$router.push({ path: `${UrlConfig.trainingPlatform.examDetail}/${obj.id}` });
|
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${obj.id}` });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async refresh(filterSelect) {
|
async refresh(filterSelect) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.treeData = this.treeList = [];
|
this.treeData = this.treeList = [];
|
||||||
try {
|
try {
|
||||||
const res = await getPublishMapTree(filterSelect);
|
const res = await getTrainingSystemList({cityCode:filterSelect});
|
||||||
this.treeData = res.data;
|
this.treeData = res.data;
|
||||||
this.treeList = this.filterText
|
this.treeList = this.filterText
|
||||||
? res.data.filter(elem => { return elem.name.includes(this.filterText); })
|
? res.data.filter(elem => { return elem.name.includes(this.filterText); })
|
||||||
|
Loading…
Reference in New Issue
Block a user