diff --git a/package.json b/package.json index facdae3..c4796df 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "@arco-design/web-vue": "^2.53.0", "@element-plus/icons-vue": "^2.1.0", + "@tinymce/tinymce-vue": "^4.0.1", "ant-design-vue": "4.x", "axios": "^1.5.1", "echarts": "^5.4.3", @@ -20,6 +21,7 @@ "element-plus": "^2.4.0", "less": "^4.2.0", "pinia": "^2.1.6", + "tinymce": "^5.6.2", "uuid": "^9.0.1", "uuidv1": "^1.6.14", "vue": "^3.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07e12bc..7ded090 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ dependencies: '@element-plus/icons-vue': specifier: ^2.1.0 version: registry.npmmirror.com/@element-plus/icons-vue@2.1.0(vue@3.3.4) + '@tinymce/tinymce-vue': + specifier: ^4.0.1 + version: registry.npmmirror.com/@tinymce/tinymce-vue@4.0.7(vue@3.3.4) ant-design-vue: specifier: 4.x version: registry.npmmirror.com/ant-design-vue@4.0.7(vue@3.3.4) @@ -32,6 +35,9 @@ dependencies: pinia: specifier: ^2.1.6 version: registry.npmmirror.com/pinia@2.1.7(vue@3.3.4) + tinymce: + specifier: ^5.6.2 + version: registry.npmmirror.com/tinymce@5.10.9 uuid: specifier: ^9.0.1 version: registry.npmmirror.com/uuid@9.0.1 @@ -651,6 +657,18 @@ packages: version: 2.11.7 dev: false + registry.npmmirror.com/@tinymce/tinymce-vue@4.0.7(vue@3.3.4): + resolution: {integrity: sha512-1esB8wGWrjPCY+rK8vy3QB1cxwXo7HLJWuNrcyPl6LOVR+QJjub0OiV/C+TUEsLN6OpCtRv+QnIqMC5vXz783Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@tinymce/tinymce-vue/-/tinymce-vue-4.0.7.tgz} + id: registry.npmmirror.com/@tinymce/tinymce-vue/4.0.7 + name: '@tinymce/tinymce-vue' + version: 4.0.7 + peerDependencies: + vue: ^3.0.0 + dependencies: + tinymce: registry.npmmirror.com/tinymce@5.10.9 + vue: registry.npmmirror.com/vue@3.3.4 + dev: false + registry.npmmirror.com/@types/estree@1.0.2: resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/estree/-/estree-1.0.2.tgz} name: '@types/estree' @@ -3135,6 +3153,12 @@ packages: engines: {node: '>=12.22'} dev: false + registry.npmmirror.com/tinymce@5.10.9: + resolution: {integrity: sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tinymce/-/tinymce-5.10.9.tgz} + name: tinymce + version: 5.10.9 + dev: false + registry.npmmirror.com/titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/titleize/-/titleize-3.0.0.tgz} name: titleize diff --git a/src/api/carouselChart.js b/src/api/carouselChart.js new file mode 100644 index 0000000..14cfe9b --- /dev/null +++ b/src/api/carouselChart.js @@ -0,0 +1,7 @@ +import request from '@/utils/request' + +export const useGetCarouselChart = () => + request.get('vx_interview/getCarouselChart') + +export const useUpdateCarouselChart = ({ submitImages }) => + request.post('vx_interview/updateCarouselChart', { submitImages }) diff --git a/src/api/company.js b/src/api/company.js new file mode 100644 index 0000000..e285edd --- /dev/null +++ b/src/api/company.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export const useGetApplicationCount = (days, encoding) => + request.get('company/getApplicationCount', { + params: { + days: days, + encoding: encoding + } + }) diff --git a/src/api/user.js b/src/api/user.js index 27d3b75..639d17a 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -86,3 +86,19 @@ export const useUploadUserInfo = ({ export const useAdminEditPassword = ({ userId, updateUserId, password }) => request.post('admin/adminEditPassword', { userId, updateUserId, password }) + +//获取反馈列表 +export const useGetFeedBackList = (status) => + request.get('vxUser/getAllFeedBack', { + params: { + status: status + } + }) +//修改反馈的状态 +export const useChangeFeedBackStatus = (id, userId) => + request.get('vxUser/changeFeedBackStatus', { + params: { + id: id, + userId: userId + } + }) diff --git a/src/components/EditorContainer.vue b/src/components/EditorContainer.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/router/index.js b/src/router/index.js index f3779be..08a6dc5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -35,6 +35,23 @@ const router = createRouter({ path: '/manager', component: () => import('@/views/manager/ManagerPage.vue') }, + { + path: '/adminManager', + component: () => import('@/views/manager/AdminMangePage.vue') + }, + { + path: '/companyManager', + component: () => import('@/views/manager/CompanyManagePage.vue') + }, + { + path: '/carouselChart', + component: () => import('@/views/carouselChart/CarouselChartPage.vue') + }, + { + path: '/feedbackmanage', + component: () => + import('@/views/feedbackmanage/FeedbackManagePage.vue') + }, { path: '/interview/imageManagement', component: () => import('@/views/interview/ImageManagement.vue') diff --git a/src/utils/request.js b/src/utils/request.js index ad15e06..b0613ce 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -2,7 +2,7 @@ import { useUserStore } from '@/stores' import axios from 'axios' import router from '@/router' -const baseURL = 'http://localhost:5380' +const baseURL = 'http://localhost:8080' const instance = axios.create({ baseURL, diff --git a/src/views/carouselChart/CarouselChartPage.vue b/src/views/carouselChart/CarouselChartPage.vue new file mode 100644 index 0000000..aed8c21 --- /dev/null +++ b/src/views/carouselChart/CarouselChartPage.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/feedbackmanage/FeedbackManagePage.vue b/src/views/feedbackmanage/FeedbackManagePage.vue new file mode 100644 index 0000000..bae5619 --- /dev/null +++ b/src/views/feedbackmanage/FeedbackManagePage.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/views/feedbackmanage/components/ViewImagesDialog.vue b/src/views/feedbackmanage/components/ViewImagesDialog.vue new file mode 100644 index 0000000..a25d47a --- /dev/null +++ b/src/views/feedbackmanage/components/ViewImagesDialog.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/views/home/HomeindexPage.vue b/src/views/home/HomeindexPage.vue index 0dfc424..0d89286 100644 --- a/src/views/home/HomeindexPage.vue +++ b/src/views/home/HomeindexPage.vue @@ -5,7 +5,7 @@ import { BarChart } from 'echarts/charts' import { CanvasRenderer } from 'echarts/renderers' import VChart, { THEME_KEY } from 'vue-echarts' -import { ref, provide } from 'vue' +import { ref, provide, onBeforeMount } from 'vue' import { useCompanyStore, useUserStore } from '@/stores' import { Search, @@ -14,6 +14,7 @@ import { ChatDotSquare, Tickets } from '@element-plus/icons-vue' +import { useRouter } from 'vue-router' import { useGetJobList, getApplicationList, @@ -24,13 +25,22 @@ import { getInterviewRecordList, agreeUsersPassInterview } from '@/api/interview' +import { useGetApplicationCount } from '@/api/company' import { ElMessage } from 'element-plus' import DisagreeDialog from './components/DisagreeDialog.vue' import InviteDialog from './components/InviteDialog.vue' import ViewResume from './components/ViewResume.vue' +import ViewInterviewRecord from './components/ViewInterviewRecord.vue' use([TooltipComponent, GridComponent, BarChart, CanvasRenderer]) - +onBeforeMount(() => { + const router = useRouter() + const userStore = useUserStore() + if (userStore.userInfo.role === '1') { + router.replace('/adminManager') + } +}) + const companyStore = useCompanyStore() const jobList = ref([]) const activeJob = ref() @@ -62,63 +72,26 @@ getJobList() provide(THEME_KEY, 'white') // prettier-ignore const date = ref(Number) +const data7 = ref([]) -const setDate = (day) => { +const dataValues7 = ref([]) + +const setDate = async (day) => { date.value = day + + const resSeven = await useGetApplicationCount(day, companyStore.encoding) + resSeven.data.data.map((item) => { + data7.value.push(item.createTime) + }) + console.log(data7.value) + resSeven.data.data.map((item) => { + dataValues7.value.push(item.count) + }) + console.log(dataValues7.value) } setDate(7) -const date30 = [ - '2023-10-01', - '2023-10-02', - '2023-10-03', - '2023-10-04', - '2023-10-05', - '2023-10-06', - '2023-10-07', - '2023-10-08', - '2023-10-09', - '2023-10-10', - '2023-10-11', - '2023-10-12', - '2023-10-13', - '2023-10-14', - '2023-10-15', - '2023-10-16', - '2023-10-17', - '2023-10-18', - '2023-10-19', - '2023-10-20', - '2023-10-21', - '2023-10-22', - '2023-10-23', - '2023-10-24', - '2023-10-25', - '2023-10-26', - '2023-10-27', - '2023-10-28', - '2023-10-29', - '2023-10-30' -] - -const data7 = [ - '2023-10-24', - '2023-10-25', - '2023-10-26', - '2023-10-27', - '2023-10-28', - '2023-10-29', - '2023-10-30' -] - -const dataValues7 = [10, 52, 200, 334, 390, 330, 220] -const dataValue30 = [ - 10, 52, 200, 334, 390, 330, 220, 10, 52, 200, 334, 390, 330, 220, 10, 52, 200, - 334, 390, 330, 220, 10, 52, 200, 334, 390, 330, 220, 10, 52, 200, 334, 390, - 330, 220, 10, 52, 200, 334, 390, 330, 220, 10, 52, 200, 334, 390, 330, 220, - 400, 500 -] -const option1 = ref({ +const option = ref({ tooltip: { trigger: 'axis', axisPointer: { @@ -134,7 +107,7 @@ const option1 = ref({ xAxis: [ { type: 'category', - data: data7, + data: data7.value, axisTick: { alignWithLabel: true } @@ -150,43 +123,7 @@ const option1 = ref({ name: '投递人数', type: 'bar', barWidth: '50%', - data: dataValues7 - } - ] -}) -const option2 = ref({ - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true - }, - xAxis: [ - { - type: 'category', - data: date30, - axisTick: { - alignWithLabel: true - } - } - ], - yAxis: [ - { - type: 'value' - } - ], - series: [ - { - name: '投递人数', - type: 'bar', - barWidth: '50%', - data: dataValue30 + data: dataValues7.value } ] }) @@ -291,7 +228,7 @@ const handleSelectionChange = (val) => { } console.log(selectAgreeUsers.value) } -const userStore = useUserStore() + const PassInterview = async () => { if (filterRecored.value === '2') { ElMessage.error('所勾选的列表已经通过面试啦,请不要重复操作') @@ -376,37 +313,18 @@ const handleDisagreeApplication = (row) => { console.log(row) } +const viewInterviewRecord = ref() const handleViewRecordDetail = (row) => { - console.log(row) + viewInterviewRecord.value.open(row) } diff --git a/src/views/home/components/ViewInterviewRecord.vue b/src/views/home/components/ViewInterviewRecord.vue new file mode 100644 index 0000000..360877a --- /dev/null +++ b/src/views/home/components/ViewInterviewRecord.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/views/layout/LayoutContainer.vue b/src/views/layout/LayoutContainer.vue index 735c775..8a0bdb1 100644 --- a/src/views/layout/LayoutContainer.vue +++ b/src/views/layout/LayoutContainer.vue @@ -24,6 +24,7 @@ import { useAdminLogout } from '../../api/user' import { useRouter } from 'vue-router' import ChangeAvatarDialog from './components/ChangeAvatarDialog.vue' import RestPasswordDialog from './components/ResetPasswordDialog.vue' + import { ref } from 'vue' import UserInfoDialog from './components/UserInfoDialog.vue' @@ -66,16 +67,58 @@ const RestPassword = () => { text-color="#fff" router > - + 首页 - + + + 人员管理 + + 管理员管理 - - + + + 公司管理 + + + + 轮播图管理 + + + + 反馈管理 + +