| @@ -5,8 +5,8 @@ | |||
| <link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> | |||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
| <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> | |||
| <body> | |||
| <div id="app"></div> | |||
| @@ -39,7 +39,6 @@ | |||
| selectValue.value = newVal[1] == '' ? placeholder.value : newVal[1]; | |||
| selectDisabled.value = newVal[2]; | |||
| mode.value = newVal[3] | |||
| debugger | |||
| }, { immediate: true }) | |||
| @@ -1,12 +1,13 @@ | |||
| <template> | |||
| <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-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 :span="20"> | |||
| <a-col :span="18"> | |||
| <a-row type="flex" justify="end" :gutter="20"> | |||
| <a-col flex="200px"> | |||
| <div>{{time}}</div> | |||
| @@ -34,7 +35,9 @@ | |||
| import { getTime } from '@/utils/timeHelper'; | |||
| import { useComputed } from '@/hooks/useComputed'; | |||
| import { useMenu } from '@/hooks/useMenu'; | |||
| import type { ShowSearchType } from 'ant-design-vue/es/cascader'; | |||
| let { menuList, onMenu, message } = useMenu(); | |||
| let routerValue : string = ref(''); | |||
| const time : string = ref(''); | |||
| const currentTime = () => { | |||
| @@ -48,7 +51,7 @@ | |||
| const onCollapsed = () => { | |||
| store.commit('getCollapsed'); | |||
| } | |||
| onMounted(() => { | |||
| onMounted(async () => { | |||
| currentTime(); | |||
| }); | |||
| const loginOut = () => { | |||
| @@ -56,47 +59,19 @@ | |||
| window.location.reload(); | |||
| 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> | |||
| <style> | |||
| @@ -26,6 +26,7 @@ export const useAsRouter = () => { | |||
| const finalRouter = originRouter.filter(item => actionsArray.some(action => action.action === item.name)) | |||
| .map((item) => ({ | |||
| ...item, | |||
| title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title, | |||
| meta: { | |||
| ...item.meta, | |||
| title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title, | |||
| @@ -8,7 +8,7 @@ import 'ant-design-vue/dist/reset.css'; | |||
| import { QuillEditor } from '@vueup/vue-quill' | |||
| import '@vueup/vue-quill/dist/vue-quill.snow.css'; | |||
| import ACOperation from '@/components/cOperation/cOperation.vue'; | |||
| import ACTable from '@/components/cTable/cTable.vue'; | |||
| @@ -29,7 +29,7 @@ import { Model } from 'node_modules/echarts/index'; | |||
| // debugger | |||
| // await store.dispatch('permissions/FETCH_PERMISSION'); | |||
| // } | |||
| // // 这里假设有一个isAuth的getter来检查用户是否已登录 | |||
| // if (sessionStorage.getItem('token')) { | |||
| // debugger | |||
| @@ -1,3 +1,7 @@ | |||
| @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 { | |||
| font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; | |||
| line-height: 1.5; | |||
| @@ -43,7 +43,7 @@ | |||
| pageSizeOptions: ['10', '20', '30', '40'], | |||
| hideOnSinglePage: false, | |||
| showSizeChanger: true, | |||
| full_name: department_record.value.full_name | |||
| full_name: position_record.value.full_name | |||
| }; | |||
| } catch { | |||
| loading.value = false; | |||
| @@ -147,10 +147,11 @@ | |||
| if (newVal) { | |||
| title.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 = { | |||
| id: newVal.id, | |||
| title: newVal.title, | |||
| @@ -1,10 +1,13 @@ | |||
| <template> | |||
| <a-modal v-model:visible="openOtherModel_1" title="招聘会详情" @cancel="cancelModal" width="50%" :footer="null"> | |||
| <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-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> | |||
| </a-modal> | |||
| @@ -19,11 +22,11 @@ | |||
| const emit = defineEmits(); | |||
| let props = defineProps(['detail_record']); | |||
| let detailData = ref<object>({}) | |||
| openOtherModel_1 = computed(() => { | |||
| return store.state.openOtherModel_1; | |||
| }) | |||
| let detail_record = ref<Object>({}); | |||
| watch(() => props.detail_record, (newVal1) => { | |||
| detail_record.value = newVal1; | |||
| @@ -32,21 +35,20 @@ | |||
| const getData = async (val) => { | |||
| try { | |||
| let res = await GetRecruitmentDetail({id: detail_record.value.id}); | |||
| let res = await GetRecruitmentDetail({ id: detail_record.value.id }); | |||
| console.log(res) | |||
| detailData.value = res.data | |||
| } catch { | |||
| } | |||
| } | |||
| const cancelModal = () => { | |||
| hideOtherModal1() | |||
| } | |||
| </script> | |||
| <style> | |||
| </style> | |||
| </style> | |||
| @@ -8,7 +8,7 @@ | |||
| <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="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-popconfirm title="是否删除该招聘会?" @confirm="delOneRole(record.id)"> | |||
| <a-col><a-button type="primary" size="small" danger>删除</a-button></a-col> | |||