| <meta charset="UTF-8" /> | <meta charset="UTF-8" /> | ||||
| <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> | |||||
| <script type="module" crossorigin src="/assets/index-fDuc1V1b.js"></script> | |||||
| <title>菊城人才市场后台管理</title> | |||||
| <script type="module" crossorigin src="/assets/index-03Q9IgGe.js"></script> | |||||
| <link rel="stylesheet" crossorigin href="/assets/index-7KXeZgtg.css"> | <link rel="stylesheet" crossorigin href="/assets/index-7KXeZgtg.css"> | ||||
| </head> | </head> | ||||
| <body> | <body> |
| <meta charset="UTF-8" /> | <meta charset="UTF-8" /> | ||||
| <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> | |||||
| </head> | </head> | ||||
| <body> | <body> | ||||
| <div id="app"></div> | <div id="app"></div> |
| window.location.reload(); | window.location.reload(); | ||||
| router.replace('/login'); | router.replace('/login'); | ||||
| case 403: | case 403: | ||||
| // message.warning(response.data.msg); | |||||
| message.warning(response.data.msg); | |||||
| break; | break; | ||||
| case 600: | case 600: | ||||
| if(response.data.errors) { | if(response.data.errors) { | ||||
| const resData = res; | const resData = res; | ||||
| typeHelper.isFunction(cb) && cb(resData); | typeHelper.isFunction(cb) && cb(resData); | ||||
| }).catch(err => { | }).catch(err => { | ||||
| // cb(err.response) | |||||
| cb(err.response) | |||||
| }) | }) | ||||
| } | } |
| import 'dayjs/locale/zh-cn'; | import 'dayjs/locale/zh-cn'; | ||||
| dayjs.locale('zh-cn'); | dayjs.locale('zh-cn'); | ||||
| import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
| import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; | |||||
| import { Modal } from 'ant-design-vue'; | |||||
| interface CommonInterface { | interface CommonInterface { | ||||
| model ?: CommonType.ModelType, | model ?: CommonType.ModelType, | ||||
| dayjs, | dayjs, | ||||
| richOption, | richOption, | ||||
| message, | message, | ||||
| ExclamationCircleOutlined, | |||||
| Modal, | |||||
| disabledDate, | disabledDate, | ||||
| imageprefix, | imageprefix, | ||||
| openSearchModel, | openSearchModel, |
| state, | state, | ||||
| commit | commit | ||||
| }) { | }) { | ||||
| try { | |||||
| state.arrresult = []; | |||||
| let res = await GetUserMenulist(); | |||||
| res.data.menulist.map(item => { | |||||
| pushItem(item) | |||||
| }) | |||||
| let arr = state.arrresult; | |||||
| // let arr = ['permission', 'role', 'account', 'company', 'vip', 'member', 'homemake', 'homemakeType', 'homemakePosition', 'homemakeDemand', 'homemakeAppointment', 'job', 'department', 'jobSeeker', 'jobResume', 'jobFair', 'jobFairList', 'jobFairCompany', 'information', 'section', 'article', 'list', 'putIn', 'advertisementList', 'advertisement', 'activity', 'activityList', 'activityAddress', 'statistics', 'statisticsResume', 'statisticsResumeMajor','statisticsResumeAgeSex','statisticsResumeCertificateSkill','statisticsResumeEducation','statisticsResumeHolidaysAccommodation','statisticsResumeJobIntention','statisticsResumeTitleSkill','statisticsResumeWorkExperience']; | |||||
| let routes = routerDynamic(routesModuleList, arr); | |||||
| LayoutRoute.children.push(...routes); | |||||
| commit('SET_MENU', LayoutRoute.children); | |||||
| routerAdd(LayoutRoute); | |||||
| let initialRoutes = routerInit(); | |||||
| commit('SET_PERMISSION', [...initialRoutes]); | |||||
| } catch(err) { | |||||
| console.log(err) | |||||
| message.error(err.data.msg, 3, onClose); | |||||
| debugger | |||||
| } | |||||
| let res = await GetUserMenulist().catch((error) => { | |||||
| setTimeout(() => { | |||||
| sessionStorage.clear() | |||||
| routerTo('/login') | |||||
| window.location.reload() | |||||
| }, 1500); | |||||
| }); | |||||
| res.data.menulist.map(item => { | |||||
| pushItem(item) | |||||
| }) | |||||
| let arr = state.arrresult; | |||||
| // let arr = ['permission', 'role', 'account', 'company', 'vip', 'member', 'homemake', 'homemakeType', 'homemakePosition', 'homemakeDemand', 'homemakeAppointment', 'job', 'department', 'jobSeeker', 'jobResume', 'jobFair', 'jobFairList', 'jobFairCompany', 'information', 'section', 'article', 'list', 'putIn', 'advertisementList', 'advertisement', 'activity', 'activityList', 'activityAddress', 'statistics', 'statisticsResume', 'statisticsResumeMajor','statisticsResumeAgeSex','statisticsResumeCertificateSkill','statisticsResumeEducation','statisticsResumeHolidaysAccommodation','statisticsResumeJobIntention','statisticsResumeTitleSkill','statisticsResumeWorkExperience']; | |||||
| let routes = routerDynamic(routesModuleList, arr); | |||||
| LayoutRoute.children.push(...routes); | |||||
| commit('SET_MENU', LayoutRoute.children); | |||||
| routerAdd(LayoutRoute); | |||||
| let initialRoutes = routerInit(); | |||||
| commit('SET_PERMISSION', [...initialRoutes]); | |||||
| } | } | ||||
| }; | }; | ||||
| } | } | ||||
| const pushItem = (item : Object) => { | const pushItem = (item : Object) => { | ||||
| state.arrresult.push({action:item.action, name:item.name}) | |||||
| state.arrresult.push({ action: item.action, name: item.name }) | |||||
| if (item.childs) { | if (item.childs) { | ||||
| for (const child of item.childs) { | for (const child of item.childs) { | ||||
| pushItem(child) | pushItem(child) |
| commomParams.value.search.cate = ''; | commomParams.value.search.cate = ''; | ||||
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| commomParams.value.search.company_id = 0; | commomParams.value.search.company_id = 0; | ||||
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| },{ | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| },{ | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| watch(() => props.search_params, (newVal) => { | watch(() => props.search_params, (newVal) => { | ||||
| emit('searchData', commomParams.value.search) | emit('searchData', commomParams.value.search) | ||||
| }, { | |||||
| immediate: true | |||||
| }) | }) | ||||
| const getData = () => { | const getData = () => { |
| <a-row :gutter="10"> | <a-row :gutter="10"> | ||||
| <!-- <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 @click="audit(record)">审核</a-button></a-col> | |||||
| </a-row> | </a-row> | ||||
| </template> | </template> | ||||
| </a-c-table> | </a-c-table> | ||||
| </template> | </template> | ||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||
| import { ref, onMounted, watch, computed } from 'vue'; | |||||
| import { ref, onMounted, watch, computed , createVNode} from 'vue'; | |||||
| import ResumeSearch from '@/views/jobSeeker/resume/search/index.vue'; | import ResumeSearch from '@/views/jobSeeker/resume/search/index.vue'; | ||||
| // import ResumeAdd from '@/views/jobSeeker/resume/add/add.vue'; | // import ResumeAdd from '@/views/jobSeeker/resume/add/add.vue'; | ||||
| import ResumeDetail from '@/views/jobSeeker/resume/detail/detail.vue'; | import ResumeDetail from '@/views/jobSeeker/resume/detail/detail.vue'; | ||||
| import { PostJobseekerList } from '@/apis/models'; | |||||
| import { PostJobseekerList } from '@/apis/models'; | |||||
| import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
| import { cols } from '@/views/jobSeeker/resume/columns'; | import { cols } from '@/views/jobSeeker/resume/columns'; | ||||
| import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
| let { store, commomParams, showModal, showOtherModal1 } = useCommon(); | |||||
| let { store, commomParams, showModal, showOtherModal1, message, ExclamationCircleOutlined, Modal } = useCommon(); | |||||
| let loading = ref<Boolean>(true); | let loading = ref<Boolean>(true); | ||||
| onMounted(() => { | onMounted(() => { | ||||
| getData(); | getData(); | ||||
| }) | }) | ||||
| const searchData = (data : object) => { | const searchData = (data : object) => { | ||||
| commomParams.value.search = data | commomParams.value.search = data | ||||
| getData(); | getData(); | ||||
| } | } | ||||
| const clearData = (data : object) => { | const clearData = (data : object) => { | ||||
| if(data) { | |||||
| if (data) { | |||||
| commomParams.value.search = data | commomParams.value.search = data | ||||
| } else { | } else { | ||||
| commomParams.value.search = { | commomParams.value.search = { | ||||
| page : 1, | |||||
| pagesize : 10, | |||||
| sort : 'id', | |||||
| sortby : 'asc', | |||||
| keyword : '' | |||||
| page: 1, | |||||
| pagesize: 10, | |||||
| sort: 'id', | |||||
| sortby: 'asc', | |||||
| keyword: '' | |||||
| } | } | ||||
| } | } | ||||
| getData(); | getData(); | ||||
| } | } | ||||
| const getPage = (data:object) => { | |||||
| const getPage = (data : object) => { | |||||
| commomParams.value.search.page = data.current; | commomParams.value.search.page = data.current; | ||||
| commomParams.value.search.pagesize = data.pageSize; | commomParams.value.search.pagesize = data.pageSize; | ||||
| getData(); | getData(); | ||||
| loading.value = false; | loading.value = false; | ||||
| } | } | ||||
| } | } | ||||
| // 编辑 | // 编辑 | ||||
| let edit_record = ref<Object>(null) | let edit_record = ref<Object>(null) | ||||
| const edit = (record: object) => { | |||||
| const edit = (record : object) => { | |||||
| edit_record.value = record; | edit_record.value = record; | ||||
| showModal() | showModal() | ||||
| } | } | ||||
| const closeAdd = () => { | const closeAdd = () => { | ||||
| edit_record.value = null; | edit_record.value = null; | ||||
| } | } | ||||
| // 删除 | // 删除 | ||||
| const delOneRole = (id: number) => { | |||||
| const delOneRole = (id : number) => { | |||||
| commomParams.value.delRecord = { id: id }; | commomParams.value.delRecord = { id: id }; | ||||
| PostRoleDel(commomParams.value.delRecord).then(res => { | PostRoleDel(commomParams.value.delRecord).then(res => { | ||||
| message.success('删除成功'); | message.success('删除成功'); | ||||
| getData(); | getData(); | ||||
| }) | }) | ||||
| } | } | ||||
| // 审核 | |||||
| const audit = (id) => { | |||||
| Modal.confirm({ | |||||
| title: '是否要放入回收站', | |||||
| icon: createVNode(ExclamationCircleOutlined), | |||||
| onOk() { | |||||
| }, | |||||
| onCancel() { | |||||
| }, | |||||
| }); | |||||
| } | |||||
| let detail_record = ref<Object>(null) | let detail_record = ref<Object>(null) | ||||
| const detail = (record) => { | const detail = (record) => { | ||||
| detail_record.value = record; | detail_record.value = record; |