| export const PostCompanyFamousList = getModel(url.CompanyFamousList); // 知名企业/推荐企业 | export const PostCompanyFamousList = getModel(url.CompanyFamousList); // 知名企业/推荐企业 | ||||
| // 用户管理 | // 用户管理 | ||||
| export const PostCompanyFee = getModel(url.CompanyFee); // 费用管理 | |||||
| export const GetCompanyFee = getModel(url.CompanyFee); // 费用管理 | |||||
| export const PostCompanyPwdEdit = postModel(url.CompanyPwdEdit); // 修改密码 | export const PostCompanyPwdEdit = postModel(url.CompanyPwdEdit); // 修改密码 | ||||
| export const PostCompanyEmailEdit = postModel(url.CompanyEmailEdit); // 修改邮箱 | export const PostCompanyEmailEdit = postModel(url.CompanyEmailEdit); // 修改邮箱 | ||||
| // 职位管理 | // 职位管理 | ||||
| export const PostCompanyJobAdd = getModel(url.CompanyJobAdd); // 添加职位 | |||||
| export const PostCompanyJobAdd = postModel(url.CompanyJobAdd); // 添加职位 | |||||
| export const PostCompanyJobEdit = postModel(url.CompanyJobEdit); // 编辑职位 | export const PostCompanyJobEdit = postModel(url.CompanyJobEdit); // 编辑职位 | ||||
| export const PostCompanyJobList = getModel(url.CompanyJobList); // 企业职位列表 | export const PostCompanyJobList = getModel(url.CompanyJobList); // 企业职位列表 | ||||
| export const PostCompanyJobInfo = getModel(url.CompanyJobInfo); // 职位信息 | |||||
| export const GetCompanyJobInfo = getModel(url.CompanyJobInfo); // 职位信息 | |||||
| export const PostCompanyJobDel = postModel(url.CompanyJobDel); // 职位删除 | |||||
| export const PostCompanyJobRecycle= postModel(url.CompanyJobRecycle); // 职位放到回收站 | |||||
| // 部门管理 | // 部门管理 | ||||
| export const PostCompanyDepartmentAdd = postModel(url.CompanyDepartmentAdd); // 新增部门 | export const PostCompanyDepartmentAdd = postModel(url.CompanyDepartmentAdd); // 新增部门 | ||||
| export const PostCompanyDepartmentEdit = postModel(url.CompanyDepartmentEdit); // 编辑部门 | export const PostCompanyDepartmentEdit = postModel(url.CompanyDepartmentEdit); // 编辑部门 | ||||
| export const PostCompanyDepartmentList = postModel(url.CompanyDepartmentList); // 部门列表 | |||||
| export const GetCompanyDepartmentList = getModel(url.CompanyDepartmentList); // 部门列表 | |||||
| export const PostCompanyDepartmentDel = postModel(url.CompanyDepartmentDel); // 部门删除 | export const PostCompanyDepartmentDel = postModel(url.CompanyDepartmentDel); // 部门删除 | ||||
| export const PostCompanyRecrBookList = getModel(url.CompanyRecrBookList); // 已预定招聘会列表 | export const PostCompanyRecrBookList = getModel(url.CompanyRecrBookList); // 已预定招聘会列表 | ||||
| CompanyJobEdit : String, | CompanyJobEdit : String, | ||||
| CompanyJobList : String, | CompanyJobList : String, | ||||
| CompanyJobInfo : String, | CompanyJobInfo : String, | ||||
| CompanyJobDel: String, | |||||
| CompanyJobRecycle: String, | |||||
| // 部门管理 | // 部门管理 | ||||
| CompanyDepartmentAdd : String, | CompanyDepartmentAdd : String, | ||||
| CompanyDepartmentEdit : String, | CompanyDepartmentEdit : String, | 
| CompanyJobEdit: web + '/company/job_edit', // 编辑职位 | CompanyJobEdit: web + '/company/job_edit', // 编辑职位 | ||||
| CompanyJobList: web + '/company/job_list', // 企业职位列表 | CompanyJobList: web + '/company/job_list', // 企业职位列表 | ||||
| CompanyJobInfo: web + '/company/job_info', // 职位信息 | CompanyJobInfo: web + '/company/job_info', // 职位信息 | ||||
| CompanyJobDel: web + '/company/job_del', // 职位删除 | |||||
| CompanyJobRecycle: web + '/company/job_recycle', // 职位放到回收站 | |||||
| // 部门管理 | // 部门管理 | ||||
| CompanyDepartmentAdd: web + '/company/department_add', // 新增部门 | CompanyDepartmentAdd: web + '/company/department_add', // 新增部门 | ||||
| CompanyDepartmentEdit: web + '/company/department_edit', // 编辑部门 | CompanyDepartmentEdit: web + '/company/department_edit', // 编辑部门 | 
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | import { ref, onMounted, computed } from 'vue'; | ||||
| import { PostCompanyDepartmentAdd, PostCompanyDepartmentList, PostCompanyDepartmentDel } from '@/apis/models'; | |||||
| import { PostCompanyDepartmentAdd, GetCompanyDepartmentList, PostCompanyDepartmentDel } from '@/apis/models'; | |||||
| import ASearch from '@/components/company/department/search.vue'; | import ASearch from '@/components/company/department/search.vue'; | ||||
| import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
| import { cols } from '@/components/company/department/columns'; | import { cols } from '@/components/company/department/columns'; | ||||
| const getData = async () => { | const getData = async () => { | ||||
| try { | try { | ||||
| loading.value = true; | loading.value = true; | ||||
| let res = await PostCompanyDepartmentList(); | |||||
| let res = await GetCompanyDepartmentList(); | |||||
| loading.value = false; | loading.value = false; | ||||
| commomParams.value.table.data = res.data.rows; | commomParams.value.table.data = res.data.rows; | ||||
| commomParams.value.table.columns = cols; | commomParams.value.table.columns = cols; | 
| }) | }) | ||||
| const emit = defineEmits(); | const emit = defineEmits(); | ||||
| const parentChange = (val, selectedOptions) => { | const parentChange = (val, selectedOptions) => { | ||||
| console.log(val) | |||||
| emit('saveCascader', {arr1: val, arr2: selectedOptions}); | emit('saveCascader', {arr1: val, arr2: selectedOptions}); | ||||
| } | } | ||||
| </script> | </script> | 
| <template> | <template> | ||||
| <a-select v-model:value="selectValue" @change="handleChange" :placeholder="placeholder"> | |||||
| <a-select-option v-for="item in listOptions" :key="item.id" :value="item.id">{{item.name}}</a-select-option> | |||||
| <a-select v-model:value="selectValue" @change="handleChange" :placeholder="placeholder" label-in-value> | |||||
| <a-select-option v-for="item in listOptions" :key="item.id" :value="item.id" :label="item.name">{{item.name}}</a-select-option> | |||||
| </a-select> | </a-select> | ||||
| </template> | </template> | ||||
| let listOptions = ref([]); | let listOptions = ref([]); | ||||
| let selectValue = ref<String>(props.select_content); | let selectValue = ref<String>(props.select_content); | ||||
| let placeholder = ref<String>(props.placeholder); | let placeholder = ref<String>(props.placeholder); | ||||
| console.log(props.placeholder) | |||||
| watch(() => [props.dict, props.select_content], | watch(() => [props.dict, props.select_content], | ||||
| (newVal:string, oldVal:string) => { | (newVal:string, oldVal:string) => { | ||||
| GetDictTree({ | GetDictTree({ | ||||
| }).then((res:object) => { | }).then((res:object) => { | ||||
| listOptions.value = res.data.dicts | listOptions.value = res.data.dicts | ||||
| }) | }) | ||||
| selectValue.value = newVal[1]; | |||||
| }) | |||||
| selectValue.value = newVal[1] == 0 ? props.placeholder : newVal[1] ; | |||||
| }, { immediate: true }) | |||||
| onMounted(() => { | onMounted(() => { | ||||
| GetDictTree({ | GetDictTree({ | 
| }, | }, | ||||
| { | { | ||||
| title: '所属部门', | title: '所属部门', | ||||
| dataIndex: 'age', | |||||
| key: 'age', | |||||
| dataIndex: 'department_name', | |||||
| key: 'department_name', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '状态', | title: '状态', | ||||
| dataIndex: 'address', | |||||
| key: 'address', | |||||
| dataIndex: 'status_text', | |||||
| key: 'status_text', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '招聘时间', | title: '招聘时间', | ||||
| dataIndex: 'phone', | |||||
| key: 'phone', | |||||
| dataIndex: 'publish_date', | |||||
| key: 'publish_date', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '浏览数', | title: '浏览数', | ||||
| dataIndex: 'email', | |||||
| key: 'email', | |||||
| dataIndex: 'click_count', | |||||
| key: 'click_count', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '应聘简历(未看)', | title: '应聘简历(未看)', | ||||
| dataIndex: 'email', | |||||
| key: 'email', | |||||
| dataIndex: 'apply_count_none_view', | |||||
| key: 'apply_count_none_view', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '推荐简历(未看)', | title: '推荐简历(未看)', | ||||
| dataIndex: 'email', | |||||
| key: 'email', | |||||
| dataIndex: 'recommend_count_none_view', | |||||
| key: 'recommend_count_none_view', | |||||
| }, | }, | ||||
| { | { | ||||
| title: '操作', | title: '操作', | 
| <template> | <template> | ||||
| <div style="margin: 16px;"> | <div style="margin: 16px;"> | ||||
| <a-search @searchData="searchData" @clearData="clearData" | |||||
| :search_params="commomParams.search"></a-search> | |||||
| <a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search> | |||||
| </div> | </div> | ||||
| <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" | |||||
| :pagination="commomParams.page" @page="getPage" :loading="loading"> | |||||
| <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page" | |||||
| @page="getPage" :loading="loading"> | |||||
| <template #default="{ record }"> | <template #default="{ record }"> | ||||
| <a-row :gutter="20"> | <a-row :gutter="20"> | ||||
| <a-col><a-menu @click="handleMenuClick"> | |||||
| <a-menu-item key="1"> | |||||
| 修改 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="2"> | |||||
| 发布 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 暂停 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 删除 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 放入回收站 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 查看 | |||||
| </a-menu-item> | |||||
| </a-menu></a-col> | |||||
| <a-col> | |||||
| <a-dropdown placement="bottomRight"> | |||||
| <template #overlay> | |||||
| <a-menu> | |||||
| <a-menu-item key="1"> | |||||
| <a-button @click="edit(record)">修改</a-button> | |||||
| </a-menu-item> | |||||
| <a-menu-item key="2"> | |||||
| 发布 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 暂停 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 删除 | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| <a-button @click="putInRecycle(record.id)">放入回收站</a-button> | |||||
| </a-menu-item> | |||||
| <a-menu-item key="3"> | |||||
| 查看 | |||||
| </a-menu-item> | |||||
| </a-menu> | |||||
| </template> | |||||
| <a-button> | |||||
| 操作 | |||||
| <DownOutlined /> | |||||
| </a-button> | |||||
| </a-dropdown> | |||||
| </a-col> | |||||
| </a-row> | </a-row> | ||||
| </template> | </template> | ||||
| </a-biaoge> | </a-biaoge> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { PostCompanyJobList } from '@/apis/models'; | |||||
| import { ref, onMounted, computed, defineEmits } from 'vue'; | |||||
| import { PostCompanyJobList, PostCompanyJobRecycle } from '@/apis/models'; | |||||
| import ASearch from '@/components/invite/manage/search.vue'; | import ASearch from '@/components/invite/manage/search.vue'; | ||||
| import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
| import { cols } from '@/components/invite/manage/columns'; | import { cols } from '@/components/invite/manage/columns'; | ||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
| import { DownOutlined } from '@ant-design/icons-vue'; | |||||
| import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; | |||||
| import { createVNode } from 'vue'; | |||||
| import { Modal } from 'ant-design-vue'; | |||||
| const emit = defineEmits(); | |||||
| let { commomParams } = useCommon(); | let { commomParams } = useCommon(); | ||||
| let loading = ref<Boolean>(true); | let loading = ref<Boolean>(true); | ||||
| loading.value = true; | loading.value = true; | ||||
| let res = await PostCompanyJobList(); | let res = await PostCompanyJobList(); | ||||
| loading.value = false; | loading.value = false; | ||||
| commomParams.value.table.data = res.data.rows; | |||||
| commomParams.value.table.data = res.data.list; | |||||
| commomParams.value.table.columns = cols; | commomParams.value.table.columns = cols; | ||||
| commomParams.value.page = { | commomParams.value.page = { | ||||
| current: commomParams.value.search.page, | current: commomParams.value.search.page, | ||||
| } | } | ||||
| } | } | ||||
| let createForm : companyListType.addrFormType = ref({ | |||||
| name: '', | |||||
| contact: '', | |||||
| phone: '', | |||||
| mobile: '', | |||||
| email: '', | |||||
| }) | |||||
| const saveForm = () => { | |||||
| PostCompanyDepartmentAdd(createForm.value).then(res => { | |||||
| successToast('保存成功') | |||||
| getData() | |||||
| resetForm() | |||||
| activeKey.value = "1" | |||||
| }) | |||||
| } | |||||
| const resetForm = () => { | |||||
| createForm.value = { | |||||
| name: '', | |||||
| contact: '', | |||||
| phone: '', | |||||
| mobile: '', | |||||
| email: '', | |||||
| } | |||||
| // 修改 | |||||
| const edit = (record : Object) => { | |||||
| emit('toEdit', { record: record }) | |||||
| } | } | ||||
| const del = (id: number) => { | |||||
| commomParams.value.delParam = { id: id }; | |||||
| PostCompanyDepartmentDel(commomParams.value.delParam).then(res => { | |||||
| successToast('删除成功'); | |||||
| getData(); | |||||
| }) | |||||
| // 放入回收站 | |||||
| const putInRecycle = (id) => { | |||||
| Modal.confirm({ | |||||
| title: '是否要放入回收站', | |||||
| icon: createVNode(ExclamationCircleOutlined), | |||||
| onOk() { | |||||
| PostCompanyJobRecycle({ id: id }).then(res => { | |||||
| successToast('已放入回收站') | |||||
| }) | |||||
| }, | |||||
| onCancel() { | |||||
| }, | |||||
| }); | |||||
| } | } | ||||
| // const del = (id : number) => { | |||||
| // commomParams.value.delParam = { id: id }; | |||||
| // PostCompanyDepartmentDel(commomParams.value.delParam).then(res => { | |||||
| // successToast('删除成功'); | |||||
| // getData(); | |||||
| // }) | |||||
| // } | |||||
| </script> | </script> | ||||
| <style scoped lang="less"> | <style scoped lang="less"> | 
| <template> | <template> | ||||
| <a-form :model="createForm" :label-col="{span: 8}" labelAlign="right"> | <a-form :model="createForm" :label-col="{span: 8}" labelAlign="right"> | ||||
| <a-row gutter="20"> | |||||
| <a-row :gutter="20"> | |||||
| <a-col span="12"> | <a-col span="12"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="是否公开传真" name="fax_public" > | |||||
| <a-form-item label="是否公开传真" name="fax_public"> | |||||
| <a-radio-group v-model:value="createForm.fax_public" button-style="solid"> | <a-radio-group v-model:value="createForm.fax_public" button-style="solid"> | ||||
| <a-radio-button :value="1">是</a-radio-button> | <a-radio-button :value="1">是</a-radio-button> | ||||
| <a-radio-button :value="2">否</a-radio-button> | <a-radio-button :value="2">否</a-radio-button> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { GetDictTree } from '@/apis/models'; | |||||
| import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | |||||
| import { PostCompanyJobAdd, PostCompanyJobEdit } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| import { intersectionAlike } from '@/utils/dataHelper'; | |||||
| const emit = defineEmits(); | |||||
| const props = defineProps(['job_detail']); | |||||
| let createForm : companyListType.addrFormType = ref({ | let createForm : companyListType.addrFormType = ref({ | ||||
| contact: '', | contact: '', | ||||
| interview_address: '', | interview_address: '', | ||||
| }) | }) | ||||
| const job_id = ref<number>(null); | |||||
| watch(() => [props.job_detail], async (newVal : string[], oldVal) => { | |||||
| if (newVal[0]) { | |||||
| job_id.value = newVal[0].id; | |||||
| createForm.value.id = newVal[0].id; | |||||
| createForm.value = intersectionAlike(createForm.value, newVal[0]); | |||||
| } | |||||
| }, { immediate: true }) | |||||
| const sumbitForm = () => { | const sumbitForm = () => { | ||||
| console.log(createForm.value) | |||||
| // PostCompanyEdit(createForm.value).then(res => { | |||||
| // successToast('保存成功'); | |||||
| // resetForm(); | |||||
| // }).catch(err => { | |||||
| // }) | |||||
| const newObject = { ...JSON.parse(sessionStorage.getItem('first')), ...JSON.parse(sessionStorage.getItem('second')), ...createForm.value } | |||||
| console.log(newObject) | |||||
| if(!job_id.value) { | |||||
| PostCompanyJobAdd(newObject).then(res => { | |||||
| successToast('保存成功'); | |||||
| sessionStorage.removeItem('first') | |||||
| sessionStorage.removeItem('firstOther') | |||||
| sessionStorage.removeItem('second') | |||||
| sessionStorage.removeItem('secondOther') | |||||
| resetForm(); | |||||
| }).catch(err => { | |||||
| }) | |||||
| } else { | |||||
| PostCompanyJobEdit(newObject).then(res => { | |||||
| successToast('编辑成功'); | |||||
| sessionStorage.removeItem('first') | |||||
| sessionStorage.removeItem('firstOther') | |||||
| sessionStorage.removeItem('second') | |||||
| sessionStorage.removeItem('secondOther') | |||||
| resetForm(); | |||||
| }).catch(err => { | |||||
| }) | |||||
| } | |||||
| emit('saveSuccess') | |||||
| } | } | ||||
| const resetForm = () => { | const resetForm = () => { | ||||
| createForm.value = { | createForm.value = { | ||||
| contact: '', | contact: '', | 
| <template> | <template> | ||||
| <a-form :model="createForm" :label-col="{span: 6}" labelAlign="right"> | <a-form :model="createForm" :label-col="{span: 6}" labelAlign="right"> | ||||
| <a-row gutter="20"> | |||||
| <a-row :gutter="20"> | |||||
| <a-col span="12"> | <a-col span="12"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="工作经验"> | <a-form-item required label="工作经验"> | ||||
| <a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | <a-xuanze :dict="2021" placeholder="请选择工作经验" @saveSelect="saveExperience" | ||||
| :select_content="addOtherForm.experience_select"></a-xuanze> | |||||
| :select_content="createForm.experience"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="学历"> | <a-form-item label="学历"> | ||||
| <a-xuanze :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree" | <a-xuanze :dict="2006" placeholder="请选择学历" @saveSelect="saveSchoolDegree" | ||||
| :select_content="addOtherForm.school_degree_select"></a-xuanze> | |||||
| :select_content="createForm.school_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="职称要求"> | <a-form-item required label="职称要求"> | ||||
| <a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel" | <a-xuanze :dict="2006" placeholder="请选择职称要求" @saveSelect="saveProfelevel" | ||||
| :select_content="addOtherForm.profe_level_select"></a-xuanze> | |||||
| :select_content="createForm.profelevel"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="技能认证"> | <a-form-item required label="技能认证"> | ||||
| <a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification" | <a-xuanze :dict="2015" placeholder="请选择技能认证" @saveSelect="saveCertification" | ||||
| :select_content="addOtherForm.certification_select"></a-xuanze> | |||||
| :select_content="createForm.certification"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="语言要求"> | <a-form-item label="语言要求"> | ||||
| <a-xuanze :dict="2007" placeholder="请选择语言要求" @saveSelect="saveLanguage" | <a-xuanze :dict="2007" placeholder="请选择语言要求" @saveSelect="saveLanguage" | ||||
| :select_content="addOtherForm.language_select"></a-xuanze> | |||||
| :select_content="createForm.language"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="掌握程度"> | <a-form-item label="掌握程度"> | ||||
| <a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree" | <a-xuanze :dict="2007" placeholder="请选择掌握程度" @saveSelect="saveLanguageDegree" | ||||
| :select_content="addOtherForm.language_degree_select"></a-xuanze> | |||||
| :select_content="createForm.language_degree"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { GetDictTree } from '@/apis/models'; | |||||
| import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | |||||
| import { GetDictTree, PostCompanyJobAdd, alreadyValue } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| import { intersectionAlike } from '@/utils/dataHelper'; | |||||
| const emit = defineEmits(); | |||||
| const props = defineProps(['job_detail']); | |||||
| let licenseOption = ref<Object[]>([]) | let licenseOption = ref<Object[]>([]) | ||||
| onMounted(async () => { | |||||
| GetDictTree({ | |||||
| code: 2018 | |||||
| }).then(res => { | |||||
| licenseOption.value = res.data.dicts | |||||
| }) | |||||
| }) | |||||
| let createForm : companyListType.addrFormType = ref({ | let createForm : companyListType.addrFormType = ref({ | ||||
| experience: 0, | experience: 0, | ||||
| school_degree: 0, | school_degree: 0, | ||||
| let addOtherForm = ref<companyListType.addOtherFormType>({ | let addOtherForm = ref<companyListType.addOtherFormType>({ | ||||
| experience_select: '请选择工作经验', | |||||
| school_degree_select: '请选择学历', | |||||
| profe_level_select: '请选择职称要求', | |||||
| certification_select: '请选择技能认证', | |||||
| language_select: '请选择语言要求', | |||||
| language_degree_select: '请选择掌握程度', | |||||
| company_jiguan_cascader: '', | |||||
| company_suozaidi_cascader: '', | |||||
| company_jiguan_cascader: [], | |||||
| company_suozaidi_cascader: [], | |||||
| }) | |||||
| const job_id = ref<object>(null); | |||||
| watch(() => [props.job_detail], async (newVal : string[], oldVal) => { | |||||
| let res = await GetDictTree({ code: 2018 }) | |||||
| licenseOption.value = res.data.dicts; | |||||
| if (newVal[0]) { | |||||
| job_id.value = newVal[0].id; | |||||
| createForm.value = intersectionAlike(createForm.value, newVal[0]); | |||||
| addOtherForm.value = { | |||||
| company_jiguan_cascader: [newVal[0].household_province, newVal[0].household_city], | |||||
| company_suozaidi_cascader: addToLocationArray(newVal[0]) | |||||
| } | |||||
| sessionStorage.setItem("second", JSON.stringify(createForm.value)) | |||||
| sessionStorage.setItem("secondOther", JSON.stringify(addOtherForm.value)) | |||||
| addOtherForm.value = sessionStorage.getItem('secondOther') ? JSON.parse(sessionStorage.getItem('secondOther')) : addOtherForm.value | |||||
| createForm.value = sessionStorage.getItem('second') ? JSON.parse(sessionStorage.getItem('second')) : createForm.value | |||||
| } | |||||
| }, { immediate: true }) | |||||
| const addToLocationArray = (data) => { | |||||
| let locationArray = []; | |||||
| if (data.location_province !== 0) { | |||||
| locationArray.push(data.location_province); | |||||
| } | |||||
| if (data.location_city !== 0) { | |||||
| locationArray.push(data.location_city); | |||||
| } | |||||
| if (data.location_town !== 0) { | |||||
| locationArray.push(data.location_town); | |||||
| } | |||||
| return locationArray; | |||||
| } | |||||
| onMounted(async () => { | |||||
| }) | }) | ||||
| // 工作经验 | // 工作经验 | ||||
| const saveExperience = (data) => { | const saveExperience = (data) => { | ||||
| createForm.value.experience = data.val; | |||||
| createForm.value.experience = data.val.key; | |||||
| } | } | ||||
| // 学历要求 | // 学历要求 | ||||
| const saveSchoolDegree = (data) => { | const saveSchoolDegree = (data) => { | ||||
| createForm.value.school_degree = data.val; | |||||
| createForm.value.school_degree = data.val.key; | |||||
| } | } | ||||
| // 职称要求 | // 职称要求 | ||||
| const saveProfelevel = (data) => { | const saveProfelevel = (data) => { | ||||
| createForm.value.profelevel = data.val; | |||||
| createForm.value.profelevel = data.val.key; | |||||
| } | } | ||||
| // 技能认证 | // 技能认证 | ||||
| const saveCertification = (data) => { | const saveCertification = (data) => { | ||||
| createForm.value.certification = data.val; | |||||
| createForm.value.certification = data.val.key; | |||||
| } | } | ||||
| // 语言要求 | // 语言要求 | ||||
| const saveLanguage = (data) => { | const saveLanguage = (data) => { | ||||
| createForm.value.language = data.val; | |||||
| createForm.value.language = data.val.key; | |||||
| } | } | ||||
| // 掌握程度 | // 掌握程度 | ||||
| const saveLanguageDegree = (data) => { | const saveLanguageDegree = (data) => { | ||||
| createForm.value.language_degree = data.val; | |||||
| createForm.value.language_degree = data.val.key;; | |||||
| } | } | ||||
| // 选择籍贯 | // 选择籍贯 | ||||
| const compantJiguanSave = (data) => { | const compantJiguanSave = (data) => { | ||||
| addOtherForm.value.company_jiguan_cascader = data.arr1; | |||||
| createForm.value.household_province = data.arr1[0] ? data.arr1[0] : 0; | createForm.value.household_province = data.arr1[0] ? data.arr1[0] : 0; | ||||
| createForm.value.household_city = data.arr1[1] ? data.arr1[1] : 0; | createForm.value.household_city = data.arr1[1] ? data.arr1[1] : 0; | ||||
| } | } | ||||
| // 选择所在地 | // 选择所在地 | ||||
| const compantSuozaidiSave = (data) => { | const compantSuozaidiSave = (data) => { | ||||
| addOtherForm.value.company_suozaidi_cascader = data.arr1; | |||||
| createForm.value.location_province = data.arr1[0] ? data.arr1[0] : 0; | createForm.value.location_province = data.arr1[0] ? data.arr1[0] : 0; | ||||
| createForm.value.location_city = data.arr1[1] ? data.arr1[1] : 0; | createForm.value.location_city = data.arr1[1] ? data.arr1[1] : 0; | ||||
| createForm.value.location_town = data.arr1[2] ? data.arr1[2] : 0; | createForm.value.location_town = data.arr1[2] ? data.arr1[2] : 0; | ||||
| } | } | ||||
| const sumbitForm = () => { | const sumbitForm = () => { | ||||
| console.log(createForm.value) | console.log(createForm.value) | ||||
| // PostCompanyEdit(createForm.value).then(res => { | |||||
| // successToast('保存成功'); | |||||
| // resetForm(); | |||||
| // }).catch(err => { | |||||
| // }) | |||||
| sessionStorage.setItem("second", JSON.stringify(createForm.value)) | |||||
| sessionStorage.setItem("secondOther", JSON.stringify(addOtherForm.value)) | |||||
| emit('saveSuccess', { key: "3" }) | |||||
| } | } | ||||
| const resetForm = () => { | const resetForm = () => { | ||||
| addOtherForm.value = { | addOtherForm.value = { | ||||
| chengli_date: '', | |||||
| content: '', | |||||
| photo_img: '', | |||||
| license_img: '', | |||||
| company_photo_img: '', | |||||
| company_address_cascader: '', | |||||
| company_industry_cascader: '', | |||||
| company_nature_cascader: '', | |||||
| company_scale_cascader: '', | |||||
| company_jiguan_cascader: '', | |||||
| company_suozaidi_cascader: '' | |||||
| } | } | ||||
| createForm.value = { | createForm.value = { | ||||
| experience: 0, | experience: 0, | 
| <template> | <template> | ||||
| <a-tabs v-model:activeKey="activeKey"> | <a-tabs v-model:activeKey="activeKey"> | ||||
| <a-tab-pane key="1" tab="职位信息"> | <a-tab-pane key="1" tab="职位信息"> | ||||
| <position-info></position-info> | |||||
| <position-info :job_detail="jobDetail" @saveSuccess="saveSuccessInfo"></position-info> | |||||
| </a-tab-pane> | </a-tab-pane> | ||||
| <a-tab-pane key="2" tab="职位要求" force-render> | <a-tab-pane key="2" tab="职位要求" force-render> | ||||
| <position-demand></position-demand> | |||||
| <position-demand :job_detail="jobDetail" @saveSuccess="saveSuccessDemand"></position-demand> | |||||
| </a-tab-pane> | </a-tab-pane> | ||||
| <a-tab-pane key="3" tab="联系方式"> | |||||
| <position-contact></position-contact> | |||||
| <a-tab-pane key="3" tab="联系方式"> | |||||
| <position-contact :job_detail="jobDetail" @saveSuccess="saveSuccessContact"></position-contact> | |||||
| </a-tab-pane> | </a-tab-pane> | ||||
| </a-tabs> | </a-tabs> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { ref, onMounted, watch, defineProps, defineEmits } from 'vue'; | |||||
| import PositionInfo from '@/components/invite/position/info.vue' | import PositionInfo from '@/components/invite/position/info.vue' | ||||
| import PositionDemand from '@/components/invite/position/demand.vue' | import PositionDemand from '@/components/invite/position/demand.vue' | ||||
| import PositionContact from '@/components/invite/position/contact.vue' | import PositionContact from '@/components/invite/position/contact.vue' | ||||
| let createForm : companyListType.addrFormType = ref({ | |||||
| name: '', | |||||
| company_id: 0, | |||||
| contact: '', | |||||
| phone: '', | |||||
| mobile: '', | |||||
| email: '', | |||||
| }) | |||||
| let dataSource = ref([ | |||||
| { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, | |||||
| { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, | |||||
| ]) | |||||
| let columns = ref([ | |||||
| { | |||||
| title: '部门名称', | |||||
| dataIndex: 'name', | |||||
| key: 'name', | |||||
| }, | |||||
| { | |||||
| title: '联系人', | |||||
| dataIndex: 'age', | |||||
| key: 'age', | |||||
| }, | |||||
| { | |||||
| title: '联系电话', | |||||
| dataIndex: 'address', | |||||
| key: 'address', | |||||
| }, | |||||
| { | |||||
| title: '联系手机', | |||||
| dataIndex: 'phone', | |||||
| key: 'phone', | |||||
| }, | |||||
| { | |||||
| title: '电子邮件', | |||||
| dataIndex: 'email', | |||||
| key: 'email', | |||||
| }, | |||||
| { | |||||
| title: '操作', | |||||
| dataIndex: 'operation', | |||||
| slots: { customRender: 'operation' }, | |||||
| }, | |||||
| ]) | |||||
| </script> | |||||
| import { GetCompanyJobInfo } from '@/apis/models'; | |||||
| const props = defineProps(['job_id']); | |||||
| const emit = defineEmits(); | |||||
| const jobDetail = ref<object>(null); | |||||
| watch(() => [props.job_id], (newVal : string[], oldVal) => { | |||||
| if(newVal[0]) { | |||||
| GetCompanyJobInfo({id: newVal[0]}).then(res => { | |||||
| jobDetail.value = res.data | |||||
| }) | |||||
| } | |||||
| }, { immediate: true }) | |||||
| <style scoped lang="less"> | |||||
| :deep(.ant-table-thead >tr>th) { | |||||
| background-color: #fff !important; | |||||
| border: none !important; | |||||
| color: #bbb !important; | |||||
| } | |||||
| :deep(.ant-table-thead >tr>th::before) { | |||||
| display: none !important; | |||||
| const activeKey = ref<String>('1'); | |||||
| const saveSuccessInfo = (data) => { | |||||
| activeKey.value = data.key; | |||||
| } | } | ||||
| :deep(.ant-table-tbody >tr >td) { | |||||
| border: none !important; | |||||
| const saveSuccessDemand = (data) => { | |||||
| activeKey.value = data.key; | |||||
| } | } | ||||
| const saveSuccessContact = () => { | |||||
| emit('currentMenuKey', {key : 2}) | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| </style> | </style> | 
| <template> | <template> | ||||
| <a-form :model="createForm" :label-col="{span: 6}" labelAlign="right"> | <a-form :model="createForm" :label-col="{span: 6}" labelAlign="right"> | ||||
| <a-row gutter="20"> | |||||
| <a-row :gutter="20"> | |||||
| <a-col span="12"> | <a-col span="12"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="选择部门" name="department_id"> | <a-form-item label="选择部门" name="department_id"> | ||||
| <a-select v-model:value="value" @change="departmentChange" placeholder="请选择部门" show-search | |||||
| :filter-option="false" label-in-value @search="departmentSearch"> | |||||
| <a-select v-model:value="addOtherForm.department_name" @change="departmentChange" | |||||
| placeholder="请进行搜索选择部门" show-search :filter-option="false" label-in-value | |||||
| @search="departmentSearch"> | |||||
| <a-select-option v-for="item in department_list" :key="item.id" :value="item.id" | <a-select-option v-for="item in department_list" :key="item.id" :value="item.id" | ||||
| :label="item.name" label-in-value>{{item.name}}</a-select-option> | :label="item.name" label-in-value>{{item.name}}</a-select-option> | ||||
| </a-select> | </a-select> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="职位类别"> | <a-form-item required label="职位类别"> | ||||
| <a-tree-select v-model:value="addOtherForm.job_type" style="width: 100%" | |||||
| <a-tree-select v-model:value="createForm.job_type" style="width: 100%" | |||||
| :tree-data="jobTypeData" tree-checkable allow-clear :show-checked-strategy="SHOW_PARENT" | :tree-data="jobTypeData" tree-checkable allow-clear :show-checked-strategy="SHOW_PARENT" | ||||
| placeholder="职位类别(最多三个,多选只取前三)" tree-node-filter-prop="label" | placeholder="职位类别(最多三个,多选只取前三)" tree-node-filter-prop="label" | ||||
| :fieldNames="jobTypeFieldNames" :maxTagCount="3" @change="jobTypeChange" /> | :fieldNames="jobTypeFieldNames" :maxTagCount="3" @change="jobTypeChange" /> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="工作区域"> | <a-form-item required label="工作区域"> | ||||
| <a-row gutter="20"> | |||||
| <a-tree-select v-model:value="addOtherForm.job_address" style="width: 100%" | |||||
| :tree-data="jobAddressData" tree-checkable allow-clear | |||||
| :show-checked-strategy="SHOW_PARENT" placeholder="工作区域(最多三个,多选只取前三)" | |||||
| tree-node-filter-prop="label" :fieldNames="jobAddressFieldNames" :maxTagCount="3" | |||||
| @change="jobAddressChange" /> | |||||
| </a-row> | |||||
| <a-tree-select v-model:value="createForm.job_location" style="width: 100%" | |||||
| :tree-data="jobAddressData" tree-checkable allow-clear | |||||
| :show-checked-strategy="SHOW_PARENT" placeholder="工作区域(最多四个,多选只取前四)" | |||||
| tree-node-filter-prop="label" :fieldNames="jobAddressFieldNames" :maxTagCount="4" | |||||
| @change="jobAddressChange" /> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item label="薪资范围" name="pay_range"> | <a-form-item label="薪资范围" name="pay_range"> | ||||
| <a-xuanze :dict="2005" placeholder="请选择月薪要求范围" @saveSelect="savePayRange" | <a-xuanze :dict="2005" placeholder="请选择月薪要求范围" @saveSelect="savePayRange" | ||||
| :select_content="addOtherForm.company_scale_cascader"></a-xuanze> | |||||
| :select_content="addOtherForm.pay_range_cascader"></a-xuanze> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="保存"> | |||||
| <a-button type="primary" block @click="sumbitForm">保存</a-button> | |||||
| <a-form-item required label="操作"> | |||||
| <a-button type="primary" block @click="sumbitForm">下一步</a-button> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| </template> | </template> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { GetDictTree, PostCompanyDepartmentList } from '@/apis/models'; | |||||
| import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | |||||
| import { GetDictTree, GetCompanyDepartmentList, PostCompanyJobAdd } from '@/apis/models'; | |||||
| import { TreeSelect } from 'ant-design-vue'; | import { TreeSelect } from 'ant-design-vue'; | ||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| import { intersectionAlike } from '@/utils/dataHelper'; | |||||
| const emit = defineEmits(); | |||||
| const props = defineProps(['job_detail']); | |||||
| import dayjs from 'dayjs'; | import dayjs from 'dayjs'; | ||||
| import 'dayjs/locale/zh-cn'; | import 'dayjs/locale/zh-cn'; | ||||
| dayjs.locale('zh-cn'); | dayjs.locale('zh-cn'); | ||||
| }, | }, | ||||
| placeholder: '请输入企业简介' | placeholder: '请输入企业简介' | ||||
| }) | }) | ||||
| let createForm : companyListType.addrFormType = ref({ | let createForm : companyListType.addrFormType = ref({ | ||||
| urgent: 2, | urgent: 2, | ||||
| department_id: 0, | department_id: 0, | ||||
| let addOtherForm = ref({ | let addOtherForm = ref({ | ||||
| department_name: '请选择部门', | |||||
| describe_content: '', | describe_content: '', | ||||
| daoqi_date: '', | daoqi_date: '', | ||||
| job_nature: '', | job_nature: '', | ||||
| job_type: [], | |||||
| job_address: [], | |||||
| pay_range_cascader: '', | |||||
| shisu_select: '', | shisu_select: '', | ||||
| holidays_select: '', | holidays_select: '', | ||||
| }) | }) | ||||
| const job_id = ref<object>(null); | |||||
| watch(() => [props.job_detail], async (newVal : string[], oldVal) => { | |||||
| let res = await GetDictTree({ code: 2004 }); | |||||
| jobTypeData.value = res.data.dicts; | |||||
| let res1 = await GetDictTree({ code: 2009 }); | |||||
| jobAddressData.value = res1.data.dicts; | |||||
| if (newVal[0]) { | |||||
| job_id.value = newVal[0].id; | |||||
| createForm.value = intersectionAlike(createForm.value, newVal[0]); | |||||
| addOtherForm.value = { | |||||
| department_name: '请选择部门', | |||||
| describe_content: newVal[0].describe_text, | |||||
| daoqi_date: dayjsRef.value(newVal[0].disabled_date), | |||||
| pay_range_cascader: newVal[0].pay_range, | |||||
| shisu_select: newVal[0].shisu, | |||||
| holidays_select: newVal[0].holidays, | |||||
| } | |||||
| if(newVal[0].fulltime == 1) { | |||||
| addOtherForm.value.job_nature = 1 | |||||
| return; | |||||
| } else if(newVal[0].parttime == 1) { | |||||
| addOtherForm.value.job_nature =2 | |||||
| return; | |||||
| }else if(newVal[0].casual == 1) { | |||||
| addOtherForm.value.job_nature = 3 | |||||
| return; | |||||
| }else if(newVal[0].practical == 1) { | |||||
| addOtherForm.value.job_nature =4 | |||||
| return; | |||||
| }else if(newVal[0].campus == 1) { | |||||
| addOtherForm.value.job_nature = 5 | |||||
| return; | |||||
| } | |||||
| sessionStorage.setItem("first", JSON.stringify(createForm.value)) | |||||
| sessionStorage.setItem("firstOther", JSON.stringify(addOtherForm.value)) | |||||
| } else { | |||||
| addOtherForm.value = sessionStorage.getItem('firstOther') ? JSON.parse(sessionStorage.getItem('firstOther')) : addOtherForm.value | |||||
| addOtherForm.value.daoqi_date = addOtherForm.value.daoqi_date ? dayjsRef.value(addOtherForm.value.daoqi_date) : '' | |||||
| createForm.value = sessionStorage.getItem('first') ? JSON.parse(sessionStorage.getItem('first')) : createForm.value | |||||
| } | |||||
| }, { immediate: true }) | |||||
| let jobTypeData = ref<Object[]>([]) | let jobTypeData = ref<Object[]>([]) | ||||
| let jobAddressData = ref<Object[]>([]) | let jobAddressData = ref<Object[]>([]) | ||||
| const jobAddressFieldNames = ref({ label: 'name', value: 'id', children: 'children' }); | const jobAddressFieldNames = ref({ label: 'name', value: 'id', children: 'children' }); | ||||
| const SHOW_PARENT = TreeSelect.SHOW_ALL; | const SHOW_PARENT = TreeSelect.SHOW_ALL; | ||||
| onMounted(() => { | |||||
| GetDictTree({ | |||||
| code: 2004 | |||||
| }).then(res => { | |||||
| jobTypeData.value = res.data.dicts | |||||
| }) | |||||
| GetDictTree({ | |||||
| code: 2009 | |||||
| }).then(res => { | |||||
| jobAddressData.value = res.data.dicts | |||||
| }) | |||||
| onMounted(async () => { | |||||
| }) | }) | ||||
| // 选择部门 | // 选择部门 | ||||
| let department_list = ref<Object[]>([]) | let department_list = ref<Object[]>([]) | ||||
| const departmentSearch = (val) => { | const departmentSearch = (val) => { | ||||
| PostCompanyDepartmentList({ keyword: val }).then(res => { | |||||
| department_list.value = res.data.list; | |||||
| GetCompanyDepartmentList({ keyword: val }).then(res => { | |||||
| department_list.value = res.data.rows; | |||||
| }) | }) | ||||
| } | } | ||||
| const departmentChange = (val : Object) => { | const departmentChange = (val : Object) => { | ||||
| addOtherForm.value.department_name = val.option.label; | |||||
| createForm.value.department_id = val.key; | createForm.value.department_id = val.key; | ||||
| } | } | ||||
| // 薪资范围 | // 薪资范围 | ||||
| const savePayRange = (data) => { | const savePayRange = (data) => { | ||||
| createForm.value.pay_range = data.val; | |||||
| addOtherForm.value.pay_range_cascader = data.val.option.label; | |||||
| createForm.value.pay_range = data.val.key; | |||||
| } | } | ||||
| // 到期日期 | // 到期日期 | ||||
| // 食宿要求 | // 食宿要求 | ||||
| const saveShisu = (data) => { | const saveShisu = (data) => { | ||||
| createForm.value.shisu = data.val; | |||||
| console.log(data) | |||||
| addOtherForm.value.shisu_select = data.val.option.label; | |||||
| createForm.value.shisu = data.val.key; | |||||
| } | } | ||||
| // 节假日要求 | // 节假日要求 | ||||
| const saveHolidays = (data) => { | const saveHolidays = (data) => { | ||||
| createForm.value.holidays = data.val; | |||||
| addOtherForm.value.holidays_select = data.val.option.label; | |||||
| createForm.value.holidays = data.val.key; | |||||
| } | } | ||||
| const sumbitForm = () => { | const sumbitForm = () => { | ||||
| console.log(createForm.value) | |||||
| // PostCompanyEdit(createForm.value).then(res => { | |||||
| // successToast('保存成功'); | |||||
| // resetForm(); | |||||
| // }).catch(err => { | |||||
| // }) | |||||
| sessionStorage.setItem("first", JSON.stringify(createForm.value)) | |||||
| sessionStorage.setItem("firstOther", JSON.stringify(addOtherForm.value)) | |||||
| emit('saveSuccess', { key: "2" }) | |||||
| } | } | ||||
| const resetForm = () => { | const resetForm = () => { | ||||
| createForm.value = { | |||||
| addOtherForm.value = { | |||||
| department_name: '请选择部门', | |||||
| describe_content: '', | describe_content: '', | ||||
| daoqi_date: '', | daoqi_date: '', | ||||
| job_nature: '', | job_nature: '', | ||||
| job_type: [], | |||||
| job_address: [], | |||||
| pay_range_cascader: '', | |||||
| shisu_select: '', | shisu_select: '', | ||||
| holidays_select: '', | holidays_select: '', | ||||
| } | } | 
| </a-dropdown> | </a-dropdown> | ||||
| </template> | </template> | ||||
| <template v-else-if="role == 'personal'"> | <template v-else-if="role == 'personal'"> | ||||
| <a-button size="small" @click="returnHome" v-if="pageType == 'company'">返回首页</a-button> | |||||
| <a-button size="small" @click="returnHome" v-if="pageType == 'personal'">返回首页</a-button> | |||||
| <a-dropdown placement="bottomRight"> | <a-dropdown placement="bottomRight"> | ||||
| <template #overlay> | <template #overlay> | ||||
| <a-menu @click="handleMenuClick"> | <a-menu @click="handleMenuClick"> | ||||
| store.commit('permissions/SET_MENU', []) | store.commit('permissions/SET_MENU', []) | ||||
| router.push('/manage/home') | router.push('/manage/home') | ||||
| } | } | ||||
| if(val.key == 6) { | |||||
| store.commit('getPageType', { | |||||
| pageType: 'company' | |||||
| }) | |||||
| sessionStorage.setItem('pageType', 'company') | |||||
| store.commit('permissions/SET_PERMISSION', null) | |||||
| store.commit('permissions/SET_MENU', []) | |||||
| router.push('/manage/home') | |||||
| } | |||||
| } | } | ||||
| </script> | </script> | ||||
| <template> | |||||
| <a-form :model="createForm" :label-col="{span: 4}" labelAlign="right"> | |||||
| <a-row gutter="20"> | |||||
| <a-col span="12"> | |||||
| <a-row> | |||||
| <a-col span="24"> | |||||
| <a-form-item required label="邮箱" name="email"> | |||||
| <a-input v-model:value="createForm.email" placeholder="请输入邮箱" /> | |||||
| </a-form-item> | |||||
| </a-col> | |||||
| <a-col span="24"> | |||||
| <a-form-item label="保存"> | |||||
| <a-button type="primary" block @click="saveForm">保存</a-button> | |||||
| </a-form-item> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </a-col> | |||||
| </a-row> | |||||
| </a-form> | |||||
| </template> | |||||
| <script setup lang="ts"> | |||||
| import { ref, onMounted, computed } from 'vue'; | |||||
| import { PostCompanyEmailEdit } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| let createForm : companyListType.addrFormType = ref({ | |||||
| email: '' | |||||
| }) | |||||
| const saveForm = () => { | |||||
| PostCompanyEmailEdit(createForm.value).then(res => { | |||||
| successToast('修改成功') | |||||
| resetForm() | |||||
| }) | |||||
| } | |||||
| const resetForm = () => { | |||||
| createForm.value = { | |||||
| email: '' | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="less"> | |||||
| </style> | 
| <template> | <template> | ||||
| <a-row> | <a-row> | ||||
| <a-col :span="6"> | <a-col :span="6"> | ||||
| <a-statistic title="总点数" value="10000" style="margin-right: 50px" /> | |||||
| <a-statistic title="总点数" :value="feeDetail.total_fee" style="margin-right: 50px" /> | |||||
| </a-col> | </a-col> | ||||
| <a-col :span="6"> | <a-col :span="6"> | ||||
| <a-statistic title="剩余点数" value="999" /> | |||||
| <a-statistic title="剩余点数" :value="feeDetail.balance_fee" /> | |||||
| </a-col> | </a-col> | ||||
| <a-col :span="6"> | <a-col :span="6"> | ||||
| <a-statistic title="开通日期" value="2012-12-20" /> | |||||
| <a-statistic title="开通日期" :value="feeDetail.start_date" /> | |||||
| </a-col> | </a-col> | ||||
| <a-col :span="6"> | <a-col :span="6"> | ||||
| <a-statistic title="有效期限" value="2012-12-20" /> | |||||
| <a-statistic title="有效期限" :value="feeDetail.end_date" /> | |||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| </template> | </template> | ||||
| <script> | |||||
| <script setup lang="ts"> | |||||
| import { ref, onMounted, computed, watch, defineEmits, defineProps } from 'vue'; | |||||
| import { GetCompanyFee } from '@/apis/models'; | |||||
| let feeDetail = ref<Object>({}) | |||||
| onMounted(() => { | |||||
| GetCompanyFee().then(res => { | |||||
| feeDetail.value = res.data | |||||
| }) | |||||
| }) | |||||
| </script> | </script> | ||||
| <style> | <style> | 
| <a-col span="12"> | <a-col span="12"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="登录密码" name="name"> | |||||
| <a-input v-model:value="createForm.name" placeholder="请输入登录密码" /> | |||||
| <a-form-item required label="旧密码" name="old_password"> | |||||
| <a-input v-model:value="createForm.old_password" placeholder="请输入旧密码" /> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="注册的手机号" name="name"> | |||||
| <a-input v-model:value="createForm.name" placeholder="请输入手机号" /> | |||||
| <a-form-item required label="新密码" name="new_password"> | |||||
| <a-input v-model:value="createForm.new_password" placeholder="请输入新密码" /> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="24"> | <a-col span="24"> | ||||
| <a-form-item required label="确认密码" name="contact"> | |||||
| <a-input v-model:value="createForm.contact" placeholder="请输入确认密码" /> | |||||
| <a-form-item required label="确认密码" name="comform_password"> | |||||
| <a-input v-model:value="createForm.comform_password" placeholder="请输入确认密码" /> | |||||
| </a-form-item> | |||||
| </a-col> | |||||
| <a-col span="24"> | |||||
| <a-form-item label="保存"> | |||||
| <a-button type="primary" block @click="saveForm">保存</a-button> | |||||
| </a-form-item> | </a-form-item> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||
| import { ref, onMounted, computed } from 'vue'; | import { ref, onMounted, computed } from 'vue'; | ||||
| import { PostCompanyPwdEdit } from '@/apis/models'; | |||||
| import { warnToast, successToast } from '@/utils/toastHelper'; | |||||
| let createForm : companyListType.addrFormType = ref({ | let createForm : companyListType.addrFormType = ref({ | ||||
| name: '', | |||||
| company_id: 0, | |||||
| contact: '', | |||||
| phone: '', | |||||
| mobile: '', | |||||
| email: '', | |||||
| old_password: '', | |||||
| new_password: '', | |||||
| comform_password: '' | |||||
| }) | }) | ||||
| const saveForm = () => { | |||||
| if(createForm.value.new_password != createForm.value.comform_password) { | |||||
| warnToast('新密码和确认密码不一致') | |||||
| return false; | |||||
| } | |||||
| PostCompanyPwdEdit(createForm.value).then(res => { | |||||
| successToast('修改成功,请重新登录') | |||||
| resetForm() | |||||
| }) | |||||
| } | |||||
| const resetForm = () => { | |||||
| createForm.value = { | |||||
| old_password: '', | |||||
| new_password: '', | |||||
| comform_password: '' | |||||
| } | |||||
| } | |||||
| let dataSource = ref([ | |||||
| { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, | |||||
| { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, { | |||||
| key: '1', | |||||
| name: '第一部部门第一部部门第一部部门', | |||||
| age: '王二狗', | |||||
| address: '082-12331231', | |||||
| phone: '1223245645646', | |||||
| email: '6146545@126.com', | |||||
| }, | |||||
| ]) | |||||
| let columns = ref([ | |||||
| { | |||||
| title: '部门名称', | |||||
| dataIndex: 'name', | |||||
| key: 'name', | |||||
| }, | |||||
| { | |||||
| title: '联系人', | |||||
| dataIndex: 'age', | |||||
| key: 'age', | |||||
| }, | |||||
| { | |||||
| title: '联系电话', | |||||
| dataIndex: 'address', | |||||
| key: 'address', | |||||
| }, | |||||
| { | |||||
| title: '联系手机', | |||||
| dataIndex: 'phone', | |||||
| key: 'phone', | |||||
| }, | |||||
| { | |||||
| title: '电子邮件', | |||||
| dataIndex: 'email', | |||||
| key: 'email', | |||||
| }, | |||||
| { | |||||
| title: '操作', | |||||
| dataIndex: 'operation', | |||||
| slots: { customRender: 'operation' }, | |||||
| }, | |||||
| ]) | |||||
| </script> | </script> | ||||
| <style scoped lang="less"> | <style scoped lang="less"> | ||||
| :deep(.ant-table-thead >tr>th) { | |||||
| background-color: #fff !important; | |||||
| border: none !important; | |||||
| color: #bbb !important; | |||||
| } | |||||
| :deep(.ant-table-thead >tr>th::before) { | |||||
| display: none !important; | |||||
| } | |||||
| :deep(.ant-table-tbody >tr >td) { | |||||
| border: none !important; | |||||
| } | |||||
| </style> | </style> | 
| export const findidx : Function = (arr: any, val: any) => { | |||||
| export const findidx : Function = (arr : any, val : any) => { | |||||
| return arr.findIndex(item => { | return arr.findIndex(item => { | ||||
| return item.id === val | |||||
| return item.id === val | |||||
| }) | }) | ||||
| } | } | ||||
| export const intersectionAlike : Function = (objA: any, objB: any) => { | |||||
| export const intersectionAlike : Function = (objA : any, objB : any) => { | |||||
| const result = {}; | const result = {}; | ||||
| for (const keyA in objA) { | for (const keyA in objA) { | ||||
| if (objB.hasOwnProperty(keyA)) { | |||||
| result[keyA] = objB[keyA]; | |||||
| } | |||||
| if (objB.hasOwnProperty(keyA)) { | |||||
| if (Array.isArray(objB[keyA])) { | |||||
| result[keyA] = [...objB[keyA]]; // 使用扩展运算符创建数组的副本 | |||||
| } else { | |||||
| result[keyA] = objB[keyA]; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| return result; | return result; | ||||
| } | } | ||||
| export const hasValue : Function = (obj: any) => { | |||||
| export const hasValue : Function = (obj : any) => { | |||||
| let result = ''; | let result = ''; | ||||
| result = Object.keys(obj).filter(key => obj[key] !== 0).map(key => `${obj[key]}`).join('') | result = Object.keys(obj).filter(key => obj[key] !== 0).map(key => `${obj[key]}`).join('') | ||||
| return result; | return result; | ||||
| } | } | ||||
| export const divObj : Function = (obj: any) => { | |||||
| export const divObj : Function = (obj : any) => { | |||||
| const result = [] | const result = [] | ||||
| obj.reduce((acc, curr, index) => { | obj.reduce((acc, curr, index) => { | ||||
| curr.idx = index; | |||||
| result.push(curr) | |||||
| // const key = `node${index}Info`; | |||||
| // acc[key] = curr; | |||||
| // return acc; | |||||
| curr.idx = index; | |||||
| result.push(curr) | |||||
| // const key = `node${index}Info`; | |||||
| // acc[key] = curr; | |||||
| // return acc; | |||||
| }, {}); | }, {}); | ||||
| return result; | return result; | ||||
| } | } | ||||
| export const alreadyValue: Function = (obj: any) => { | |||||
| const result = [] | |||||
| obj.reduce((acc, curr, index) => { | |||||
| curr.idx = index; | |||||
| result.push(curr) | |||||
| // const key = `node${index}Info`; | |||||
| // acc[key] = curr; | |||||
| // return acc; | |||||
| }, {}); | |||||
| export const alreadyValue : Function = (obj : any) => { | |||||
| const result = [] | |||||
| obj.reduce((acc, curr, index) => { | |||||
| curr.idx = index; | |||||
| result.push(curr) | |||||
| // const key = `node${index}Info`; | |||||
| // acc[key] = curr; | |||||
| // return acc; | |||||
| }, {}); | |||||
| return result; | |||||
| return result; | |||||
| } | } | 
| <a-col span="18"> | <a-col span="18"> | ||||
| <a-row> | <a-row> | ||||
| <a-col span="4"> | <a-col span="4"> | ||||
| <common-left-sider :menu_list="menu_list" :selected_key="[1]" | |||||
| <common-left-sider :menu_list="menu_list" v-model:selectedKeys="selectedKeys" | |||||
| @changeKey="changeKey"></common-left-sider> | @changeKey="changeKey"></common-left-sider> | ||||
| </a-col> | </a-col> | ||||
| <a-col span="20"> | <a-col span="20"> | ||||
| <div style="width: 100%;background-color: #fff;padding: 10px;"> | <div style="width: 100%;background-color: #fff;padding: 10px;"> | ||||
| <invite-position v-if="curKey == 1"></invite-position> | |||||
| <invite-manage v-if="curKey == 2"></invite-manage> | |||||
| <invite-position :job_id="job_id" v-if="curKey == 1" @currentMenuKey="currentMenuKey"></invite-position> | |||||
| <invite-manage v-if="curKey == 2" @toEdit="toEdit"></invite-manage> | |||||
| <invite-recycle v-if="curKey == 3"></invite-recycle> | <invite-recycle v-if="curKey == 3"></invite-recycle> | ||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| import InvitePosition from '@/components/invite/position/index.vue' | import InvitePosition from '@/components/invite/position/index.vue' | ||||
| import InviteManage from '@/components/invite/manage/index.vue' | import InviteManage from '@/components/invite/manage/index.vue' | ||||
| import InviteRecycle from '@/components/invite/recycle/index.vue' | import InviteRecycle from '@/components/invite/recycle/index.vue' | ||||
| let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | |||||
| let menu_list = ref([{ name: '发布招聘', key: 1 }, { name: '招聘职位管理', key: 2 }, { name: '招聘回收站', key: 3 }]) | let menu_list = ref([{ name: '发布招聘', key: 1 }, { name: '招聘职位管理', key: 2 }, { name: '招聘回收站', key: 3 }]) | ||||
| let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
| let selectedKeys = ref<Number[]>([1]) | |||||
| const changeKey = (data) => { | const changeKey = (data) => { | ||||
| curKey.value = data.key; | curKey.value = data.key; | ||||
| } | } | ||||
| let job_id = ref<Number>(0) | |||||
| const toEdit = (data) => { | |||||
| curKey.value = 1; | |||||
| console.log(data.record.id) | |||||
| job_id.value = data.record.id | |||||
| } | |||||
| const currentMenuKey = (data) => { | |||||
| curKey.value = 2; | |||||
| selectedKeys.value = [2] | |||||
| } | |||||
| </script> | </script> | ||||
| <style> | <style> | 
| <div style="width: 100%;background-color: #fff;padding: 10px;"> | <div style="width: 100%;background-color: #fff;padding: 10px;"> | ||||
| <user-expense v-if="curKey == 1"></user-expense> | <user-expense v-if="curKey == 1"></user-expense> | ||||
| <user-password v-if="curKey == 2"></user-password> | <user-password v-if="curKey == 2"></user-password> | ||||
| <user-password v-if="curKey == 3"></user-password> | |||||
| </div> | </div> | ||||
| </a-col> | </a-col> | ||||
| </a-row> | </a-row> | ||||
| import UserExpense from '@/components/user/expense/index.vue' | import UserExpense from '@/components/user/expense/index.vue' | ||||
| import UserPassword from '@/components/user/password/index.vue' | import UserPassword from '@/components/user/password/index.vue' | ||||
| let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | ||||
| let menu_list = ref([{ name: '费用管理', key: 1 },{ name: '修改登录密码', key: 2}]) | |||||
| let menu_list = ref([{ name: '费用管理', key: 1 },{ name: '修改登录密码', key: 2},{ name: '修改邮箱', key: 3}]) | |||||
| let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
| const changeKey = (data) => { | const changeKey = (data) => { | ||||
| curKey.value = data.key; | curKey.value = data.key; |