Commit 4a67d288 authored by zhengke's avatar zhengke

增加

parent d1975542
......@@ -12,7 +12,7 @@ export default {
<style>
@import url('~assets/css/font.css');
@import url('//at.alicdn.com/t/font_2077629_jhf9m689zd9.css');
@import url('//at.alicdn.com/t/font_2077629_mdro050mpvo.css');
html,
body,
......
......@@ -431,6 +431,7 @@ export function GetWebMonthly(data) {
})
}
/**
* 修改品牌月刊状态
*
......@@ -442,3 +443,124 @@ export function RemoveWebMonthlyStatus(data) {
data
})
}
/**
* 获取招聘类型分页列表
*
*/
export function GetWebRecruitmentTypePage(data) {
return request({
url: '/WebManager/GetWebRecruitmentTypePage',
method: 'post',
data
})
}
/**
* 获取招聘类型列表
*
*/
export function GetWebRecruitmentTypeList(data) {
return request({
url: '/WebManager/GetWebRecruitmentTypeList',
method: 'post',
data
})
}
/**
* 新增修改招聘类型
*
*/
export function SetWebRecruitmentType(data) {
return request({
url: '/WebManager/SetWebRecruitmentType',
method: 'post',
data
})
}
/**
* 根据编号获取招聘类型详情
*
*/
export function GetWebRecruitmentType(data) {
return request({
url: '/WebManager/GetWebRecruitmentType',
method: 'post',
data
})
}
/**
* 修改招聘类型状态
*
*/
export function RemoveWebRecruitmentTypeStatus(data) {
return request({
url: '/WebManager/RemoveWebRecruitmentTypeStatus',
method: 'post',
data
})
}
/**
* 获取招聘信息分页列表
*
*/
export function GetWebRecruitmentPage(data) {
return request({
url: '/WebManager/GetWebRecruitmentPage',
method: 'post',
data
})
}
/**
* 新增修改招聘信息
*
*/
export function SetWebRecruitment(data) {
return request({
url: '/WebManager/SetWebRecruitment',
method: 'post',
data
})
}
/**
* 根据编号获取招聘详情
*
*/
export function GetWebRecruitment(data) {
return request({
url: '/WebManager/GetWebRecruitment',
method: 'post',
data
})
}
/**
* 修改招聘状态
*
*/
export function RemoveWebRecruitmentStatus(data) {
return request({
url: '/WebManager/RemoveWebRecruitmentStatus',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -8,7 +8,7 @@
<div class="text-caption q-mb-lg q-px-md text-grey-6">漫画信息</div>
<div class="row wrap">
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.Name"
class="col-12 q-pr-lg q-pb-lg" label="漫画名称" />
class="col-12 q-pr-lg q-pb-lg" label="漫画名称" ref="Name" :rules="[val => !!val || '请填写漫画名称']" />
<q-input filled stack-label maxlength="200" :dense="false" v-model="objOption.LinkUrl"
class="col-12 q-pr-lg q-pb-lg" label="链接" />
</div>
......@@ -41,7 +41,7 @@
objOption: {
Id: 0,
Name: '',
LinkUrl:''
LinkUrl: ''
},
optionTitle: "新增漫画",
saveLoading: false,
......@@ -73,6 +73,8 @@
},
//保存菜单
saveComic() {
this.$refs.Name.validate();
if (!this.$refs.Name.hasError) {
this.saveLoading = true
SetWebCartoon(this.objOption).then(res => {
this.saveLoading = false
......@@ -89,6 +91,7 @@
this.saveLoading = false
})
}
}
},
}
......
......@@ -7,10 +7,10 @@
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="text-caption q-mb-lg q-px-md text-grey-6">月刊信息</div>
<div class="row wrap" style="align-items:end;">
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.Name"
class="col-12 q-pb-lg" label="月刊名称" />
<q-input filled stack-label maxlength="200" :dense="false" v-model="objOption.LinkUrl"
class="col-12 q-pb-lg" label="链接" />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.Name" class="col-12 q-pb-lg"
label="月刊名称" ref="Name" :rules="[val => !!val || '请填写月刊名称']" />
<q-input filled stack-label maxlength="200" :dense="false" v-model="objOption.LinkUrl" class="col-12 q-pb-lg"
label="链接" />
<div class="col-6 q-pb-lg q-pr-lg">
<q-uploader :style="{ backgroundImage: 'url(' + objOption.CoverImg + ')' }"
style="width:auto;height:200px;background-repeat:no-repeat;background-size:cover;" flat hide-upload-btn
......@@ -91,6 +91,8 @@
},
//保存菜单
saveComic() {
this.$refs.Name.validate();
if (!this.$refs.Name.hasError) {
this.saveLoading = true
SetWebMonthly(this.objOption).then(res => {
this.saveLoading = false
......@@ -107,6 +109,7 @@
this.saveLoading = false
})
}
}
},
}
......
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:900px;">
<q-card-section>
<div class="text-h6">{{optionTitle}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="text-caption q-mb-lg q-px-md text-grey-6">招聘类型信息</div>
<div class="row wrap">
<q-select filled stack-label option-value="Id" option-label="TypeName" v-model="objOption.TypeId" ref="TypeId"
:options="typeList" label="招聘类型" :dense="false" class="col-6 q-pr-lg q-pb-lg"
:rules="[val => !!val || '请选择招聘类型']" emit-value map-options />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.PositionName" ref="PositionName"
:rules="[val => !!val || '请填写岗位名称']" class="col-6 q-pb-lg" label="岗位名称" />
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.SalaryType"
:options="SalaryTypeList" label="薪资类型" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value
map-options />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.SalaryNum" class="col-6 q-pb-lg"
@keyup.native="checkPrice(objOption,'SalaryNum')" label="多少薪" />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.SalaryStart"
class="col-6 q-pr-lg q-pb-lg" @keyup.native="checkPrice(objOption,'SalaryStart')" label="开始薪资" />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.SalaryEnd" class="col-6 q-pb-lg"
label="结束薪资" @keyup.native="checkPrice(objOption,'SalaryEnd')" />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.Experience"
class="col-6 q-pr-lg q-pb-lg" label="工作经验" />
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.Education" class="col-6 q-pb-lg"
label="学历" />
<q-input filled stack-label maxlength="100" :dense="false" v-model="objOption.WorkPlace"
class="col-6 q-pr-lg q-pb-lg" label="工作地点" />
<q-input filled v-model="objOption.PublishTime" class="col-6 q-pb-lg" mask="date" label="更新时间">
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy" transition-show="scale" transition-hide="scale">
<q-date v-model="objOption.PublishTime" @input="() => $refs.qDateProxy.hide()" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
<q-input filled stack-label :dense="false" v-model="objOption.PositionDesc" style="margin-top: 20px"
type="textarea" class="col-12" label="岗位描述" />
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="saveComic" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
SetWebRecruitment,
GetWebRecruitmentTypeList,
GetWebRecruitment
} from '../../api/system/webkit'
export default {
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
objOption: {
Id: 0,
TypeId: 0,
PositionName: '',
SalaryType: 1,
SalaryStart: '',
SalaryEnd: '',
SalaryNum: '',
Experience: '',
Education: '',
WorkPlace: '',
PublishTime: '',
PositionDesc: ''
},
SalaryTypeList: [{
Id: 1,
Name: '固定薪资'
}, {
Id: 2,
Name: '面议'
}],
optionTitle: "新增招聘信息",
saveLoading: false,
typeList: [] //类型下拉
}
},
mounted() {
this.initObj()
this.getTypeList();
},
methods: {
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.Id > 0) {
GetWebRecruitment({
Id: this.saveObj.Id
}).then(res => {
if (res.Code == 1) {
this.objOption.Id = res.Data.Id;
this.objOption.TypeId = res.Data.TypeId;
this.objOption.PositionName = res.Data.PositionName;
this.objOption.SalaryType = res.Data.SalaryType;
this.objOption.SalaryStart = res.Data.SalaryStart;
this.objOption.SalaryEnd = res.Data.SalaryEnd;
this.objOption.SalaryNum = res.Data.SalaryNum;
this.objOption.Experience = res.Data.Experience;
this.objOption.Education = res.Data.Education;
this.objOption.WorkPlace = res.Data.WorkPlace;
this.objOption.PublishTime = res.Data.PublishTime;
this.objOption.PositionDesc = res.Data.PositionDesc;
this.optionTitle = '修改招聘信息'
}
})
}
},
//获取招聘类型下拉数据
getTypeList() {
let msg = {
TypeName: ''
}
GetWebRecruitmentTypeList(msg).then(res => {
if (res.Code == 1) {
this.typeList = res.Data;
let obj = {
Id: 0,
TypeName: '不限'
}
this.typeList.unshift(obj);
}
}).catch(() => {})
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
//保存菜单
saveComic() {
this.$refs.TypeId.validate();
this.$refs.PositionName.validate();
if (!this.$refs.TypeId.hasError && !this.$refs.PositionName.hasError) {
this.saveLoading = true
SetWebRecruitment(this.objOption).then(res => {
this.saveLoading = false
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit("success")
this.closeSaveForm()
}).catch(() => {
this.saveLoading = false
})
}
}
},
}
</script>
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:900px;">
<q-card-section>
<div class="text-h6">{{optionTitle}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="text-caption q-mb-lg q-px-md text-grey-6">招聘类型信息</div>
<div class="row wrap" style="align-items:end;">
<q-input filled stack-label maxlength="50" :dense="false" v-model="objOption.TypeName"
class="col-6 q-pr-lg q-pb-lg" label="招聘类型" ref="TypeName" :rules="[val => !!val || '请填写招聘类型']" />
<div class="col-6 q-pb-lg">
<q-uploader :style="{ backgroundImage: 'url(' + objOption.ImgCover + ')' }"
style="width:auto;height:200px;background-repeat:no-repeat;background-size:cover;" flat hide-upload-btn
max-files="1" label="封面" accept=".jpg, image/*" :factory="uploadFile" auto-upload>
</q-uploader>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="saveRecruit" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
SetWebRecruitmentType,
GetWebRecruitmentType
} from '../../api/system/webkit'
import {
UploadSelfFile
} from "../../api/common/common";
export default {
props: {
saveObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
objOption: {
Id: 0,
TypeName: '',
ImgCover: ''
},
optionTitle: "新增招聘类型",
saveLoading: false,
}
},
mounted() {
this.initObj()
},
methods: {
//初始化表单
initObj() {
if (this.saveObj && this.saveObj.Id > 0) {
GetWebRecruitmentType({
Id: this.saveObj.Id
}).then(res => {
if (res.Code == 1) {
this.objOption.Id = res.Data.Id;
this.objOption.TypeName = res.Data.TypeName;
this.objOption.ImgCover = res.Data.ImgCover;
this.optionTitle = '修改招聘信息'
}
})
}
},
uploadFile(files) {
UploadSelfFile("course", files[0], res => {
if (res.Code == 1) {
this.objOption.ImgCover = res.FileUrl;
}
});
},
//关闭弹窗
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
//保存菜单
saveRecruit() {
this.$refs.TypeName.validate();
if (!this.$refs.TypeName.hasError) {
this.saveLoading = true
SetWebRecruitmentType(this.objOption).then(res => {
this.saveLoading = false
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.$emit("success")
this.closeSaveForm()
}).catch(() => {
this.saveLoading = false
})
}
}
},
}
</script>
<template>
<div class="page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input @change="resetSearch" clearable standout="bg-primary text-white" class="col-6 q-pr-lg q-pr-lg"
v-model="msg.TypeName" label="类型名称" maxlength="20" @clear="resetSearch" />
</div>
<div class="col-3">
<q-select filled stack-label option-value="Id" option-label="TypeName" v-model="msg.TypeId"
:options="typeList" label="招聘类型" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value map-options
@input="resetSearch()" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">招聘信息</div>
<q-space />
<div class="page-option">
<q-btn color="accent" class="q-mr-md" size="sm" icon="add" label="新增招聘" @click="EditComic(null)" />
</div>
</template>
<template v-slot:body-cell-TypeId="props">
<q-td>
<span>{{getTypeName(props.row.TypeId)}}</span>
</q-td>
</template>
<template v-slot:body-cell-SalaryType="props">
<q-td>
<span>{{props.row.SalaryType==1?'固定薪资':'面议'}}</span>
</q-td>
</template>
<template v-slot:body-cell-SalaryStart="props">
<q-td>
<span>{{props.row.SalaryStart}} - {{props.row.SalaryEnd}}</span>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditComic(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除"
@click="delMonthly(props.row)" />
</q-td>
</template>
</q-table>
<recruit-form v-if="isShowRecruitForm" :save-obj="recruitObjOption" @close="closeRecruit" @success="refreshPage">
</recruit-form>
</div>
</div>
</template>
<script>
import {
GetWebRecruitmentPage,
GetWebRecruitmentTypeList,
RemoveWebRecruitmentStatus
} from '../../api/system/webkit'
import recruitForm from '../../components/system/recruit-form'
export default {
meta: {
title: "招聘信息管理"
},
components: {
recruitForm
},
data() {
return {
columns: [{
name: 'PositionName',
label: '岗位名称',
field: 'PositionName',
align: 'left'
}, {
name: 'TypeId',
label: '招聘类型',
field: 'TypeId',
align: 'left'
},{
name: 'SalaryType',
label: '薪资类型',
field: 'SalaryType',
align: 'left'
}, {
name: 'SalaryStart',
label: '薪资范围',
field: 'SalaryStart',
align: 'left'
}, {
name: 'SalaryNum',
label: '多少薪',
field: 'SalaryNum',
align: 'left'
}, {
name: 'Experience',
label: '工作经验',
field: 'Experience',
align: 'left'
}, {
name: 'Education',
label: '学历',
field: 'Education',
align: 'left'
}, {
name: 'WorkPlace',
label: '工作地点',
field: 'WorkPlace',
align: 'left'
}, {
name: 'PublishTimeStr',
label: '更新时间',
field: 'PublishTimeStr',
align: 'left'
}, {
name: 'PositionDesc',
label: '岗位描述',
field: 'PositionDesc',
align: 'left'
}, {
name: 'optioned',
label: '操作',
field: 'MenuId'
}],
data: [],
loading: true,
msg: {
pageIndex: 1,
pageSize: 12,
rowsPerPage: 12,
PositionName: '', //岗位名称
TypeId: 0 //招聘类型
},
pageCount: 0,
isShowRecruitForm: false,
recruitObjOption: null,
typeList: [] //类型下拉
}
},
mounted() {
this.getTypeList();
this.getList()
},
methods: {
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
//获取招聘类型下拉数据
getTypeList() {
let msg = {
TypeName: ''
}
GetWebRecruitmentTypeList(msg).then(res => {
if (res.Code == 1) {
this.typeList = res.Data;
let obj = {
Id: 0,
TypeName: '不限'
}
this.typeList.unshift(obj);
}
}).catch(() => {})
},
getTypeName(Id) {
let str = '';
this.typeList.forEach(x => {
if (x.Id == Id) {
str = x.TypeName;
}
})
return str;
},
//获取菜单分页列表
getList() {
this.loading = true;
GetWebRecruitmentPage(this.msg).then(res => {
this.loading = false
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
}).catch(() => {
this.loading = false
})
},
//刷新页面
refreshPage() {
if (!this.recruitObjOption) {
this.msg.pageIndex = 1;
this.msg.TypeName = "";
}
this.getList()
},
//新增修改菜单
EditComic(obj) {
if (obj) {
this.recruitObjOption = obj
} else {
this.recruitObjOption = null
}
this.isShowRecruitForm = true
},
//关闭弹窗
closeRecruit() {
this.isShowRecruitForm = false
},
//删除
delMonthly(obj) {
this.$q.dialog({
title: '提示信息',
message: '是否确定删除?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
let delMsg = {
Id: obj.Id,
Status: 1
}
RemoveWebRecruitmentStatus(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
this.getList();
}
})
})
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
<template>
<div class="page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input @change="resetSearch" clearable standout="bg-primary text-white" class="col-6 q-pr-lg q-pr-lg"
v-model="msg.TypeName" label="类型名称" maxlength="20" @clear="resetSearch" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="data" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">招聘类型信息</div>
<q-space />
<div class="page-option">
<q-btn color="accent" class="q-mr-md" size="sm" icon="add" label="新增类型" @click="EditComic(null)" />
</div>
</template>
<template v-slot:body-cell-ImgCover="props">
<q-td>
<img :src="props.row.ImgCover" style="width:50px;" />
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditComic(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400" label="删除"
@click="delMonthly(props.row)" />
</q-td>
</template>
</q-table>
<recruittype-form v-if="isShowRecruitForm" :save-obj="recruitObjOption" @close="closeRecruit" @success="refreshPage">
</recruittype-form>
</div>
</div>
</template>
<script>
import {
GetWebRecruitmentTypePage,
RemoveWebRecruitmentTypeStatus
} from '../../api/system/webkit'
import recruittypeForm from '../../components/system/recruittype-form'
export default {
meta: {
title: "招聘类型管理"
},
components: {
recruittypeForm
},
data() {
return {
columns: [{
name: 'TypeName',
label: '类型名称',
field: 'TypeName',
align: 'left'
},{
name: 'ImgCover',
label: '封面图',
field: 'ImgCover',
align: 'left'
},{
name: 'optioned',
label: '操作',
field: 'MenuId'
}],
data: [],
loading: true,
msg: {
pageIndex: 1,
pageSize: 12,
rowsPerPage: 12,
TypeName: ''
},
pageCount: 0,
isShowRecruitForm: false,
recruitObjOption: null,
}
},
mounted() {
this.getList()
},
methods: {
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//翻页
changePage(val) {
this.msg.pageIndex = val;
this.getList()
},
//获取菜单分页列表
getList() {
this.loading = true;
GetWebRecruitmentTypePage(this.msg).then(res => {
this.loading = false
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
}).catch(() => {
this.loading = false
})
},
//刷新页面
refreshPage() {
if (!this.recruitObjOption) {
this.msg.pageIndex = 1;
this.msg.TypeName = "";
}
this.getList()
},
//新增修改菜单
EditComic(obj) {
if (obj) {
this.recruitObjOption = obj
} else {
this.recruitObjOption = null
}
this.isShowRecruitForm = true
},
//关闭弹窗
closeRecruit() {
this.isShowRecruitForm = false
},
//删除
delMonthly(obj) {
this.$q.dialog({
title: '提示信息',
message: '是否确定删除?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
let delMsg = {
Id: obj.Id,
Status: 1
}
RemoveWebRecruitmentTypeStatus(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
})
this.getList();
}
})
})
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
......@@ -137,6 +137,16 @@ const routes = [{
component: () =>
import("pages/system/monthlyManage.vue")
},
{
path: "/system/recruitment", // 招聘管理
component: () =>
import("pages/system/recruitment.vue")
},
{
path: "/system/recruitmentType", //招聘类型
component: () =>
import("pages/system/recruitmentType.vue")
},
{
path: "/course/catagory", //课程分类
component: () =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment