<link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | <link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | ||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
<title>后台管理系统</title> | <title>后台管理系统</title> | ||||
<script type="module" crossorigin src="/assets/index-vJ16TBVk.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-jOgss7zH.css"> | |||||
<script type="module" crossorigin src="/assets/index-a7DrAZSU.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-7KXeZgtg.css"> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
selectValue.value = newVal[1] == '' ? placeholder.value : newVal[1]; | selectValue.value = newVal[1] == '' ? placeholder.value : newVal[1]; | ||||
selectDisabled.value = newVal[2]; | selectDisabled.value = newVal[2]; | ||||
mode.value = newVal[3] | mode.value = newVal[3] | ||||
debugger | |||||
}, { immediate: true }) | }, { immediate: true }) | ||||
<template> | <template> | ||||
<a-row> | <a-row> | ||||
<a-col :span="4" style="display: flex;align-items: center;"> | |||||
<a-col :span="6" style="display: flex;align-items: center;"> | |||||
<menu-unfold-outlined v-if="collapsed" class="trigger" @click="onCollapsed" /> | <menu-unfold-outlined v-if="collapsed" class="trigger" @click="onCollapsed" /> | ||||
<menu-fold-outlined v-else class="trigger" @click="onCollapsed" /> | <menu-fold-outlined v-else class="trigger" @click="onCollapsed" /> | ||||
<a-input-search v-model:value="routerValue" placeholder="请输入想进入的管理页面" @keyup.enter="onSearch" | |||||
@search="onSearch" style="margin-left: 10px;" /> | |||||
<a-cascader v-model:value="value" :options="menuList" :show-search="{ filter }" placeholder="请搜索想进入的管理页面" | |||||
:field-names="{ label: 'title', value: 'name', children: 'children' }" @change="inputChange" style="margin-left: 10px;width: 100%;"/> | |||||
</a-col> | </a-col> | ||||
<a-col :span="20"> | |||||
<a-col :span="18"> | |||||
<a-row type="flex" justify="end" :gutter="20"> | <a-row type="flex" justify="end" :gutter="20"> | ||||
<a-col flex="200px"> | <a-col flex="200px"> | ||||
<div>{{time}}</div> | <div>{{time}}</div> | ||||
import { getTime } from '@/utils/timeHelper'; | import { getTime } from '@/utils/timeHelper'; | ||||
import { useComputed } from '@/hooks/useComputed'; | import { useComputed } from '@/hooks/useComputed'; | ||||
import { useMenu } from '@/hooks/useMenu'; | import { useMenu } from '@/hooks/useMenu'; | ||||
import type { ShowSearchType } from 'ant-design-vue/es/cascader'; | |||||
let { menuList, onMenu, message } = useMenu(); | let { menuList, onMenu, message } = useMenu(); | ||||
let routerValue : string = ref(''); | let routerValue : string = ref(''); | ||||
const time : string = ref(''); | const time : string = ref(''); | ||||
const currentTime = () => { | const currentTime = () => { | ||||
const onCollapsed = () => { | const onCollapsed = () => { | ||||
store.commit('getCollapsed'); | store.commit('getCollapsed'); | ||||
} | } | ||||
onMounted(() => { | |||||
onMounted(async () => { | |||||
currentTime(); | currentTime(); | ||||
}); | }); | ||||
const loginOut = () => { | const loginOut = () => { | ||||
window.location.reload(); | window.location.reload(); | ||||
router.replace('/login'); | router.replace('/login'); | ||||
} | } | ||||
const onSearch = (val) => { | |||||
const result = menuList.value.some(item => deepCompareAndMarkChecked(item, val)); | |||||
if(result.result == 1) { | |||||
onMenu(result.path) | |||||
} else { | |||||
message.warning('无此页面') | |||||
} | |||||
const value = ref<string[]>([]); | |||||
const filter : ShowSearchType['filter'] = (inputValue, path) => { | |||||
const pathLabel = path.map(item => item.title).join(' / '); | |||||
return pathLabel.toLowerCase().includes(inputValue.toLowerCase()); | |||||
}; | |||||
const inputChange = (val, selectedOptions) => { | |||||
console.log(val, selectedOptions) | |||||
onMenu(selectedOptions[selectedOptions.length - 1].path) | |||||
} | } | ||||
const deepCompareAndMarkChecked = (item : Object, str : String) => { | |||||
let data = { | |||||
result: 0, | |||||
path: '' | |||||
}; | |||||
if (item.meta.title === str) { | |||||
return data = { | |||||
result: 1, | |||||
path: item.path | |||||
}; | |||||
} | |||||
if (item.children && Array.isArray(item.children)) { | |||||
for (const child of item.children) { | |||||
const result = deepCompareAndMarkChecked(child, str); | |||||
if (result === 1) { | |||||
return data = { | |||||
result: 1, | |||||
path: obj.path | |||||
}; | |||||
} | |||||
} | |||||
} | |||||
return data = { | |||||
result: 0, | |||||
path: '' | |||||
}; | |||||
} | |||||
</script> | </script> | ||||
<style> | <style> |
const finalRouter = originRouter.filter(item => actionsArray.some(action => action.action === item.name)) | const finalRouter = originRouter.filter(item => actionsArray.some(action => action.action === item.name)) | ||||
.map((item) => ({ | .map((item) => ({ | ||||
...item, | ...item, | ||||
title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title, | |||||
meta: { | meta: { | ||||
...item.meta, | ...item.meta, | ||||
title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title, | title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title, |
import { QuillEditor } from '@vueup/vue-quill' | import { QuillEditor } from '@vueup/vue-quill' | ||||
import '@vueup/vue-quill/dist/vue-quill.snow.css'; | |||||
import ACOperation from '@/components/cOperation/cOperation.vue'; | import ACOperation from '@/components/cOperation/cOperation.vue'; | ||||
import ACTable from '@/components/cTable/cTable.vue'; | import ACTable from '@/components/cTable/cTable.vue'; | ||||
// debugger | // debugger | ||||
// await store.dispatch('permissions/FETCH_PERMISSION'); | // await store.dispatch('permissions/FETCH_PERMISSION'); | ||||
// } | // } | ||||
// // 这里假设有一个isAuth的getter来检查用户是否已登录 | // // 这里假设有一个isAuth的getter来检查用户是否已登录 | ||||
// if (sessionStorage.getItem('token')) { | // if (sessionStorage.getItem('token')) { | ||||
// debugger | // debugger |
@import '@vueup/vue-quill/dist/vue-quill.core.css'; | |||||
@import '@vueup/vue-quill/dist/vue-quill.snow.css'; | |||||
@import '@vueup/vue-quill/dist/vue-quill.bubble.css'; | |||||
:root { | :root { | ||||
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; | ||||
line-height: 1.5; | line-height: 1.5; |
pageSizeOptions: ['10', '20', '30', '40'], | pageSizeOptions: ['10', '20', '30', '40'], | ||||
hideOnSinglePage: false, | hideOnSinglePage: false, | ||||
showSizeChanger: true, | showSizeChanger: true, | ||||
full_name: department_record.value.full_name | |||||
full_name: position_record.value.full_name | |||||
}; | }; | ||||
} catch { | } catch { | ||||
loading.value = false; | loading.value = false; |
if (newVal) { | if (newVal) { | ||||
title.value = '编辑文章'; | title.value = '编辑文章'; | ||||
addOtherForm.value = { | addOtherForm.value = { | ||||
name: '' | |||||
name: '', | |||||
content:newVal.content | |||||
} | } | ||||
success_img.value = "http://114.132.85.7:8894" + newVal.cover_img; | |||||
content.value = newVal.content | |||||
success_img.value = "https://rcsc-test.jcjob.cn/img" + newVal.cover_img; | |||||
createForm.value = { | createForm.value = { | ||||
id: newVal.id, | id: newVal.id, | ||||
title: newVal.title, | title: newVal.title, |
<template> | <template> | ||||
<a-modal v-model:visible="openOtherModel_1" title="招聘会详情" @cancel="cancelModal" width="50%" :footer="null"> | <a-modal v-model:visible="openOtherModel_1" title="招聘会详情" @cancel="cancelModal" width="50%" :footer="null"> | ||||
<a-typography> | <a-typography> | ||||
<a-typography-title :level="3">{{detailData.title}}</a-typography-title> | |||||
<a-typography-title :level="3">{{detailData.title}}</a-typography-title> | |||||
<a-typography-paragraph>发布时间:{{detailData.created_at}}</a-typography-paragraph> | <a-typography-paragraph>发布时间:{{detailData.created_at}}</a-typography-paragraph> | ||||
<a-typography-text > | |||||
<div v-html="detailData.content"></div> | |||||
<a-typography-text> | |||||
<div class="ql-container ql-snow"> | |||||
<div class="ql-editor" v-html="detailData.content"> | |||||
</div> | |||||
</div> | |||||
</a-typography-text> | </a-typography-text> | ||||
</a-typography> | </a-typography> | ||||
</a-modal> | </a-modal> | ||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
let props = defineProps(['detail_record']); | let props = defineProps(['detail_record']); | ||||
let detailData = ref<object>({}) | let detailData = ref<object>({}) | ||||
openOtherModel_1 = computed(() => { | openOtherModel_1 = computed(() => { | ||||
return store.state.openOtherModel_1; | return store.state.openOtherModel_1; | ||||
}) | }) | ||||
let detail_record = ref<Object>({}); | let detail_record = ref<Object>({}); | ||||
watch(() => props.detail_record, (newVal1) => { | watch(() => props.detail_record, (newVal1) => { | ||||
detail_record.value = newVal1; | detail_record.value = newVal1; | ||||
const getData = async (val) => { | const getData = async (val) => { | ||||
try { | try { | ||||
let res = await GetRecruitmentDetail({id: detail_record.value.id}); | |||||
let res = await GetRecruitmentDetail({ id: detail_record.value.id }); | |||||
console.log(res) | console.log(res) | ||||
detailData.value = res.data | detailData.value = res.data | ||||
} catch { | } catch { | ||||
} | } | ||||
} | } | ||||
const cancelModal = () => { | const cancelModal = () => { | ||||
hideOtherModal1() | hideOtherModal1() | ||||
} | } | ||||
</script> | </script> | ||||
<style> | <style> | ||||
</style> | |||||
</style> |
<a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑/审核</a-button></a-col> | <a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑/审核</a-button></a-col> | ||||
<a-col><a-button type="primary" size="small" primary @click="detail(record)">详情</a-button></a-col> | <a-col><a-button type="primary" size="small" primary @click="detail(record)">详情</a-button></a-col> | ||||
<a-col><a-button type="primary" size="small" primary | <a-col><a-button type="primary" size="small" primary | ||||
@click="showCompany(record)">企业申请</a-button></a-col> | |||||
@click="showCompany(record)">企业审核</a-button></a-col> | |||||
<a-col><a-button type="primary" size="small" primary @click="addCompany(record)">加入企业</a-button></a-col> | <a-col><a-button type="primary" size="small" primary @click="addCompany(record)">加入企业</a-button></a-col> | ||||
<a-popconfirm title="是否删除该招聘会?" @confirm="delOneRole(record.id)"> | <a-popconfirm title="是否删除该招聘会?" @confirm="delOneRole(record.id)"> | ||||
<a-col><a-button type="primary" size="small" danger>删除</a-button></a-col> | <a-col><a-button type="primary" size="small" danger>删除</a-button></a-col> |