|
@@ -9,15 +9,31 @@
|
|
|
<a-row :gutter="24">
|
|
|
<a-col :span="6">
|
|
|
<a-form-item label="姓名" :label-col="{ span: 8 }" name="name">
|
|
|
- <a-input v-model:value="searchParamsState.name" placeholder="" />
|
|
|
+ <a-input v-model:value="searchParamsState.jobUserName" placeholder="" />
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :span="6">
|
|
|
- <a-form-item label="专业" :label-col="{ span: 8 }" name="wantedJobId">
|
|
|
- <a-select
|
|
|
- ref="select"
|
|
|
- v-model:value="searchParamsState.wantedJobId"
|
|
|
- :options="wantedJobTypeList"
|
|
|
+ <a-form-item label="工种名称" :label-col="{ span: 8 }" name="workName">
|
|
|
+ <a-input v-model:value="searchParamsState.workName" placeholder="" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="工作年限" :label-col="{ span: 8 }" name="workYear">
|
|
|
+ <a-input type="number" v-model:value="searchParamsState.minWorkYear" style="width:115px;" placeholder="" />
|
|
|
+ <label style="margin:10px;">-</label>
|
|
|
+ <a-input type="number" v-model:value="searchParamsState.maxWorkYear" style="width:115px;" placeholder="" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6" style="text-align: left">
|
|
|
+ <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
|
|
|
+ </a-col>
|
|
|
+ </a-row>
|
|
|
+ <a-row :gutter="24">
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="求职类型" :label-col="{ span: 8 }" name="jobHuntType">
|
|
|
+ <a-select ref="select"
|
|
|
+ v-model:value="searchParamsState.jobHuntTypeID"
|
|
|
+ :options="jobHuntTypeList"
|
|
|
:field-names="{ label: 'name', value: 'value' }"
|
|
|
:allow-clear="true"
|
|
|
@change="loadData"
|
|
@@ -26,86 +42,104 @@
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :span="6">
|
|
|
- <a-form-item label="班级" :label-col="{ span: 8 }" name="isAccomplish">
|
|
|
- <a-select
|
|
|
- ref="select"
|
|
|
- v-model:value="searchParamsState.isAccomplish"
|
|
|
- :options="isAccomplishList"
|
|
|
- :field-names="{ label: 'name', value: 'value' }"
|
|
|
- :allow-clear="true"
|
|
|
- @change="loadData"
|
|
|
- >
|
|
|
+ <a-form-item label="人才类型" :label-col="{ span: 8 }" name="jobUserType">
|
|
|
+ <a-select ref="select"
|
|
|
+ v-model:value="searchParamsState.jobUserTypeID"
|
|
|
+ :options="jobUserTypeList"
|
|
|
+ :field-names="{ label: 'name', value: 'value' }"
|
|
|
+ :allow-clear="true"
|
|
|
+ @change="loadData">
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="6" style="text-align: left">
|
|
|
- <a-button type="primary" html-type="submit" @click="onFinish">查询</a-button>
|
|
|
- <a-button
|
|
|
- style="margin: 0 8px"
|
|
|
- @click="
|
|
|
- () => {
|
|
|
- formRef.resetFields();
|
|
|
- loadData();
|
|
|
- }
|
|
|
- "
|
|
|
- >重置
|
|
|
- </a-button>
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="月薪要求" :label-col="{ span: 8 }" name="salary">
|
|
|
+ <a-input type="number" v-model:value="searchParamsState.minSalary" style="width:115px;" placeholder="" />
|
|
|
+ <label style="margin:10px;">-</label>
|
|
|
+ <a-input type="number" v-model:value="searchParamsState.maxSalary" style="width:115px;" placeholder="" />
|
|
|
+ </a-form-item>
|
|
|
</a-col>
|
|
|
+ <a-col :span="6" style="text-align: left"></a-col>
|
|
|
+ </a-row>
|
|
|
+ <a-row :gutter="24">
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="是否完成求职" :label-col="{ span: 8 }" name="ucHuntType">
|
|
|
+ <a-select ref="select"
|
|
|
+ v-model:value="searchParamsState.isAccomplish"
|
|
|
+ :options="isAccomplishList"
|
|
|
+ :field-names="{ label: 'name', value: 'value' }"
|
|
|
+ :allow-clear="true"
|
|
|
+ @change="loadData"
|
|
|
+ >
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="6"> </a-col>
|
|
|
+ <a-col :span="6"> </a-col>
|
|
|
+ <a-col :span="6" style="text-align: left"> </a-col>
|
|
|
</a-row>
|
|
|
<a-row class="edit-operation">
|
|
|
- <a-col :span="24" style="text-align: right"></a-col>
|
|
|
+ <a-col :span="24" style="text-align: right">
|
|
|
+ <a-button type="primary" html-type="submit" @click='onOperates(null,"新增",1)' >新增</a-button>
|
|
|
+ <BImportExcel
|
|
|
+ :options="importOptions"
|
|
|
+ @success="loadData"
|
|
|
+ ></BImportExcel>
|
|
|
+ <BExportExcel :title="'导出'" :filename="'求职意向信息'" :url="'/jobUserService/jobHunt/export'" :params="{...searchParamsState, rows:100000}"></BExportExcel>
|
|
|
+ </a-col>
|
|
|
</a-row>
|
|
|
</a-form>
|
|
|
<div class="search-result-list">
|
|
|
- <a-table
|
|
|
- :columns="columns"
|
|
|
- :data-source="dataList"
|
|
|
- :scroll="{ x: '100%', y: 500 }"
|
|
|
- :pagination="pagination"
|
|
|
- :loading="formState.loading"
|
|
|
- :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange }"
|
|
|
- :row-key="(record) => record.jobHuntId"
|
|
|
- bordered
|
|
|
- @change="handleTableChange"
|
|
|
- >
|
|
|
- <!-- <template #bodyCell="{ column, text, record }">
|
|
|
- <template v-if="column.key === 'operation'">
|
|
|
- <div class="table-operation">
|
|
|
- <a-button
|
|
|
- type="link"
|
|
|
- functioncode=""
|
|
|
- @click="edit(record.jobUserId)"
|
|
|
- >修改</a-button
|
|
|
- >
|
|
|
- <a-button
|
|
|
- type="link"
|
|
|
- functioncode=""
|
|
|
- @click="delete(record.jobUserId,)"
|
|
|
- >删除</a-button
|
|
|
- >
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </template>-->
|
|
|
+ <a-table :columns="columns" :data-source="dataList" :scroll="{ x: '100%', y: 500 }" :pagination="pagination"
|
|
|
+ :loading="formState.loading" :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange }"
|
|
|
+ :row-key="(record) => record.jobHuntID" bordered @change="handleTableChange" >
|
|
|
+ <template #bodyCell="{ column, text, record }">
|
|
|
+ <template v-if="column.key === 'operation'">
|
|
|
+ <div class="table-operation">
|
|
|
+ <a-button type="link" size="small" @click='onOperates(record.jobHuntID,"修改",2)' >编辑</a-button>
|
|
|
+ <a-button type="link" size="small" @click="onDel(record)" >删除</a-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
</a-table>
|
|
|
</div>
|
|
|
+ <JobHuntEditForm ref="jobHuntEditModelRef" :loadData="loadData"></JobHuntEditForm>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
|
- import { reactive, ref, computed, defineComponent } from 'vue';
|
|
|
- import type { FormInstance, TableColumnsType, TableProps, SelectProps } from 'ant-design-vue';
|
|
|
- import { getList } from '@/api/jobUserManager/jobhunt';
|
|
|
- import { getSysDictionaryList } from '@/api/system/dictionary';
|
|
|
- import { getPaginationTotalTitle } from '@/utils/common';
|
|
|
- import dayjs from 'dayjs';
|
|
|
+import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
|
|
|
+import type { FormInstance, TableColumnsType, TableProps, SelectProps } from 'ant-design-vue';
|
|
|
+import { getJobHuntList, delJobHunt} from '@/api/jobUserManager/jobhunt';
|
|
|
+import { getSysDictionaryList } from '@/api/system/dictionary';
|
|
|
+import { getPaginationTotalTitle } from '@/utils/common';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+import BImportExcel from "@/components/basic/excel/importExcel/importExcel.vue";
|
|
|
+import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
|
|
|
+import {message, Modal} from "ant-design-vue";
|
|
|
+import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
|
|
|
+import JobHuntEditForm from "@/views/jobUserManager/jobhunt/edit.vue";
|
|
|
+import type {ImportProps} from "@/components/basic/excel/importExcel/ImportProps";
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'JobHuntList',
|
|
|
+ components: {BImportExcel,BExportExcel,JobHuntEditForm},
|
|
|
setup() {
|
|
|
- const modalRoleUserRef = ref();
|
|
|
- const modalRoleEditRef = ref();
|
|
|
const formRef = ref<FormInstance>();
|
|
|
- const searchParamsState = reactive({ page: 1, limit: 20, name: '', wantedJobId: '',isAccomplish:'' });
|
|
|
+ const searchParamsState = reactive({
|
|
|
+ pageIndex: 1,
|
|
|
+ pageSize: 20,
|
|
|
+ jobHuntID:null,
|
|
|
+ jobUserName: null,
|
|
|
+ workName:null,
|
|
|
+ minWorkYear: null,
|
|
|
+ maxWorkYear: null,
|
|
|
+ jobHuntTypeID: null,
|
|
|
+ jobUserTypeID:null,
|
|
|
+ minSalary:null,
|
|
|
+ maxSalary:null,
|
|
|
+ isAccomplish:null
|
|
|
+ });
|
|
|
const formState = reactive({
|
|
|
total: 0,
|
|
|
selectedRowKeys: [],
|
|
@@ -116,34 +150,54 @@
|
|
|
title: '序号',
|
|
|
align: 'center',
|
|
|
width: 80,
|
|
|
- key: 'roleID',
|
|
|
+ key: 'jobHuntID',
|
|
|
customRender: (item) =>
|
|
|
- `${searchParamsState.limit * (searchParamsState.page - 1) + item.index + 1}`,
|
|
|
+ `${searchParamsState.pageSize * (searchParamsState.pageIndex - 1) + item.index + 1}`,
|
|
|
},
|
|
|
- { title: '姓名', dataIndex: 'name', key: 'name', width: 100 },
|
|
|
- { title: '工种名称', dataIndex: 'workName', key: 'workName', width: 150 },
|
|
|
- { title: '希望工作地区', dataIndex: 'workAddress', key: 'workAddress', width: 150 },
|
|
|
- { title: '可到职日期', dataIndex: 'endDate', key: 'endDate', width: 100,
|
|
|
- customRender: ({ record }) => dayjs(record.endDate).format('YYYY-MM-DD'), },
|
|
|
- { title: '工作年限', dataIndex: 'workYear', key: 'workYear' },
|
|
|
- { title: '求职类型', dataIndex: 'wantedJobType', key: 'wantedJobType' },
|
|
|
- { title: '人才类型', dataIndex: 'talentsTypeName', key: 'talentsTypeName' },
|
|
|
- { title: '月薪要求', dataIndex: 'salary', key: 'salary' },
|
|
|
- { title: '是否完成求职', dataIndex: 'isAccomplish', key: 'isAccomplish' , customRender: ({record}) => (
|
|
|
+ { title: '姓名', dataIndex: 'jobUserName', key: 'jobUserName', width: 100,align: "center", },
|
|
|
+ { title: '工种名称', dataIndex: 'workName', key: 'workName', width: 150, align: "center", },
|
|
|
+ { title: '希望工作地区', dataIndex: 'areaWork', key: 'areaWork', width: 150, align: "center", },
|
|
|
+ { title: '可到职日期', dataIndex: 'inDate', key: 'inDate', width: 100, align: "center",
|
|
|
+ customRender: ({ record }) => record.inDate == null?"":dayjs(record.inDate).format('YYYY-MM-DD'), },
|
|
|
+ { title: '工作年限', dataIndex: 'workYear', key: 'workYear' , align: "center",},
|
|
|
+ { title: '求职类型', dataIndex: 'jobHuntType', key: 'jobHuntType', align: "center", },
|
|
|
+ { title: '人才类型', dataIndex: 'jobUserType', key: 'jobUserType' , align: "center",},
|
|
|
+ { title: '月薪要求', dataIndex: 'salary', key: 'salary' , align: "center",},
|
|
|
+ /* { title: '是否完成求职', dataIndex: 'isAccomplish', key: 'isAccomplish' , customRender: ({record}) => (
|
|
|
record.isAccomplish == true ? "是" : "否"
|
|
|
- )},
|
|
|
+ )},*/
|
|
|
{ title: '操作', key: 'operation', width: 100, align: 'center' },
|
|
|
];
|
|
|
const pagination = computed(() => ({
|
|
|
total: formState.total,
|
|
|
- current: searchParamsState.page,
|
|
|
- pageSize: searchParamsState.limit,
|
|
|
+ current: searchParamsState.pageIndex,
|
|
|
+ pageSize: searchParamsState.pageSize,
|
|
|
showSizeChanger: true,
|
|
|
showTotal: (total) => getPaginationTotalTitle(total),
|
|
|
}));
|
|
|
-
|
|
|
+ const importOptions = ref<ImportProps>({
|
|
|
+ title: '导入',
|
|
|
+ url: '/jobUserService/jobHunt/import',
|
|
|
+ columns: [
|
|
|
+ {cnName: '姓名', enName: 'jobUserName', width: 100},
|
|
|
+ {cnName: '工种名称', enName: 'workName', width: 100},
|
|
|
+ {cnName: '希望工作地区', enName: 'areaWork', width: 100},
|
|
|
+ {cnName: '可到职日期', enName: 'inDate', width: 100},
|
|
|
+ {cnName: '工作年限', enName: 'workYear', width: 100},
|
|
|
+ {cnName: '求职类型', enName: 'jobHuntType', width: 100},
|
|
|
+ {cnName: '人才类型', enName: 'jobUserType', width: 100},
|
|
|
+ {cnName: '月薪要求', enName: 'salary', width: 100},
|
|
|
+ ],
|
|
|
+ template: {
|
|
|
+ tempFileName: '求职意向导入模板.xlsx',
|
|
|
+ url: '',
|
|
|
+ params: null,
|
|
|
+ },
|
|
|
+ });
|
|
|
const dataList = ref([]);
|
|
|
- const wantedJobTypeList = ref<SelectProps['options']>();
|
|
|
+ const jobHuntEditModelRef = ref();
|
|
|
+ const jobHuntTypeList = ref<SelectProps['options']>();
|
|
|
+ const jobUserTypeList = ref<SelectProps['options']>();
|
|
|
const isAccomplishList = ref<SelectProps['options']>();
|
|
|
|
|
|
const onSelectChange = (selectedRowKeys: any) => {
|
|
@@ -154,59 +208,103 @@
|
|
|
pageSize: number;
|
|
|
current: number;
|
|
|
}) => {
|
|
|
- searchParamsState.page = pag.current;
|
|
|
- searchParamsState.limit = pag.pageSize;
|
|
|
+ searchParamsState.pageIndex = pag.current;
|
|
|
+ searchParamsState.pageSize = pag.pageSize;
|
|
|
loadData();
|
|
|
};
|
|
|
|
|
|
- const onFinish = () => {
|
|
|
+ const onSearch = () => {
|
|
|
loadData();
|
|
|
+ }
|
|
|
+
|
|
|
+ const onDel= (item: any) => {
|
|
|
+ if (item) {
|
|
|
+ formState.selectedRowKeys.push(item.jobHuntID as never)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (formState.selectedRowKeys.length <= 0) {
|
|
|
+ message.warning('请选择需要删除的数据!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ Modal.confirm({
|
|
|
+ title: '确认删除选中的驿站站点?',
|
|
|
+ icon: createVNode(ExclamationCircleOutlined),
|
|
|
+ content: '',
|
|
|
+ okText: '确认删除',
|
|
|
+ okType: 'danger',
|
|
|
+ okButtonProps: {},
|
|
|
+ cancelText: '取消',
|
|
|
+ onOk() {
|
|
|
+ delJobHunt(formState.selectedRowKeys).then(() => {
|
|
|
+ loadData();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onCancel() {
|
|
|
+
|
|
|
+ },
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ const onOperates = (id: string,operation:string,opCategory:any) => {
|
|
|
+ jobHuntEditModelRef.value.show(id,operation,opCategory);
|
|
|
};
|
|
|
|
|
|
const loadData = async function () {
|
|
|
formState.loading = true;
|
|
|
- const result: any = await getList(searchParamsState);
|
|
|
-
|
|
|
+ getJobHuntTypeList();
|
|
|
+ getJobUserTypeList();
|
|
|
+ getIsAccomplishList();
|
|
|
+ const result: any = await getJobHuntList(searchParamsState);
|
|
|
dataList.value = result.list;
|
|
|
formState.total = result.total;
|
|
|
formState.loading = false;
|
|
|
};
|
|
|
|
|
|
- const getWantedJobTypeList = () => {
|
|
|
- getSysDictionaryList('wantedJobType').then((data) => {
|
|
|
- wantedJobTypeList.value = data;
|
|
|
+
|
|
|
+ const getJobHuntTypeList = () => {
|
|
|
+ getSysDictionaryList('JobHuntType').then((data) => {
|
|
|
+ jobHuntTypeList.value = data;
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ const getJobUserTypeList = () => {
|
|
|
+ getSysDictionaryList('JobUserType').then((data) => {
|
|
|
+ jobUserTypeList.value = data;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const getIsAccomplishList = () => {
|
|
|
- getSysDictionaryList('sexType').then((data) => {
|
|
|
+ getSysDictionaryList('ContractRecord').then((data) => {
|
|
|
isAccomplishList.value = data;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
return {
|
|
|
- modalRoleUserRef,
|
|
|
- modalRoleEditRef,
|
|
|
+ jobHuntEditModelRef,
|
|
|
formRef,
|
|
|
- loadData,
|
|
|
searchParamsState,
|
|
|
formState,
|
|
|
columns,
|
|
|
pagination,
|
|
|
dataList,
|
|
|
- wantedJobTypeList,
|
|
|
+ importOptions,
|
|
|
+ jobHuntTypeList,
|
|
|
+ jobUserTypeList,
|
|
|
isAccomplishList,
|
|
|
+ loadData,
|
|
|
+ onDel,
|
|
|
+ onSearch,
|
|
|
+ onOperates,
|
|
|
onSelectChange,
|
|
|
handleTableChange,
|
|
|
- onFinish,
|
|
|
- getWantedJobTypeList,
|
|
|
+ getJobHuntTypeList,
|
|
|
+ getJobUserTypeList,
|
|
|
getIsAccomplishList,
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
this.loadData();
|
|
|
- this.getWantedJobTypeList();
|
|
|
- this.getIsAccomplishList();
|
|
|
},
|
|
|
activated() {
|
|
|
if (history.state.params?.reload) this.loadData();
|