flat: 暂存,rules 表单 显示隐藏
This commit is contained in:
@@ -1,72 +1,86 @@
|
||||
import request from '@/router/axios';
|
||||
import {getToken} from '@/util/auth'
|
||||
import request from "@/router/axios";
|
||||
import { getToken } from "@/util/auth";
|
||||
|
||||
export const getList =
|
||||
(current, size, params) => {
|
||||
export const getList = (current, size, params) => {
|
||||
return request({
|
||||
url: '/api/jobslink-api/resource/oss/list',
|
||||
method: 'get',
|
||||
url: "/api/jobslink-api/resource/oss/list",
|
||||
method: "get",
|
||||
params: {
|
||||
...params,
|
||||
current,
|
||||
size,
|
||||
}
|
||||
})
|
||||
size
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const getDetail =
|
||||
(id) => {
|
||||
export const getDetail = id => {
|
||||
return request({
|
||||
url: '/api/jobslink-api/resource/oss/detail',
|
||||
method: 'get',
|
||||
params: {id}
|
||||
})
|
||||
}
|
||||
url: "/api/jobslink-api/resource/oss/detail",
|
||||
method: "get",
|
||||
params: { id }
|
||||
});
|
||||
};
|
||||
|
||||
export const remove =
|
||||
(ids) => {
|
||||
export const remove = ids => {
|
||||
return request({
|
||||
url: '/api/jobslink-api/resource/oss/remove',
|
||||
method: 'post',
|
||||
url: "/api/jobslink-api/resource/oss/remove",
|
||||
method: "post",
|
||||
params: {
|
||||
ids,
|
||||
}
|
||||
})
|
||||
ids
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const add =
|
||||
(row) => {
|
||||
return request(
|
||||
{url: '/api/jobslink-api/resource/oss/submit', method: 'post', data: row})
|
||||
}
|
||||
|
||||
export const update =
|
||||
(row) => {
|
||||
return request(
|
||||
{url: '/api/jobslink-api/resource/oss/submit', method: 'post', data: row})
|
||||
}
|
||||
|
||||
export const enable =
|
||||
(id) => {
|
||||
export const add = row => {
|
||||
return request({
|
||||
url: '/api/jobslink-api/resource/oss/enable',
|
||||
method: 'post',
|
||||
params: {id}
|
||||
})
|
||||
}
|
||||
url: "/api/jobslink-api/resource/oss/submit",
|
||||
method: "post",
|
||||
data: row
|
||||
});
|
||||
};
|
||||
|
||||
export const putFile = (type) => `/api/jobslink-api/resource/file/save?Jobslink-Auth=${getToken()}?bussinessType=${type || 11}`
|
||||
export const update = row => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/resource/oss/submit",
|
||||
method: "post",
|
||||
data: row
|
||||
});
|
||||
};
|
||||
|
||||
export const enable = id => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/resource/oss/enable",
|
||||
method: "post",
|
||||
params: { id }
|
||||
});
|
||||
};
|
||||
|
||||
export const putFile = type =>
|
||||
`/api/jobslink-api/resource/file/save?Jobslink-Auth=${getToken()}?bussinessType=${type ||
|
||||
11}`;
|
||||
|
||||
export const putFileFun = (file, onUploadProgress) => {
|
||||
const data = new FormData();
|
||||
data.append('file', file);
|
||||
data.append("file", file);
|
||||
|
||||
return request({
|
||||
url: '/api/jobslink-api/resource/file/save?bussinessType=11',
|
||||
method: 'post',
|
||||
headers: {'Content-Type': 'multipart/form-data'},
|
||||
url: "/api/jobslink-api/resource/file/save?bussinessType=11",
|
||||
method: "post",
|
||||
headers: { "Content-Type": "multipart/form-data" },
|
||||
data,
|
||||
onUploadProgress
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const putFileUpload = (file, type, onUploadProgress) => {
|
||||
const data = new FormData();
|
||||
data.append("file", file);
|
||||
|
||||
return request({
|
||||
url: "/api/jobslink-api/resource/file/save?bussinessType=" + type,
|
||||
method: "post",
|
||||
headers: { "Content-Type": "multipart/form-data" },
|
||||
data,
|
||||
onUploadProgress
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import request from "@/router/axios";
|
||||
import { validatenull } from "@/util/validate";
|
||||
import {validatenull} from "@/util/validate";
|
||||
/*获取行业类型*/
|
||||
export const getTrade = companyId => {
|
||||
return new Promise(function(resolve, reject) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
request({
|
||||
url: "/api/jobslink-api/tenant/trade/base/all",
|
||||
method: "get",
|
||||
params: { companyId }
|
||||
params: {companyId}
|
||||
})
|
||||
.then(resp => {
|
||||
const data = validatenull(resp.data.data) ? [] : resp.data.data;
|
||||
@@ -18,11 +18,11 @@ export const getTrade = companyId => {
|
||||
|
||||
/*根据行业类型获取工种*/
|
||||
export const getWork = tradeId => {
|
||||
return new Promise(function(resolve, reject) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
request({
|
||||
url: "/api/jobslink-api/tenant/worktypes/base/getlist",
|
||||
method: "get",
|
||||
params: { tradeId }
|
||||
params: {tradeId}
|
||||
})
|
||||
.then(resp => {
|
||||
const data = validatenull(resp.data.data) ? [] : resp.data.data;
|
||||
|
||||
@@ -312,6 +312,32 @@ export const phoneUpdate = (params) => {
|
||||
});
|
||||
};
|
||||
|
||||
export const serveUpdate = (params) => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/serve/serveUpdate",
|
||||
method: "post",
|
||||
params
|
||||
});
|
||||
};
|
||||
|
||||
export const serveRegion = (params) => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/serve/region",
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
export const serveExitReason = (params) => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/serve/exitReason",
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
export const getMsgContent = (params) => {
|
||||
return request({
|
||||
url: "/api/jobslink-api/serve/getMsgContent",
|
||||
|
||||
@@ -1,190 +1,189 @@
|
||||
export const wagesStatus = [
|
||||
{value: 0, label: "未支付"},
|
||||
{value: 1, label: "已支付"},
|
||||
{value: 2, label: "已取消"},
|
||||
{value: 3, label: "已过期"},
|
||||
{value: 9, label: "异常"},
|
||||
{ value: 0, label: "未支付" },
|
||||
{ value: 1, label: "已支付" },
|
||||
{ value: 2, label: "已取消" },
|
||||
{ value: 3, label: "已过期" },
|
||||
{ value: 9, label: "异常" }
|
||||
];
|
||||
export const orderGoodStatus = [
|
||||
{value: 0, label: "未支付"},
|
||||
{value: 1, label: "已支付"},
|
||||
{ value: 0, label: "未支付" },
|
||||
{ value: 1, label: "已支付" }
|
||||
];
|
||||
export const insuranceStatus = [
|
||||
{value: 1, label: "生效中"},
|
||||
{value: 2, label: "即将失效"},
|
||||
{value: 3, label: "已失效"},
|
||||
{value: 0, label: "未生效"},
|
||||
{ value: 1, label: "生效中" },
|
||||
{ value: 2, label: "即将失效" },
|
||||
{ value: 3, label: "已失效" },
|
||||
{ value: 0, label: "未生效" }
|
||||
];
|
||||
|
||||
export const orderGoods = [
|
||||
{value: 1, label: "服务费订单"},
|
||||
{value: 0, label: "工资订单"},
|
||||
{ value: 1, label: "服务费订单" },
|
||||
{ value: 0, label: "工资订单" }
|
||||
];
|
||||
|
||||
export const timeStatus = [
|
||||
{value: 0, label: "开始时间"},
|
||||
{value: 1, label: "结束时间"},
|
||||
{ value: 0, label: "开始时间" },
|
||||
{ value: 1, label: "结束时间" }
|
||||
// { value: 2, label: "截止时间" },
|
||||
];
|
||||
export const jobStatus = [
|
||||
// { value: "", label: "全部" },
|
||||
{value: 9, label: "审核未通过"},
|
||||
{value: 1, label: "招聘中"},
|
||||
{ value: 9, label: "审核未通过" },
|
||||
{ value: 1, label: "招聘中" },
|
||||
// { value: 2, label: "任务中" },
|
||||
{value: 3, label: "已完成"},
|
||||
{value: 4, label: "已失效"},
|
||||
|
||||
{ value: 3, label: "已完成" },
|
||||
{ value: 4, label: "已失效" }
|
||||
];
|
||||
export const bondState = [
|
||||
{value: "", label: "全部"},
|
||||
{value: 0, label: "已缴"},
|
||||
{value: 2, label: "免缴"},
|
||||
{value: 1, label: "未缴"},
|
||||
{ value: "", label: "全部" },
|
||||
{ value: 0, label: "已缴" },
|
||||
{ value: 2, label: "免缴" },
|
||||
{ value: 1, label: "未缴" }
|
||||
];
|
||||
export const enableState = [
|
||||
{value: "", label: "全部"},
|
||||
{value: 1, label: "启用"},
|
||||
{value: 0, label: "停用"},
|
||||
{ value: "", label: "全部" },
|
||||
{ value: 1, label: "启用" },
|
||||
{ value: 0, label: "停用" }
|
||||
];
|
||||
export const payState = [
|
||||
{value: "", label: "全部"},
|
||||
{value: 0, label: "未支付"},
|
||||
{value: 1, label: "已支付"},
|
||||
{ value: "", label: "全部" },
|
||||
{ value: 0, label: "未支付" },
|
||||
{ value: 1, label: "已支付" }
|
||||
];
|
||||
export const taskState = [
|
||||
{value: 1, label: "岗位汇总"},
|
||||
{value: 2, label: "岗位明细"},
|
||||
{ value: 1, label: "岗位汇总" },
|
||||
{ value: 2, label: "岗位明细" }
|
||||
];
|
||||
export const postState = [
|
||||
{value: 1, label: "岗位汇总"},
|
||||
{value: 2, label: "岗位明细"},
|
||||
{ value: 1, label: "岗位汇总" },
|
||||
{ value: 2, label: "岗位明细" }
|
||||
];
|
||||
export const enterpriseState = [
|
||||
{value: 1, label: "审核中企业"},
|
||||
{value: 2, label: "合作中企业"},
|
||||
{value: 3, label: "终止合作企业"},
|
||||
{ value: 1, label: "审核中企业" },
|
||||
{ value: 2, label: "合作中企业" },
|
||||
{ value: 3, label: "终止合作企业" }
|
||||
];
|
||||
export const companyMissionState = [
|
||||
{value: 1, label: "招聘中"},
|
||||
{value: 2, label: "任务中"},
|
||||
{value: 3, label: "已完成"},
|
||||
{value: 4, label: "已失效"},
|
||||
{ value: 1, label: "招聘中" },
|
||||
{ value: 2, label: "任务中" },
|
||||
{ value: 3, label: "已完成" },
|
||||
{ value: 4, label: "已失效" }
|
||||
];
|
||||
export const companyPostState = [
|
||||
{value: 1, label: "招聘中"},
|
||||
{ value: 1, label: "招聘中" },
|
||||
// { value: 2, label: "已招" },
|
||||
{value: 3, label: "已完成"},
|
||||
{value: 4, label: "未发布"},
|
||||
{ value: 3, label: "已完成" },
|
||||
{ value: 4, label: "未发布" }
|
||||
];
|
||||
//电子签章管理
|
||||
export const esignatureState = [
|
||||
{value: 0, label: "待签发"},
|
||||
{value: 1, label: "签发成功"},
|
||||
{value: 2, label: "签发失败"},
|
||||
{ value: 0, label: "待签发" },
|
||||
{ value: 1, label: "签发成功" },
|
||||
{ value: 2, label: "签发失败" }
|
||||
];
|
||||
|
||||
//线上代发工资状态
|
||||
export const onLinePayState = [
|
||||
{value: "wait", label: "待确定"},
|
||||
{value: "ing", label: "发放中"},
|
||||
{value: "moreThan", label: "超三倍工资"},
|
||||
{value: "success", label: "发放成功"},
|
||||
{value: "fail", label: "发放失败"},
|
||||
{value: "pause", label: "暂不发放"},
|
||||
{value: "all", label: "发放历史"},
|
||||
{ value: "wait", label: "待确定" },
|
||||
{ value: "ing", label: "发放中" },
|
||||
{ value: "moreThan", label: "超三倍工资" },
|
||||
{ value: "success", label: "发放成功" },
|
||||
{ value: "fail", label: "发放失败" },
|
||||
{ value: "pause", label: "暂不发放" },
|
||||
{ value: "all", label: "发放历史" }
|
||||
];
|
||||
//个税校准管理状态
|
||||
export const incomeTaxState = [
|
||||
{value: 1, label: "待校准"},
|
||||
{value: 2, label: "待确定"},
|
||||
{value: 3, label: "补发中"},
|
||||
{value: 4, label: "补发成功"},
|
||||
{value: 5, label: "补发失败"},
|
||||
{value: 6, label: "无需补发"},
|
||||
{ value: 1, label: "待校准" },
|
||||
{ value: 2, label: "待确定" },
|
||||
{ value: 3, label: "补发中" },
|
||||
{ value: 4, label: "补发成功" },
|
||||
{ value: 5, label: "补发失败" },
|
||||
{ value: 6, label: "无需补发" }
|
||||
];
|
||||
//线下代发工资状态
|
||||
export const offLinePayState = [
|
||||
{value: "wait", label: "待发放"},
|
||||
{value: "success", label: "发放成功"},
|
||||
{value: "all", label: "发放历史"},
|
||||
{ value: "wait", label: "待发放" },
|
||||
{ value: "success", label: "发放成功" },
|
||||
{ value: "all", label: "发放历史" }
|
||||
];
|
||||
//线上代发发放渠道
|
||||
export const payType = [
|
||||
{value: 0, label: "银联线上"},
|
||||
{value: 1, label: "其他发放"},
|
||||
{ value: 0, label: "银联线上" },
|
||||
{ value: 1, label: "其他发放" }
|
||||
];
|
||||
//个税校准管理状态
|
||||
export const examineListState = [
|
||||
{
|
||||
value: 3,
|
||||
label: "待完善",
|
||||
label: "待完善"
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: "待审核",
|
||||
label: "待审核"
|
||||
},
|
||||
{
|
||||
value: 0,
|
||||
label: "审核通过",
|
||||
label: "审核通过"
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: "审核不通过",
|
||||
label: "审核不通过"
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: "暂不处理",
|
||||
label: "暂不处理"
|
||||
},
|
||||
{
|
||||
value: 9,
|
||||
label: "终止合作",
|
||||
},
|
||||
label: "终止合作"
|
||||
}
|
||||
];
|
||||
export const missionState = [
|
||||
...companyMissionState,
|
||||
{
|
||||
label: "审核未通过",
|
||||
value: 9,
|
||||
},
|
||||
value: 9
|
||||
}
|
||||
];
|
||||
|
||||
//商保状态
|
||||
export const insureState = [
|
||||
{
|
||||
value: 0,
|
||||
label: "未生效",
|
||||
label: "未生效"
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: "生效中",
|
||||
label: "生效中"
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: "即将失效",
|
||||
label: "即将失效"
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: "已失效",
|
||||
label: "已失效"
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: "已生效",
|
||||
label: "已生效"
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: "已过期",
|
||||
label: "已过期"
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: "已失效",
|
||||
},
|
||||
label: "已失效"
|
||||
}
|
||||
];
|
||||
|
||||
export const wageUnitCategoryState = [
|
||||
{value: 1, label: "元/人·时", disable: false},
|
||||
{value: 2, label: "元/人·天", disable: false},
|
||||
{value: 3, label: "元/人·月", disable: true},
|
||||
{value: 4, label: "其他", disable: true},
|
||||
{ value: 1, label: "元/人·时", disable: false },
|
||||
{ value: 2, label: "元/人·天", disable: false },
|
||||
{ value: 3, label: "元/人·月", disable: true },
|
||||
{ value: 4, label: "其他", disable: true }
|
||||
// { value: 0, label: "元/人·次", disable: true },
|
||||
// { value: 4, label: "元/人·周", disable: true },
|
||||
// { value: 5, label: "元/人·个", disable: true },
|
||||
@@ -194,198 +193,206 @@ export const wageUnitCategoryState = [
|
||||
export const wageOptionsMonth = [
|
||||
{
|
||||
value: "2000元(含)以下/月",
|
||||
label: "2000元(含)以下/月",
|
||||
label: "2000元(含)以下/月"
|
||||
},
|
||||
{
|
||||
value: "2000-5000元(含)/月",
|
||||
label: "2000-5000元(含)/月",
|
||||
label: "2000-5000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "5000-8000元(含)/月",
|
||||
label: "5000-8000元(含)/月",
|
||||
label: "5000-8000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "8000-10000元(含)/月",
|
||||
label: "8000-10000元(含)/月",
|
||||
label: "8000-10000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "10000-15000元(含)/月",
|
||||
label: "10000-15000元(含)/月",
|
||||
label: "10000-15000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "15000-20000元(含)/月",
|
||||
label: "15000-20000元(含)/月",
|
||||
label: "15000-20000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "20000-25000元(含)/月",
|
||||
label: "20000-25000元(含)/月",
|
||||
label: "20000-25000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "25000-30000元(含)/月",
|
||||
label: "25000-30000元(含)/月",
|
||||
label: "25000-30000元(含)/月"
|
||||
},
|
||||
{
|
||||
value: "30000元以上/月",
|
||||
label: "30000元以上/月",
|
||||
label: "30000元以上/月"
|
||||
},
|
||||
{
|
||||
value: "面议、暂无要求",
|
||||
label: "面议、暂无要求",
|
||||
},
|
||||
label: "面议、暂无要求"
|
||||
}
|
||||
];
|
||||
|
||||
export const wageOptionsWithNoMonth = [
|
||||
{
|
||||
value: "10-15元/小时",
|
||||
label: "10-15元/小时",
|
||||
label: "10-15元/小时"
|
||||
},
|
||||
{
|
||||
value: "16-20元/小时",
|
||||
label: "16-20元/小时",
|
||||
label: "16-20元/小时"
|
||||
},
|
||||
{
|
||||
value: "21-25元/小时",
|
||||
label: "21-25元/小时",
|
||||
label: "21-25元/小时"
|
||||
},
|
||||
{
|
||||
value: "26-30元/小时",
|
||||
label: "26-30元/小时",
|
||||
label: "26-30元/小时"
|
||||
},
|
||||
{
|
||||
value: "30元/小时以上",
|
||||
label: "30元/小时以上",
|
||||
label: "30元/小时以上"
|
||||
},
|
||||
{
|
||||
value: "100-150元/天",
|
||||
label: "100-150元/天",
|
||||
label: "100-150元/天"
|
||||
},
|
||||
{
|
||||
value: "151-200元/天",
|
||||
label: "151-200元/天",
|
||||
label: "151-200元/天"
|
||||
},
|
||||
{
|
||||
value: "201-250元/天",
|
||||
label: "201-250元/天",
|
||||
label: "201-250元/天"
|
||||
},
|
||||
{
|
||||
value: "251-300元/天",
|
||||
label: "251-300元/天",
|
||||
label: "251-300元/天"
|
||||
},
|
||||
{
|
||||
value: "300元/天以上",
|
||||
label: "300元/天以上",
|
||||
label: "300元/天以上"
|
||||
},
|
||||
{
|
||||
value: "30000元以上/月",
|
||||
label: "30000元以上/月",
|
||||
label: "30000元以上/月"
|
||||
},
|
||||
{
|
||||
value: "面议、暂无要求",
|
||||
label: "面议、暂无要求",
|
||||
},
|
||||
label: "面议、暂无要求"
|
||||
}
|
||||
];
|
||||
|
||||
export const educationState = [
|
||||
{
|
||||
label: "不限",
|
||||
value: 8,
|
||||
value: 8
|
||||
},
|
||||
{
|
||||
label: "初中及以下",
|
||||
value: 7,
|
||||
value: 7
|
||||
},
|
||||
{
|
||||
label: "中专/中技",
|
||||
value: 6,
|
||||
value: 6
|
||||
},
|
||||
{
|
||||
label: "高中",
|
||||
value: 5,
|
||||
value: 5
|
||||
},
|
||||
{
|
||||
label: "大专",
|
||||
value: 4,
|
||||
value: 4
|
||||
},
|
||||
{
|
||||
label: "本科",
|
||||
value: 3,
|
||||
value: 3
|
||||
},
|
||||
{
|
||||
label: "硕士",
|
||||
value: 2,
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label: "博士",
|
||||
value: 1,
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: "MBA/EMBA",
|
||||
value: 0,
|
||||
},
|
||||
value: 0
|
||||
}
|
||||
];
|
||||
|
||||
export const genderState = [
|
||||
{
|
||||
label: "不限男女",
|
||||
value: 0,
|
||||
value: 0
|
||||
},
|
||||
{
|
||||
label: "男",
|
||||
value: 1,
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: "女",
|
||||
value: 2,
|
||||
},
|
||||
value: 2
|
||||
}
|
||||
];
|
||||
// 服务类型
|
||||
export const serviceType = [
|
||||
{value: 0, label: "其他指导和服务"},
|
||||
{value: 1, label: "就业指导课程宣讲"},
|
||||
{value: 2, label: "职业选择"},
|
||||
{value: 3, label: "求职择业心理辅导"},
|
||||
{value: 4, label: "就业政策宣讲与就业市场分析"},
|
||||
{value: 5, label: "求职简历面试技巧辅导"},
|
||||
{value: 6, label: "劳动权益与法律保障解读"},
|
||||
{value: 7, label: "创业服务与辅导"},
|
||||
{value: 8, label: "职场适应与职业发展指导"},
|
||||
{value: 9, label: "就业典型案例宣传与就业干预"},
|
||||
{ value: 0, label: "其他指导和服务" },
|
||||
{ value: 1, label: "就业指导课程宣讲" },
|
||||
{ value: 2, label: "职业选择" },
|
||||
{ value: 3, label: "求职择业心理辅导" },
|
||||
{ value: 4, label: "就业政策宣讲与就业市场分析" },
|
||||
{ value: 5, label: "求职简历面试技巧辅导" },
|
||||
{ value: 6, label: "劳动权益与法律保障解读" },
|
||||
{ value: 7, label: "创业服务与辅导" },
|
||||
{ value: 8, label: "职场适应与职业发展指导" },
|
||||
{ value: 9, label: "就业典型案例宣传与就业干预" }
|
||||
];
|
||||
|
||||
export const recruitStatus = [
|
||||
{value: 0, label: "未审核"},
|
||||
{value: 1, label: "通过"},
|
||||
{value: 8, label: "关闭"},
|
||||
{value: 9, label: "已驳回"},
|
||||
{ value: 0, label: "未审核" },
|
||||
{ value: 1, label: "通过" },
|
||||
{ value: 8, label: "关闭" },
|
||||
{ value: 9, label: "已驳回" }
|
||||
];
|
||||
export const dataSourcesEnum = [
|
||||
// { value: -1, label: "总集数据中心" },
|
||||
{value: 1, label: "数据共享中心"},
|
||||
{value: 2, label: "企业发布"},
|
||||
{value: 3, label: "社区发布"},
|
||||
{value: 4, label: "互联网采集"},
|
||||
]
|
||||
{ value: 1, label: "数据共享中心" },
|
||||
{ value: 2, label: "企业发布" },
|
||||
{ value: 3, label: "社区发布" },
|
||||
{ value: 4, label: "互联网采集" }
|
||||
];
|
||||
export const companyEnum = [
|
||||
{value: 1, label: "机关/事业单位"},
|
||||
{value: 2, label: "国有企业"},
|
||||
{value: 3, label: "私营企业"},
|
||||
{value: 4, label: "外商及港澳台投资企业"},
|
||||
{value: 5, label: "股份制企业"},
|
||||
{value: 6, label: "学校/下级学院"},
|
||||
{value: 7, label: "医院"},
|
||||
{value: 8, label: "律师事务所"},
|
||||
{value: 9, label: "银行"},
|
||||
{value: 10, label: "非盈利社会组织"},
|
||||
{value: 11, label: "其它"},
|
||||
]
|
||||
{ value: 1, label: "机关/事业单位" },
|
||||
{ value: 2, label: "国有企业" },
|
||||
{ value: 3, label: "私营企业" },
|
||||
{ value: 4, label: "外商及港澳台投资企业" },
|
||||
{ value: 5, label: "股份制企业" },
|
||||
{ value: 6, label: "学校/下级学院" },
|
||||
{ value: 7, label: "医院" },
|
||||
{ value: 8, label: "律师事务所" },
|
||||
{ value: 9, label: "银行" },
|
||||
{ value: 10, label: "非盈利社会组织" },
|
||||
{ value: 11, label: "其它" }
|
||||
];
|
||||
|
||||
export const addressColumn = [
|
||||
{value: '95', label: "绵竹市"},
|
||||
{value: '185', label: "广汉市"},
|
||||
{value: '143', label: "旌阳区"},
|
||||
{value: '150', label: "罗江区"},
|
||||
{value: '42', label: "什邡市"},
|
||||
{value: '156', label: "中江县"},
|
||||
{value: '44139628', label: "经济技术开发区"},
|
||||
{value: '79194151', label: "德阳市开发区"},
|
||||
]
|
||||
{ value: "95", label: "绵竹市" },
|
||||
{ value: "185", label: "广汉市" },
|
||||
{ value: "143", label: "旌阳区" },
|
||||
{ value: "150", label: "罗江区" },
|
||||
{ value: "42", label: "什邡市" },
|
||||
{ value: "156", label: "中江县" },
|
||||
{ value: "44139628", label: "经济技术开发区" },
|
||||
{ value: "79194151", label: "德阳市开发区" }
|
||||
];
|
||||
|
||||
export const serveTypeOptions = [
|
||||
{ label: "线下日志", value: 0 },
|
||||
{ label: "跟踪服务", value: 1 },
|
||||
{ label: "推送岗位日志", value: 2 },
|
||||
{ label: "推送政策日志", value: 3 },
|
||||
{ label: "温馨提示", value: 4 }
|
||||
];
|
||||
|
||||
@@ -5,22 +5,15 @@
|
||||
<div class="login-title">{{ $t('login.phoneLogin') }}</div>
|
||||
<el-form :model="loginForm" :rules="loginRules" ref="loginForm" class="login-form">
|
||||
<el-form-item prop="username">
|
||||
<el-input size="small" style="margin-top: 20px; margin-bottom:10px;"
|
||||
@keyup.enter.native="handleLogin"
|
||||
v-model="loginForm.username"
|
||||
:auto-complete="off"
|
||||
placeholder="请输入您的账号">
|
||||
<i slot="prefix" class="icon-yonghu"/>
|
||||
<el-input size="small" style="margin-top: 20px; margin-bottom:10px;" @keyup.enter.native="handleLogin"
|
||||
v-model="loginForm.username" :auto-complete="off" placeholder="请输入您的账号">
|
||||
<i slot="prefix" class="icon-yonghu" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="password">
|
||||
<el-input size="small" style="margin-top: 20px; margin-bottom:10px;"
|
||||
type="password"
|
||||
@keyup.enter.native="handleLogin"
|
||||
v-model="loginForm.password"
|
||||
:auto-complete="off"
|
||||
placeholder="请输入您的密码">
|
||||
<i slot="prefix" class="icon-mima"/>
|
||||
<el-input size="small" style="margin-top: 20px; margin-bottom:10px;" type="password"
|
||||
@keyup.enter.native="handleLogin" v-model="loginForm.password" :auto-complete="off" placeholder="请输入您的密码">
|
||||
<i slot="prefix" class="icon-mima" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item v-if="this.website.captchaMode" prop="code">-->
|
||||
@@ -37,12 +30,8 @@
|
||||
<!-- </div>-->
|
||||
<!-- </el-form-item>-->
|
||||
<div>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
@click.native.prevent="handleLogin"
|
||||
class="login-submit"
|
||||
>{{ $t('login.submit') }}
|
||||
<el-button size="small" type="primary" @click.native.prevent="handleLogin" class="login-submit">{{
|
||||
$t('login.submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
@@ -51,14 +40,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapGetters} from "vuex";
|
||||
import { mapGetters } from "vuex";
|
||||
import topLang from "@/page/index/top/top-lang";
|
||||
// import { info } from "@/api/system/tenant";
|
||||
import {getCaptcha} from "@/api/user";
|
||||
import { getCaptcha } from "@/api/user";
|
||||
|
||||
console.log('是否跳转', /(^http)(s?):\/\/([a-z0-9].+)\/manage(\/)?$/i.test(location.href), location.href)
|
||||
if (/(^http)(s?):\/\/([a-z0-9].+)\/manage(\/)?$/i.test(location.href)) {
|
||||
window.location.href = process.env.VUE_APP_LOGIN_NEXT
|
||||
// window.location.href = process.env.VUE_APP_LOGIN_NEXT
|
||||
}
|
||||
if (/(\/login\?)(.*)/ig.test(location.href)) {
|
||||
const obj = {}
|
||||
@@ -99,11 +88,11 @@ export default {
|
||||
},
|
||||
loginRules: {
|
||||
username: [
|
||||
{required: true, message: "请输入用户名", trigger: "blur"}
|
||||
{ required: true, message: "请输入用户名", trigger: "blur" }
|
||||
],
|
||||
password: [
|
||||
{required: true, message: "请输入密码", trigger: "blur"},
|
||||
{min: 1, message: "密码长度最少为6位", trigger: "blur"}
|
||||
{ required: true, message: "请输入密码", trigger: "blur" },
|
||||
{ min: 1, message: "密码长度最少为6位", trigger: "blur" }
|
||||
]
|
||||
},
|
||||
passwordType: "password",
|
||||
@@ -115,7 +104,7 @@ export default {
|
||||
watch: {},
|
||||
created() {
|
||||
// this.getTenant();
|
||||
const {ticket} = JSON.parse(window.sessionStorage.getItem('query_session') || "{}")
|
||||
const { ticket } = JSON.parse(window.sessionStorage.getItem('query_session') || "{}")
|
||||
window.sessionStorage.removeItem('query_session')
|
||||
console.log(ticket)
|
||||
if (ticket) {
|
||||
@@ -135,7 +124,7 @@ export default {
|
||||
props: [],
|
||||
methods: {
|
||||
handelGoReg() {
|
||||
this.$router.push({path: "/reg"});
|
||||
this.$router.push({ path: "/reg" });
|
||||
},
|
||||
refreshCode() {
|
||||
getCaptcha().then(res => {
|
||||
@@ -178,7 +167,7 @@ export default {
|
||||
}
|
||||
this.$store.dispatch("LoginByUsername", obj).then(() => {
|
||||
this.$store.dispatch('jlHelpShow', false)
|
||||
this.$router.push({path: this.tagWel.value});
|
||||
this.$router.push({ path: this.tagWel.value });
|
||||
loading.close();
|
||||
this.proLoading = false
|
||||
}).catch(() => {
|
||||
|
||||
@@ -5,73 +5,81 @@
|
||||
* isSerialize是否开启form表单提交
|
||||
* isToken是否需要token
|
||||
*/
|
||||
import 'nprogress/nprogress.css';
|
||||
import "nprogress/nprogress.css";
|
||||
|
||||
import website from '@/config/website';
|
||||
import router from '@/router/router';
|
||||
import store from '@/store/';
|
||||
import {getToken} from '@/util/auth';
|
||||
import {serialize} from '@/util/util';
|
||||
import axios from 'axios';
|
||||
import {Message} from 'element-ui';
|
||||
import {Base64} from 'js-base64';
|
||||
import NProgress from 'nprogress';
|
||||
import website from "@/config/website";
|
||||
import router from "@/router/router";
|
||||
import store from "@/store/";
|
||||
import { getToken } from "@/util/auth";
|
||||
import { serialize } from "@/util/util";
|
||||
import axios from "axios";
|
||||
import { Message } from "element-ui";
|
||||
import { Base64 } from "js-base64";
|
||||
import NProgress from "nprogress";
|
||||
|
||||
const service = axios.create({
|
||||
// baseURL: 'https://jibaoadmin.qemcap.com/api',
|
||||
timeout: 60000
|
||||
})
|
||||
const replaceStr = JSON.parse(process.env.VUE_APP_REPLACE_STR)
|
||||
});
|
||||
const replaceStr = JSON.parse(process.env.VUE_APP_REPLACE_STR);
|
||||
//默认超时时间
|
||||
service.defaults.timeout = 60000;
|
||||
//返回其他状态码
|
||||
service.defaults.validateStatus = function (status) {
|
||||
service.defaults.validateStatus = function(status) {
|
||||
return status >= 200 && status <= 500;
|
||||
};
|
||||
//跨域请求,允许保存cookie
|
||||
service.defaults.withCredentials = true;
|
||||
// NProgress 配置
|
||||
NProgress.configure({showSpinner: false});
|
||||
NProgress.configure({ showSpinner: false });
|
||||
// http request拦截
|
||||
service.interceptors.request.use(config => {
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
//开启 progress bar
|
||||
NProgress.start();
|
||||
const meta = (config.meta || {});
|
||||
const meta = config.meta || {};
|
||||
const isToken = meta.isToken === false;
|
||||
config.headers['Authorization'] =
|
||||
`Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
|
||||
config.headers["Authorization"] = `Basic ${Base64.encode(
|
||||
`${website.clientId}:${website.clientSecret}`
|
||||
)}`;
|
||||
if (getToken() && !isToken) {
|
||||
//让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
|
||||
config.headers['Jobslink-Auth'] = 'bearer ' + getToken()
|
||||
config.headers["Jobslink-Auth"] = "bearer " + getToken();
|
||||
}
|
||||
// headers中配置serialize为true开启序列化
|
||||
if (config.method === 'post' && meta.isSerialize === true) {
|
||||
if (config.method === "post" && meta.isSerialize === true) {
|
||||
config.data = serialize(config.data);
|
||||
}
|
||||
return config
|
||||
}, error => {
|
||||
return Promise.reject(error)
|
||||
});
|
||||
return config;
|
||||
},
|
||||
error => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
axios.interceptors.request.use(config => {
|
||||
axios.interceptors.request.use(
|
||||
config => {
|
||||
//开启 progress bar
|
||||
NProgress.start();
|
||||
const meta = (config.meta || {});
|
||||
const meta = config.meta || {};
|
||||
const isToken = meta.isToken === false;
|
||||
config.headers['Authorization'] =
|
||||
`Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
|
||||
config.headers["Authorization"] = `Basic ${Base64.encode(
|
||||
`${website.clientId}:${website.clientSecret}`
|
||||
)}`;
|
||||
if (getToken() && !isToken) {
|
||||
//让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
|
||||
config.headers['Jobslink-Auth'] = 'bearer ' + getToken()
|
||||
config.headers["Jobslink-Auth"] = "bearer " + getToken();
|
||||
}
|
||||
// headers中配置serialize为true开启序列化
|
||||
if (config.method === 'post' && meta.isSerialize === true) {
|
||||
if (config.method === "post" && meta.isSerialize === true) {
|
||||
config.data = serialize(config.data);
|
||||
}
|
||||
return config
|
||||
}, error => {
|
||||
return Promise.reject(error)
|
||||
});
|
||||
return config;
|
||||
},
|
||||
error => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
// http response 拦截
|
||||
service.interceptors.response.use(
|
||||
res => {
|
||||
@@ -80,47 +88,48 @@ service.interceptors.response.use(
|
||||
//获取状态码
|
||||
const status = res.data.code || res.status;
|
||||
const statusWhiteList = website.statusWhiteList || [];
|
||||
const message = res.data.msg || res.data.error_description || '未知错误';
|
||||
const message = res.data.msg || res.data.error_description || "未知错误";
|
||||
//如果在白名单里则自行catch逻辑处理
|
||||
if (statusWhiteList.includes(status)) return Promise.reject(res);
|
||||
//如果是401则跳转到登录页面
|
||||
if (status === 401) {
|
||||
store.dispatch('FedLogOut').then(() => {
|
||||
window.location.href = process.env.VUE_APP_LOGIN_NEXT
|
||||
store.dispatch("FedLogOut").then(() => {
|
||||
// window.location.href = process.env.VUE_APP_LOGIN_NEXT;
|
||||
});
|
||||
// store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
|
||||
}
|
||||
// 如果请求为500统一处理
|
||||
const err = new Error(message)
|
||||
err.response = res
|
||||
err.status = status
|
||||
const err = new Error(message);
|
||||
err.response = res;
|
||||
err.status = status;
|
||||
if (message.length > 100) {
|
||||
Message({message: '系统繁忙', type: 'error'});
|
||||
return Promise.reject(err)
|
||||
Message({ message: "系统繁忙", type: "error" });
|
||||
return Promise.reject(err);
|
||||
}
|
||||
// 如果请求为非200否者默认统一处理
|
||||
if (status !== 200) {
|
||||
Message({message: message, type: 'error'});
|
||||
return Promise.reject(err, res)
|
||||
Message({ message: message, type: "error" });
|
||||
return Promise.reject(err, res);
|
||||
}
|
||||
if (res.data instanceof Blob) {
|
||||
return res
|
||||
return res;
|
||||
}
|
||||
return transformReplaceStr(res);
|
||||
},
|
||||
error => {
|
||||
NProgress.done();
|
||||
if (error.message.includes('timeout')) {
|
||||
Message({message: '请求超时', type: 'error'});
|
||||
if (error.message.includes("timeout")) {
|
||||
Message({ message: "请求超时", type: "error" });
|
||||
}
|
||||
return Promise.reject(new Error(error), error);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
// 递归替换 url
|
||||
function transformReplaceStr(props) {
|
||||
if (typeof props !== 'object' || props === null) {
|
||||
if (typeof props !== "object" || props === null) {
|
||||
for (const key in replaceStr) {
|
||||
if (typeof props === 'string') {
|
||||
if (typeof props === "string") {
|
||||
props = props.replace(key, replaceStr[key]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,13 +6,12 @@
|
||||
<el-button type="primary" size="small" @click="changeTabs(0)">匹配政策</el-button>
|
||||
<el-button type="primary" @click="changeTabs(1)" size="small">匹配岗位</el-button>
|
||||
<el-input style="width: 300px; margin-left: 15px" placeholder="搜索岗位" v-show="rightTabs === 1" size="small"
|
||||
prefix-icon="el-icon-search"
|
||||
@input="searchInputChange" v-model="searchInput" clearable>
|
||||
prefix-icon="el-icon-search" @input="searchInputChange" v-model="searchInput" clearable>
|
||||
</el-input>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type="primary" style="width: 80px" size="small" @click="informationPush">
|
||||
推送信息
|
||||
<el-button type="primary" style="width: 110px" size="small" v-show="visibleTip" @click="informationPush">
|
||||
推送温馨提示
|
||||
</el-button>
|
||||
<el-button type="primary" style="width: 80px" size="small" :disabled="pushState" @click="onSubmit">
|
||||
{{ pushState ? '推送中...' : rightTabs ? '推送岗位' : '推送政策' }}
|
||||
@@ -65,11 +64,11 @@ import {
|
||||
pushMsg
|
||||
} from "@/api/tenant/serve.js";
|
||||
import TextTooltip from "@/components/text-tooltip/index.vue";
|
||||
import {debounce} from '@/util/util'
|
||||
import {DateTime} from "@/util/dateTime";
|
||||
import { debounce } from '@/util/util'
|
||||
import { DateTime } from "@/util/dateTime";
|
||||
import CustomLoading from "@/components/Custom-Loading/index.vue";
|
||||
|
||||
const pages = {pagerCount: 3, total: 0, size: 10, currentPage: 1}
|
||||
const pages = { pagerCount: 3, total: 0, size: 10, currentPage: 1 }
|
||||
const baseOptions = {
|
||||
size: 'medium',
|
||||
dateBtn: false,
|
||||
@@ -134,7 +133,7 @@ let rightPostOptions = {
|
||||
]
|
||||
}
|
||||
export default {
|
||||
components: {TextTooltip, CustomLoading},
|
||||
components: { TextTooltip, CustomLoading },
|
||||
data() {
|
||||
return {
|
||||
leftUserSelections: [],
|
||||
@@ -153,9 +152,14 @@ export default {
|
||||
},
|
||||
props: {
|
||||
visible: Boolean,
|
||||
rowData: {default: null, type: Function},
|
||||
phoneItem: {default: {}, type: Object},
|
||||
changeVisible: {default: null, type: Function},
|
||||
rowData: { default: null, type: Function },
|
||||
phoneItem: { default: {}, type: Object },
|
||||
changeVisible: { default: null, type: Function },
|
||||
selectInfo: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
viewDrawer: {
|
||||
@@ -166,6 +170,16 @@ export default {
|
||||
this.$emit("update:visible", val);
|
||||
},
|
||||
},
|
||||
visibleTip: {
|
||||
get() {
|
||||
let name = this.selectInfo ? this.selectInfo.name : null;
|
||||
if (name) name = name.trim()
|
||||
if (['潜在就业困难人员', '潜在登记失业人员'].some(item => item === name)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async informationPush() {
|
||||
@@ -237,7 +251,7 @@ export default {
|
||||
const createTime = Date.now() + 2000
|
||||
let params = {
|
||||
serveId: this.rowData.id,
|
||||
posts: this.rightDataSelections.map((item) => ({id: item.id, type: item.type1, jobName: item.jobName})),
|
||||
posts: this.rightDataSelections.map((item) => ({ id: item.id, type: item.type1, jobName: item.jobName })),
|
||||
users: this.leftUserSelections.map((item) => ({
|
||||
idNumber: item.idNumber,
|
||||
talentsId: item.id,
|
||||
@@ -281,7 +295,7 @@ export default {
|
||||
},
|
||||
async getRightSearch() {
|
||||
this.progress = 0
|
||||
let params = {keywords: this.searchInput || '1'}
|
||||
let params = { keywords: this.searchInput || '1' }
|
||||
const createTime = Date.now() + 4000
|
||||
this.rightLoading = true
|
||||
let resData = await getSearchAll(params)
|
||||
@@ -291,7 +305,7 @@ export default {
|
||||
setTimeout(() => {
|
||||
this.rightLoading = false
|
||||
this.rightDataList = resData.data.data
|
||||
this.rightPages = {total: 10, currentPage: 1}
|
||||
this.rightPages = { total: 10, currentPage: 1 }
|
||||
}, 200)
|
||||
})
|
||||
// const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||
@@ -305,7 +319,7 @@ export default {
|
||||
async getRightListPolicy() {
|
||||
this.searchInput = ''
|
||||
this.progress = 0
|
||||
const {currentPage, size} = this.rightPages
|
||||
const { currentPage, size } = this.rightPages
|
||||
let params = {
|
||||
ids: this.rowData.policyIds,
|
||||
current: currentPage,
|
||||
@@ -318,7 +332,7 @@ export default {
|
||||
// this.setProgress().then(() => {
|
||||
// setTimeout(() => {
|
||||
// this.rightLoading = false
|
||||
this.rightPages = {total: resData.data.data.length, currentPage: 1}
|
||||
this.rightPages = { total: resData.data.data.length, currentPage: 1 }
|
||||
this.rightDataList = resData.data.data
|
||||
// }, 200)
|
||||
// })
|
||||
@@ -331,7 +345,7 @@ export default {
|
||||
async getRightSearchByUserId() {
|
||||
this.progress = 0
|
||||
this.searchInput = ''
|
||||
const {currentPage, size} = this.rightPages
|
||||
const { currentPage, size } = this.rightPages
|
||||
const idNumbers = this.leftUserSelections.map(item => item.idNumber).join(',');
|
||||
const willingJobs = this.leftUserSelections.map(item => item.willingJob);
|
||||
// const createTime = Date.now() + 4000
|
||||
@@ -348,10 +362,10 @@ export default {
|
||||
if (resData.data.code === 200) {
|
||||
this.setProgress().then(() => {
|
||||
setTimeout(() => {
|
||||
const {records, total, size, current} = resData.data.data
|
||||
const { records, total, size, current } = resData.data.data
|
||||
this.rightLoading = false
|
||||
this.rightDataList = records
|
||||
this.rightPages = {total, size, currentPage: current}
|
||||
this.rightPages = { total, size, currentPage: current }
|
||||
}, 200)
|
||||
})
|
||||
// const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||
|
||||
535
src/views/tenant/main/serve/followUpVisit/qzjyknry.vue
Normal file
535
src/views/tenant/main/serve/followUpVisit/qzjyknry.vue
Normal file
@@ -0,0 +1,535 @@
|
||||
<template>
|
||||
<el-dialog title="回访" append-to-body :visible.sync="dialogVisible" width="50%" :rules="rules"
|
||||
:before-close="handlePhoneClose">
|
||||
<el-form :model="phoneForm" label-position="left" label-width="100px">
|
||||
<!-- <div style="margin-bottom: 20px">-->
|
||||
<!-- <div class="phoneListStyle " v-for="phone in phoneList" :key="phone.PHONE">-->
|
||||
<!-- 来源:<span style="color: #3a8ee6">{{ phone.DATASOURCE }} </span> 电话号码: <span-->
|
||||
<!-- style="color: #3a8ee6">{{ phone.PHONE }}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<el-form-item label="联系方式">
|
||||
<el-checkbox-group v-model="phoneForm.list" :min="0" :max="1">
|
||||
<el-checkbox v-for="phone in phoneList" :label="phone" :key="phone">
|
||||
<span>{{ phone.DATASOURCE }}: </span> <span>{{ phone.PHONE }}</span>
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<div style="width: 100%; display: flex;flex-wrap: nowrap; justify-content: space-between;">
|
||||
<div style="flex: 1">
|
||||
<el-form-item label="人工录入">
|
||||
<el-input v-model="phoneForm.phone" :disabled="phoneForm.list.length" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type="danger" style="margin-left: 120px" :disabled="disablePhone" @click="updatePhoneInfo">
|
||||
更改联系方式
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="本人是否有就业意愿" label-width="180px" v-show="fieldVisibility.isWork">
|
||||
<el-radio-group v-model="phoneForm.isWork">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="本人是否需要服务" label-width="180px" v-show="fieldVisibility.isServe">
|
||||
<el-radio-group v-model="phoneForm.isServe">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="本人是否需要培训" label-width="180px" v-show="fieldVisibility.isTrain">
|
||||
<el-radio-group v-model="phoneForm.isTrain">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否退出" label-width="180px" v-show="fieldVisibility.isExit">
|
||||
<el-radio-group v-model="phoneForm.isExit">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否拒绝就业服务" label-width="180px" v-show="fieldVisibility.isReject">
|
||||
<el-radio-group v-model="phoneForm.isReject">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="拒绝服务有无正当理由" label-width="180px" v-show="fieldVisibility.isJustCase">
|
||||
<el-radio-group v-model="phoneForm.isJustCase">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="fieldVisibility.exitReasonTitle" label-width="180px" v-show="fieldVisibility.exitReason">
|
||||
<el-autocomplete style="width: 100%" popper-class="my-autocomplete" v-model="phoneForm.exitReason"
|
||||
:fetch-suggestions="queryExitReason" placeholder="请输入内容" @select="handleSelect" :trigger-on-focus="true"
|
||||
clearable>
|
||||
<i class="el-icon-edit el-input__icon" slot="suffix" @click="handleIconClick">
|
||||
</i>
|
||||
<template slot-scope="{ item }">
|
||||
<div class="name">{{ item }}</div>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="期望薪资" v-show="fieldVisibility.salary">
|
||||
<el-select style="width: 100%" v-model="phoneForm.salary" placeholder="请选择 期望薪资">
|
||||
<el-option :label="item.value" :value="item.value" v-for="item in wageOptionsMonth"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="第一求职意愿" v-show="fieldVisibility.workSkillOne">
|
||||
<el-cascader v-model="phoneForm.workSkillOne" :options="workSkillsOptions"
|
||||
:props="{ label: 'name', value: 'name', children: 'child', emitPath: false }" filterable clearable
|
||||
placeholder="请选择第一求职意愿" style="width: 100%">
|
||||
</el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="第二求职意愿" v-show="fieldVisibility.workSkillTwo">
|
||||
<el-cascader v-model="phoneForm.workSkillTwo" :options="workSkillsOptions"
|
||||
:props="{ label: 'name', value: 'name', children: 'child', emitPath: false }" filterable clearable
|
||||
placeholder="请选择第二求职意愿" style="width: 100%">
|
||||
</el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="就业区县" v-show="fieldVisibility.workPlace">
|
||||
<el-select style="width: 100%" v-model="phoneForm.workPlace" placeholder="请选择就业区县">
|
||||
<el-option :label="item" :value="item" v-for="item in areaOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="拒绝服务理由" label-width="180px" v-show="fieldVisibility.rejectReason">
|
||||
<el-input v-model="phoneForm.rejectReason" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件佐证资料上传" label-width="180px" v-show="fieldVisibility.rejectResonUrl">
|
||||
<el-upload class="upload-demo" :action="uploadAction" :on-preview="handlePreview" :on-remove="handleRemove"
|
||||
:before-remove="beforeRemove" :on-success="handleSuccess" :on-error="handleError" :file-list="fileList"
|
||||
:limit="3" :on-exceed="handleExceed" :before-upload="beforeUpload" :http-request="customUpload" multiple>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">支持pdf、docx、doc、xls、xlsx和图片格式,单个文件不超过10MB</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
|
||||
<el-button @click="handleManagement" v-show="fieldVisibility.regmanage">失业登记管理</el-button>
|
||||
<el-button @click="handleBasicUpdate" v-show="fieldVisibility.PersonalBaseInfo">个人基础信息修改</el-button>
|
||||
<el-button @click="handlePhoneClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handelPhoneConfirm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { phoneUpdate, serveUpdate } from "@/api/tenant/serve";
|
||||
import { getWorkTypes } from "@/api/tenant/common";
|
||||
import {
|
||||
wageOptionsMonth,
|
||||
} from "@/common/dic";
|
||||
import categoryVisibilityRules from './rulesForm'
|
||||
import { putFileUpload } from '@/api/resource/oss.js'
|
||||
|
||||
export default {
|
||||
name: "FollowUpDialog",
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
// 传入的行数据
|
||||
item: {
|
||||
type: Object,
|
||||
default: () => null,
|
||||
},
|
||||
// 传入的当前所选分组ID
|
||||
serveId: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
phoneList: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
workSkillsOptions: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
areaOptions: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
exitReasonOptions: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
selectInfo: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
wageOptionsMonth,
|
||||
phoneForm: {
|
||||
phone: '',
|
||||
list: [],
|
||||
isServe: '',
|
||||
isTrain: '',
|
||||
isWork: '',
|
||||
isReject: '',
|
||||
salary: '',
|
||||
workSkillOne: '',
|
||||
workSkillTwo: '',
|
||||
isExit: '',
|
||||
workPlace: '',
|
||||
exitReason: '',
|
||||
rejectReason: '',
|
||||
rejectResonUrl: '',
|
||||
isJustCase: '',
|
||||
},
|
||||
inputDisplays: [],
|
||||
// 文件上传相关数据
|
||||
fileList: [],
|
||||
uploadAction: '', // 上传地址
|
||||
uploadLoading: false,
|
||||
rules: {
|
||||
isServe: [
|
||||
{ required: false, message: '请选择是否服务', trigger: 'change' }
|
||||
],
|
||||
isTrain: [
|
||||
{ required: false, message: '请选择是否培训', trigger: 'change' }
|
||||
],
|
||||
isWork: [
|
||||
{ required: false, message: '请选择是否有就业意愿', trigger: 'change' }
|
||||
],
|
||||
salary: [
|
||||
{ required: false, message: '请选择期望薪资', trigger: 'change' }
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
dialogVisible: {
|
||||
get() {
|
||||
return this.visible;
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('update:visible', val);
|
||||
}
|
||||
},
|
||||
fieldVisibility() {
|
||||
let name = this.selectInfo ? this.selectInfo.name : null;
|
||||
if (name) name = name.trim()
|
||||
const strategyFn = categoryVisibilityRules[name] || categoryVisibilityRules.default;
|
||||
return strategyFn(this.phoneForm);
|
||||
},
|
||||
disablePhone() {
|
||||
const val = this.phoneForm.list[0] || null
|
||||
if (val && val.DATATYPE === '1') return true
|
||||
return false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
visible(newVal) {
|
||||
if (newVal) {
|
||||
this.setFormDefaults();
|
||||
} else {
|
||||
this.resetForm();
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
queryExitReason(queryString, cb) {
|
||||
var restaurants = this.exitReasonOptions;
|
||||
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
|
||||
cb(results);
|
||||
},
|
||||
createFilter(queryString) {
|
||||
const lowerQuery = queryString.toLowerCase();
|
||||
return (restaurant) => {
|
||||
if (typeof restaurant !== 'string') {
|
||||
return false;
|
||||
}
|
||||
return restaurant.toLowerCase().includes(lowerQuery);
|
||||
};
|
||||
},
|
||||
handleSelect(item) {
|
||||
this.phoneForm.exitReason = item;
|
||||
},
|
||||
handleIconClick(ev) {
|
||||
// 点击图标时清空输入框
|
||||
this.phoneForm.exitReason = '';
|
||||
this.$nextTick(() => {
|
||||
// 获取输入框元素并聚焦
|
||||
const input = this.$el.querySelector('.my-autocomplete input');
|
||||
if (input) {
|
||||
input.focus();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 文件上传相关方法
|
||||
// 自定义上传方法
|
||||
async customUpload(options) {
|
||||
const { file, onProgress, onSuccess, onError } = options;
|
||||
|
||||
try {
|
||||
this.uploadLoading = true;
|
||||
|
||||
// 使用 putFileUpload 函数进行上传
|
||||
const response = await putFileUpload(file, '3', (progressEvent) => {
|
||||
const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
|
||||
onProgress({ percent });
|
||||
});
|
||||
|
||||
if (response.data && response.data.code === 200) {
|
||||
// 上传成功
|
||||
const fileUrl = response.data.msg; // 假设返回的是文件URL
|
||||
|
||||
// 更新多文件URL(用逗号隔开)
|
||||
const currentUrls = this.phoneForm.rejectResonUrl ? this.phoneForm.rejectResonUrl.split(',').filter(url => url.trim()) : [];
|
||||
currentUrls.push(fileUrl);
|
||||
this.phoneForm.rejectResonUrl = currentUrls.join(',');
|
||||
|
||||
// 添加到文件列表
|
||||
this.fileList.push({
|
||||
name: file.name,
|
||||
url: fileUrl,
|
||||
status: 'success'
|
||||
});
|
||||
|
||||
onSuccess(response.data);
|
||||
this.$message.success('文件上传成功');
|
||||
} else {
|
||||
throw new Error('上传失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('文件上传失败:', error);
|
||||
onError(error);
|
||||
this.$message.error('文件上传失败: ' + (error.message || '未知错误'));
|
||||
} finally {
|
||||
this.uploadLoading = false;
|
||||
}
|
||||
},
|
||||
|
||||
// 文件上传前验证
|
||||
beforeUpload(file) {
|
||||
const allowedTypes = [
|
||||
'application/pdf',
|
||||
'application/msword',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'application/vnd.ms-excel',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'image/jpeg',
|
||||
'image/jpg',
|
||||
'image/png',
|
||||
'image/gif',
|
||||
'image/bmp'
|
||||
];
|
||||
|
||||
const isAllowedType = allowedTypes.includes(file.type);
|
||||
const isLt10M = file.size / 1024 / 1024 < 10;
|
||||
|
||||
if (!isAllowedType) {
|
||||
this.$message.error('只能上传pdf、doc、docx、xls、xlsx和图片格式的文件!');
|
||||
return false;
|
||||
}
|
||||
if (!isLt10M) {
|
||||
this.$message.error('文件大小不能超过 10MB!');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// 文件预览
|
||||
handlePreview(file) {
|
||||
if (file.url) {
|
||||
window.open(file.url, '_blank');
|
||||
}
|
||||
},
|
||||
|
||||
// 文件移除
|
||||
handleRemove(file, fileList) {
|
||||
this.fileList = fileList;
|
||||
|
||||
// 更新多文件URL(移除对应的URL)
|
||||
const currentUrls = this.phoneForm.rejectResonUrl ? this.phoneForm.rejectResonUrl.split(',').filter(url => url.trim()) : [];
|
||||
const updatedUrls = currentUrls.filter(url => url !== file.url);
|
||||
this.phoneForm.rejectResonUrl = updatedUrls.join(',');
|
||||
},
|
||||
|
||||
// 移除前确认
|
||||
beforeRemove(file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`);
|
||||
},
|
||||
|
||||
// 上传成功
|
||||
handleSuccess(response, file, fileList) {
|
||||
this.fileList = fileList;
|
||||
},
|
||||
|
||||
// 上传失败
|
||||
handleError(err, file, fileList) {
|
||||
this.fileList = fileList;
|
||||
this.$message.error('文件上传失败');
|
||||
},
|
||||
|
||||
// 超出文件限制
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
|
||||
},
|
||||
async updatePhoneInfo() {
|
||||
let _this = this;
|
||||
let params = {
|
||||
idNumber: _this.item.idNumber,
|
||||
serveId: _this.serveId,
|
||||
serveUserId: _this.item.serveUserId,
|
||||
}
|
||||
if (/^1[3-9]{1}\d{9}/.test(this.phoneForm.phone)) params.phone = this.phoneForm.phone;
|
||||
if (params.phone) {
|
||||
this.$confirm(`请同步更改省就业3.0系统中的人员联系方式`, {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(async (res) => {
|
||||
const resData = await phoneUpdate(params)
|
||||
if (resData.data.code === 200) {
|
||||
_this.$message.success("更新成功");
|
||||
_this.handlePhoneClose();
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
} else {
|
||||
this.$message.error("请选择或输入用户手机号!");
|
||||
}
|
||||
},
|
||||
setFormDefaults() {
|
||||
if (this.item) {
|
||||
this.phoneForm.isServe = this.item.isServe || '';
|
||||
this.phoneForm.isTrain = this.item.isTrain || '';
|
||||
this.phoneForm.isWork = this.item.isWork || '';
|
||||
this.phoneForm.salary = this.item.isalary || '';
|
||||
this.phoneForm.workSkillOne = this.item.workSkillOne || '';
|
||||
this.phoneForm.workSkillTwo = this.item.workSkillTwo || '';
|
||||
this.phoneForm.workPlace = this.item.workPlace || '';
|
||||
this.phoneForm.exitReason = this.item.exitReason || '';
|
||||
this.phoneForm.isExit = this.item.isExit || '';
|
||||
this.phoneForm.isReject = this.item.isReject || '';
|
||||
this.phoneForm.rejectReason = this.item.rejectReason || '';
|
||||
this.phoneForm.rejectResonUrl = this.item.rejectResonUrl || '';
|
||||
this.phoneForm.isJustCase = this.item.isJustCase || '';
|
||||
|
||||
// 初始化文件列表(如果已有文件URL)
|
||||
if (this.item.rejectResonUrl) {
|
||||
const urls = this.item.rejectResonUrl.split(',').filter(url => url.trim());
|
||||
this.fileList = urls.map((url, index) => ({
|
||||
name: `文件${index + 1}`,
|
||||
url: url,
|
||||
status: 'success'
|
||||
}));
|
||||
}
|
||||
}
|
||||
},
|
||||
handleBasicUpdate() {
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
},
|
||||
handleManagement() {
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
},
|
||||
handelJobIntention() {
|
||||
this.$message({ type: "info", message: "功能未配置" });
|
||||
},
|
||||
async handelPhoneConfirm() {
|
||||
const name = this.selectInfo ? this.selectInfo.name : null;
|
||||
let _this = this;
|
||||
let text = '请确认信息'
|
||||
// 麻烦的来了
|
||||
switch (true) {
|
||||
case name === '潜在就业困难人员' && this.phoneForm.isWork === 0:
|
||||
text = '请到 就业3.0 中注销该人员的失业登记信息'
|
||||
break
|
||||
case name === '潜在的就业困难退出人员' && this.phoneForm.isExit === 1:
|
||||
text = '请到 就业3.0 中注销该人员的就业登记困难人员登记信息'
|
||||
break
|
||||
}
|
||||
this.$confirm(text, {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(async () => {
|
||||
let params = {
|
||||
idNumber: _this.item.idNumber,
|
||||
serveId: _this.serveId, // 使用 prop
|
||||
serveUserId: _this.item.serveUserId, // 使用 prop
|
||||
isServe: _this.phoneForm.isServe,
|
||||
isTrain: _this.phoneForm.isTrain,
|
||||
isExit: _this.phoneForm.isExit,
|
||||
isWork: _this.phoneForm.isWork,
|
||||
salary: _this.phoneForm.salary,
|
||||
workSkillOne: _this.phoneForm.workSkillOne,
|
||||
workSkillTwo: _this.phoneForm.workSkillTwo,
|
||||
workPlace: _this.phoneForm.workPlace,
|
||||
exitReason: _this.phoneForm.exitReason,
|
||||
isReject: _this.phoneForm.isReject,
|
||||
rejectReason: _this.phoneForm.rejectReason,
|
||||
rejectResonUrl: _this.phoneForm.rejectResonUrl,
|
||||
isJustCase: _this.phoneForm.isJustCase
|
||||
}
|
||||
let resData = await serveUpdate(params)
|
||||
if (resData.data.code === 200) {
|
||||
_this.$message.success("更新成功");
|
||||
switch (true) {
|
||||
case name === '潜在就业困难人员' && _this.phoneForm.isWork === 0:
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
break
|
||||
case name === '潜在的就业困难退出人员' && _this.phoneForm.isExit === 1:
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
break
|
||||
}
|
||||
_this.handlePhoneClose(); // 关闭弹窗
|
||||
_this.$emit('curdUpdate');
|
||||
|
||||
}
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
resetForm() {
|
||||
this.phoneForm.phone = '';
|
||||
this.phoneForm.list = [];
|
||||
this.phoneForm.isServe = '';
|
||||
this.phoneForm.isTrain = '';
|
||||
this.phoneForm.isWork = '';
|
||||
this.phoneForm.workPlace = '';
|
||||
this.phoneForm.exitReason = '';
|
||||
this.phoneForm.salary = '';
|
||||
this.phoneForm.isExit = '';
|
||||
this.phoneForm.workSkillOne = '';
|
||||
this.phoneForm.workSkillTwo = '';
|
||||
this.phoneForm.isReject = '';
|
||||
this.phoneList = [];
|
||||
this.phoneForm.rejectReason = '';
|
||||
this.phoneForm.rejectResonUrl = '';
|
||||
this.phoneForm.isJustCase = '';
|
||||
|
||||
// 清理文件上传列表
|
||||
this.fileList = [];
|
||||
this.uploadLoading = false;
|
||||
},
|
||||
handlePhoneClose() {
|
||||
this.resetForm();
|
||||
this.dialogVisible = false; // 这将触发 .sync 更新
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.phoneListStyle {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
</style>
|
||||
121
src/views/tenant/main/serve/followUpVisit/rulesForm.js
Normal file
121
src/views/tenant/main/serve/followUpVisit/rulesForm.js
Normal file
@@ -0,0 +1,121 @@
|
||||
const allFieldsHidden = {
|
||||
isServe: false, // 本人是否需要服务
|
||||
isTrain: false, //本人是否需要培训
|
||||
isWork: false, // 本人是否有就业意愿
|
||||
isReject: false, // 是否拒绝就业服务
|
||||
isJustCase: false, // 拒绝服务有无正当理由
|
||||
salary: false, // 期望薪资
|
||||
isExit: false, // 是否要退出
|
||||
workSkillOne: false, // 第一求职意愿
|
||||
workSkillTwo: false, // 第二求职意愿
|
||||
workPlace: false, // 就业区县
|
||||
exitReason: false, // 不退出原因
|
||||
exitReasonTitle: "不退出原因",
|
||||
rejectReason: false, // 拒绝服务理由
|
||||
rejectResonUrl: false, // 文件佐证资料上传
|
||||
regmanage: false, // 失业登记管理<按钮>
|
||||
PersonalBaseInfo: false // 个人基础信息修改<按钮>
|
||||
};
|
||||
|
||||
const categoryVisibilityRules = {
|
||||
潜在可享受职业培训政策人员: form => {
|
||||
const showTrain = form.isServe === 1; // 联动规则
|
||||
// 需要先全部隐藏,再打开需要的
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isServe: true,
|
||||
regmanage: true,
|
||||
PersonalBaseInfo: true,
|
||||
isTrain: showTrain
|
||||
};
|
||||
},
|
||||
|
||||
潜在登记失业人员: form => {
|
||||
const showServe = form.isWork === 1;
|
||||
const showTrain = showServe && form.isServe === 1;
|
||||
// const showInpute = showTrain && form.isTrain === 1;
|
||||
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isServe: showServe,
|
||||
isTrain: showTrain,
|
||||
isWork: true,
|
||||
PersonalBaseInfo: false,
|
||||
salary: showTrain,
|
||||
workSkillOne: showTrain,
|
||||
workSkillTwo: showTrain,
|
||||
workPlace: showTrain
|
||||
};
|
||||
},
|
||||
|
||||
潜在的就业困难退出人员: form => {
|
||||
const showExitReason = form.isExit === 0;
|
||||
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isExit: true,
|
||||
exitReason: showExitReason,
|
||||
exitReasonTitle: "是否应退出就业困难人群"
|
||||
};
|
||||
},
|
||||
|
||||
潜在返乡未就业农村劳动力: form => {
|
||||
const showServe = form.isWork === 1;
|
||||
const showTrain = showServe && form.isServe === 1;
|
||||
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isServe: showServe,
|
||||
isTrain: showTrain,
|
||||
isWork: true,
|
||||
PersonalBaseInfo: true,
|
||||
salary: showTrain,
|
||||
workSkillOne: showTrain,
|
||||
workSkillTwo: showTrain,
|
||||
workPlace: showTrain
|
||||
};
|
||||
},
|
||||
|
||||
潜在就业困难人员: form => {
|
||||
const showServe = form.isWork === 1;
|
||||
const showTrain = showServe && form.isServe === 1;
|
||||
// const showInpute = showTrain && form.isTrain === 1;
|
||||
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isServe: showServe,
|
||||
isTrain: showTrain,
|
||||
isWork: true,
|
||||
PersonalBaseInfo: false,
|
||||
salary: showTrain,
|
||||
workSkillOne: showTrain,
|
||||
workSkillTwo: showTrain,
|
||||
workPlace: showTrain
|
||||
};
|
||||
},
|
||||
|
||||
潜在就业见习申请人员: form => {
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isServe: true
|
||||
};
|
||||
},
|
||||
|
||||
领取失业补助金人员: form => {
|
||||
const showReason = form.isReject === 1;
|
||||
|
||||
return {
|
||||
...allFieldsHidden,
|
||||
isReject: true,
|
||||
isJustCase: showReason,
|
||||
rejectReason: showReason,
|
||||
rejectResonUrl: showReason
|
||||
};
|
||||
},
|
||||
|
||||
default: () => {
|
||||
return allFieldsHidden;
|
||||
}
|
||||
};
|
||||
|
||||
export default categoryVisibilityRules;
|
||||
@@ -7,15 +7,14 @@
|
||||
<div>服务分组管理</div>
|
||||
<div>
|
||||
<el-button type="text" icon="el-icon-plus"
|
||||
v-if="vaildData(permission.tenant_main_serve_index_groupadd, false)"
|
||||
@click="updateGroups('add')">新建分组
|
||||
v-if="vaildData(permission.tenant_main_serve_index_groupadd, false)" @click="updateGroups('add')">新建分组
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box" :style="{height: leftHeight}">
|
||||
<div class="box" :style="{ height: leftHeight }">
|
||||
<el-scrollbar style="height: 100%">
|
||||
<el-tree ref="tree" node-key="id" highlight-current @node-click="nodeClick"
|
||||
:default-expand-all="true" :data="treeData" :props="{ label: 'groupName', id: 'id'}">
|
||||
<el-tree ref="tree" node-key="id" highlight-current @node-click="nodeClick" :default-expand-all="true"
|
||||
:data="treeData" :props="{ label: 'groupName', id: 'id' }">
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }" style="width: 80%">
|
||||
<span style="
|
||||
flex-basis: 80%;
|
||||
@@ -44,18 +43,9 @@
|
||||
</el-col>
|
||||
<el-col :span="18">
|
||||
<basic-container>
|
||||
<avue-crud
|
||||
v-model="obj"
|
||||
ref="crud"
|
||||
:data="dataSource"
|
||||
:option="option"
|
||||
:search.sync="query"
|
||||
:page.sync="page"
|
||||
:table-loading="loading"
|
||||
@search-change="serveSearchChange"
|
||||
@search-reset="serveResetChange"
|
||||
@size-change="infoSizeChange"
|
||||
@current-change="infoCurrentChange">
|
||||
<avue-crud v-model="obj" ref="crud" :data="dataSource" :option="option" :search.sync="query" :page.sync="page"
|
||||
:table-loading="loading" @search-change="serveSearchChange" @search-reset="serveResetChange"
|
||||
@size-change="infoSizeChange" @current-change="infoCurrentChange">
|
||||
<!-- <template slot="menuLeft">-->
|
||||
<!-- <el-button type="primary" size="small" @click="selectPushService">推送服务</el-button>-->
|
||||
<!-- </template>-->
|
||||
@@ -72,23 +62,11 @@
|
||||
<!-- @click="matchPolicy(row)"-->
|
||||
<!-- >查看匹配政策-->
|
||||
<!-- </el-button>-->
|
||||
<el-button type="text"
|
||||
icon="el-icon-document"
|
||||
size="small"
|
||||
@click="phoneDataList(row)"
|
||||
>回访
|
||||
<el-button type="text" icon="el-icon-document" size="small" @click="phoneDataList(row)">回访
|
||||
</el-button>
|
||||
<el-button type="text"
|
||||
icon="el-icon-document"
|
||||
size="small"
|
||||
@click="selectPushUserService(row)"
|
||||
>推送服务
|
||||
<el-button type="text" icon="el-icon-document" size="small" @click="selectPushUserService(row)">推送服务
|
||||
</el-button>
|
||||
<el-button type="text"
|
||||
icon="el-icon-document"
|
||||
size="small"
|
||||
@click="serveLog(row)"
|
||||
>管理服务日志
|
||||
<el-button type="text" icon="el-icon-document" size="small" @click="serveLog(row)">管理服务日志
|
||||
</el-button>
|
||||
</template>
|
||||
</avue-crud>
|
||||
@@ -96,50 +74,28 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 匹配任务/岗位 -->
|
||||
<el-drawer
|
||||
title="匹配任务/岗位"
|
||||
size="80%"
|
||||
:append-to-body="true"
|
||||
:before-close="() => innerDrawer1 = false"
|
||||
<el-drawer title="匹配任务/岗位" size="80%" :append-to-body="true" :before-close="() => innerDrawer1 = false"
|
||||
:visible.sync="innerDrawer1">
|
||||
<avue-crud
|
||||
:data="workData"
|
||||
:option="workOption"
|
||||
:page.sync="workPage"
|
||||
@size-change="workSizeChange"
|
||||
@current-change="workCurrentChange"
|
||||
>
|
||||
<avue-crud :data="workData" :option="workOption" :page.sync="workPage" @size-change="workSizeChange"
|
||||
@current-change="workCurrentChange">
|
||||
<template slot="missionDesc" slot-scope="{ row }">
|
||||
<TextTooltip :content="row.missionDesc"></TextTooltip>
|
||||
</template>
|
||||
<template slot-scope="{row,index}" slot="menu">
|
||||
<el-button type="text"
|
||||
icon="el-icon-document"
|
||||
size="small"
|
||||
@click="toWorkMissionDetail(row)"
|
||||
>查看详情
|
||||
<el-button type="text" icon="el-icon-document" size="small" @click="toWorkMissionDetail(row)">查看详情
|
||||
</el-button>
|
||||
</template>
|
||||
</avue-crud>
|
||||
</el-drawer>
|
||||
<!-- 匹配政策-->
|
||||
<el-drawer
|
||||
title="匹配政策"
|
||||
size="80%"
|
||||
:append-to-body="true"
|
||||
:before-close="() => innerDrawer2 = false"
|
||||
<el-drawer title="匹配政策" size="80%" :append-to-body="true" :before-close="() => innerDrawer2 = false"
|
||||
:visible.sync="innerDrawer2">
|
||||
<avue-crud
|
||||
:data="policyData"
|
||||
:option="policyOption"
|
||||
:page.sync="policyPage"
|
||||
@size-change="policySizeChange"
|
||||
@current-change="policyCurrentChange"
|
||||
>
|
||||
<avue-crud :data="policyData" :option="policyOption" :page.sync="policyPage" @size-change="policySizeChange"
|
||||
@current-change="policyCurrentChange">
|
||||
<template slot="policyContent" slot-scope="{ row }">
|
||||
<el-tooltip class="item" effect="dark" placement="top-start">
|
||||
<div slot="content">
|
||||
<div v-for="(item, index) in clipStr(row.policyContent)" :key="index">
|
||||
<div v-for="(item, index) in clipStr(row.policyContent)" :key="index2">
|
||||
<div>{{ item }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -149,7 +105,7 @@
|
||||
<template slot="labelName" slot-scope="{ row }">
|
||||
<el-tooltip class="item" effect="dark" placement="top-start">
|
||||
<div slot="content">
|
||||
<div v-for="(item, index) in clipStr(row.labelName)" :key="index">
|
||||
<div v-for="(item, index) in clipStr(row.labelName)" :key="index2">
|
||||
<div>{{ item }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,7 +114,7 @@
|
||||
</template>
|
||||
<template slot="labelNameForm" slot-scope="{row}">
|
||||
<div>
|
||||
<el-tag style="margin: 4px 10px" v-for="(item, index) in row.labelName.split(',')" :key="index">{{
|
||||
<el-tag style="margin: 4px 10px" v-for="(item, index) in row.labelName.split(',')" :key="index2">{{
|
||||
item
|
||||
}}
|
||||
</el-tag>
|
||||
@@ -179,27 +135,15 @@
|
||||
</avue-crud>
|
||||
</el-drawer>
|
||||
<!-- 服务日志-->
|
||||
<el-drawer
|
||||
title="服务日志"
|
||||
size="80%"
|
||||
:append-to-body="true"
|
||||
:before-close="() => innerDrawer3 = false"
|
||||
<el-drawer title="服务日志" size="80%" :append-to-body="true" :before-close="() => innerDrawer3 = false"
|
||||
:visible.sync="innerDrawer3">
|
||||
<!-- <div>
|
||||
<span>姓名:</span>
|
||||
<span>身份证号:</span>
|
||||
</div> -->
|
||||
<avue-crud
|
||||
:data="logData"
|
||||
:option="logOption"
|
||||
@row-save="saveLog"
|
||||
@row-update="saveUpdateLog"
|
||||
@row-del="removeLog"
|
||||
:page.sync="logPage"
|
||||
@size-change="logSizeChange"
|
||||
@current-change="logCurrentChange"
|
||||
ref="logCrud"
|
||||
>
|
||||
<avue-crud :data="logData" :option="logOption" @row-save="saveLog" @row-update="saveUpdateLog"
|
||||
@row-del="removeLog" :page.sync="logPage" @size-change="logSizeChange" @current-change="logCurrentChange"
|
||||
ref="logCrud">
|
||||
<!-- <template slot="menuLeft">
|
||||
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
|
||||
</template>
|
||||
@@ -209,67 +153,28 @@
|
||||
</template> -->
|
||||
<template slot-scope="{row,index}" slot="menu">
|
||||
<el-button type="text" icon="el-icon-edit" size="small"
|
||||
v-if="row.serveTheme !== '人工推送岗位' && row.serveTheme !== '人工推送政策'"
|
||||
@click="$refs.logCrud.rowEdit(row, index)"
|
||||
>编辑
|
||||
v-if="row.serveTheme !== '人工推送岗位' && row.serveTheme !== '人工推送政策'" v-show="row.serveName === '手工录入服务日志'"
|
||||
@click="$refs.logCrud.rowEdit(row, index2)">编辑
|
||||
</el-button>
|
||||
<el-button type="text" icon="el-icon-edit" size="small" v-show="row.serveName === '手工录入服务日志'"
|
||||
@click="$refs.logCrud.rowDel(row, index2)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</avue-crud>
|
||||
</el-drawer>
|
||||
<!--新建 编辑分组dialog-->
|
||||
<add-groups ref="addGroups" @refresh="refresh" :listAllPolicyTree="listAllPolicyTree"
|
||||
:treeData="treeData" :data="worktypeData" :worktypeDic="worktypeDic"
|
||||
:talentsList="talentsList"></add-groups>
|
||||
<PushService
|
||||
:visible.sync="PushServiceVisible"
|
||||
:rowData="selectPushServiceData"
|
||||
:phoneItem="phoneItem"
|
||||
ref="pushRef"
|
||||
></PushService>
|
||||
<add-groups ref="addGroups" @refresh="refresh" :listAllPolicyTree="listAllPolicyTree" :treeData="treeData"
|
||||
:data="worktypeData" :worktypeDic="worktypeDic" :talentsList="talentsList"></add-groups>
|
||||
<PushService :visible.sync="PushServiceVisible" :rowData="selectPushServiceData" :phoneItem="phoneItem"
|
||||
:selectInfo="selectInfo" ref="pushRef"></PushService>
|
||||
|
||||
<mission-view :visible.sync="viewDrawer" :model="view"></mission-view>
|
||||
|
||||
<work-view :visible.sync="workViewDrawer" :model="workViewModel"></work-view>
|
||||
|
||||
<el-dialog
|
||||
title="回访"
|
||||
append-to-body
|
||||
:visible.sync="phoneDialogVisible"
|
||||
width="40%"
|
||||
:rules="rules"
|
||||
:before-close="handlePhoneClose">
|
||||
<el-form :model="phoneForm" label-position="top" label-width="100px">
|
||||
<el-form-item label="验证手机号">
|
||||
<el-checkbox-group
|
||||
v-model="phoneForm.list"
|
||||
:min="0"
|
||||
:max="1">
|
||||
<el-checkbox v-for="phone in phoneList" :label="phone" :key="phone">{{ phone }}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="输入手机号">-->
|
||||
<!-- <el-input v-model="phoneForm.phone" :disabled="phoneForm.list.length" autocomplete="off"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="是否服务">
|
||||
<el-radio-group v-model="phoneForm.isServe">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否培训" v-show="phoneForm.isServe">
|
||||
<el-radio-group v-model="phoneForm.isTrain">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleBasicUpdate">个人基础信息修改</el-button>
|
||||
<!-- <el-button @click="handelJobIntention">求职意愿修改</el-button>-->
|
||||
<el-button @click="handlePhoneClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handelPhoneConfirm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<FollowUpDialog :visible.sync="phoneDialogVisible" :item="phoneItem" :serveId="selectInfo ? selectInfo.id : null"
|
||||
:phoneList="phoneList" :workSkillsOptions="workSkillsOptions" :areaOptions="areaOptions" :selectInfo="selectInfo"
|
||||
:exitReasonOptions="exitReasonOptions" @curdUpdate="callbackPopup" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -281,17 +186,18 @@ import {
|
||||
getListAllPolicy,
|
||||
getListAllTalents, getMatchPolicy, getMatchServeList, getMatchWorkStation,
|
||||
getServeListTalents,
|
||||
removeDept, removeServeLog, updateServeLog, getPhoneList, phoneUpdate
|
||||
removeDept, removeServeLog, updateServeLog, getPhoneList, serveRegion, serveExitReason
|
||||
} from "@/api/tenant/serve";
|
||||
import {mapGetters} from "vuex";
|
||||
import { mapGetters } from "vuex";
|
||||
import addGroups from "./Dialog/addGroup";
|
||||
import {getLabelList} from "@/api/tenant/common";
|
||||
import { getLabelList, getWorkTypes } from "@/api/tenant/common";
|
||||
import missionView from "../../mission/Table/missionView.vue";
|
||||
import workView from "../../works/Table/missionView.vue"
|
||||
import TextTooltip from "@/components/text-tooltip/index.vue";
|
||||
import {serviceType} from "@/common/dic";
|
||||
import { serveTypeOptions, serviceType } from "@/common/dic";
|
||||
import PushService from './Dialog/pushService2.vue'
|
||||
import {getDeptMyTree} from "@/api/tenant/talents";
|
||||
import { getDeptMyTree } from "@/api/tenant/talents";
|
||||
import FollowUpDialog from "@/views/tenant/main/serve/followUpVisit/qzjyknry.vue";
|
||||
|
||||
const page = {
|
||||
size: 10,
|
||||
@@ -299,11 +205,16 @@ const page = {
|
||||
total: 0,
|
||||
}
|
||||
export default {
|
||||
components: {addGroups, missionView, workView, TextTooltip, PushService},
|
||||
components: { FollowUpDialog, addGroups, missionView, workView, TextTooltip, PushService },
|
||||
data() {
|
||||
return {
|
||||
exitReasonOptions: [],
|
||||
arr: [],
|
||||
worktypeDic: {},
|
||||
arr_2: [],
|
||||
worktypeDic_2: {},
|
||||
workSkillsOptions: [],
|
||||
areaOptions: [],
|
||||
treeData: [],
|
||||
loading: false,
|
||||
tenantId: null,
|
||||
@@ -337,20 +248,30 @@ export default {
|
||||
list: [],
|
||||
isServe: 0,
|
||||
isTrain: 0,
|
||||
isWork: 1,
|
||||
salary: 4000,
|
||||
workSkillOne: '',
|
||||
workSkillTwo: '',
|
||||
},
|
||||
phoneItem: null,
|
||||
depTree: [],
|
||||
rules: {
|
||||
isServe: [
|
||||
{required: true, message: '请选择是否服务', trigger: 'change'}
|
||||
{ required: true, message: '请选择是否服务', trigger: 'change' }
|
||||
],
|
||||
isTrain: [
|
||||
{required: true, message: '请选择是否培训', trigger: 'change'}
|
||||
{ required: true, message: '请选择是否培训', trigger: 'change' }
|
||||
],
|
||||
isWork: [
|
||||
{ required: true, message: '请选择是否有就业意愿', trigger: 'change' }
|
||||
],
|
||||
salary: [
|
||||
{ required: true, message: '请选择期望薪资', trigger: 'change' }
|
||||
],
|
||||
},
|
||||
logOption: {
|
||||
editBtn: false,
|
||||
delBtn: true,
|
||||
delBtn: false,
|
||||
addBtn: true,
|
||||
viewBtn: true,
|
||||
border: true,
|
||||
@@ -388,12 +309,7 @@ export default {
|
||||
label: '服务类型',
|
||||
prop: 'serveType',
|
||||
type: 'select',
|
||||
dicData: [
|
||||
{label: '普通日志', value: 0},
|
||||
{label: '回访日志', value: 1},
|
||||
{label: '推送岗位日志', value: 2},
|
||||
{label: '推送政策日志', value: 3},
|
||||
],
|
||||
dicData: serveTypeOptions,
|
||||
display: false,
|
||||
}, {
|
||||
label: '服务主题',
|
||||
@@ -452,7 +368,7 @@ export default {
|
||||
for (let j = 0; j < this.arr.length; j++) {
|
||||
const key = this.arr[j];
|
||||
if (this.worktypeDic.hasOwnProperty(key)) {
|
||||
rel.push({name: key})
|
||||
rel.push({ name: key })
|
||||
}
|
||||
}
|
||||
// for (let i = 0; i < this.tempWorkType.length; i++) {
|
||||
@@ -509,9 +425,30 @@ export default {
|
||||
searchLabelWidth: 100,
|
||||
searchSpan: 8,
|
||||
},
|
||||
// {
|
||||
// label: '专业',
|
||||
// prop: 'aac183Major'
|
||||
// },
|
||||
{
|
||||
label: '专业',
|
||||
prop: 'aac183Major'
|
||||
label: '性别',
|
||||
prop: 'aac004',
|
||||
type: 'select',
|
||||
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
|
||||
props: {
|
||||
label: "dictValue",
|
||||
value: "dictKey",
|
||||
},
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入性别",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: '常驻地址',
|
||||
prop: 'residentAddress',
|
||||
},
|
||||
{
|
||||
label: "毕业年份",
|
||||
@@ -545,25 +482,48 @@ export default {
|
||||
prop: 'aac010'
|
||||
},
|
||||
{
|
||||
label: "政策推送次数",
|
||||
prop: "servePolicyCount",
|
||||
searchType: 'number',
|
||||
search: unemployedCollegeStudents,
|
||||
searchLabelWidth: 100,
|
||||
searchSpan: 8,
|
||||
label: "最小服务次数",
|
||||
prop: "serveCountDown", // 后端对应的【最小】次数查询字段
|
||||
type: "number",
|
||||
search: true,
|
||||
hide: true, // 不在列表中展示
|
||||
display: false, // 不在表单中展示
|
||||
searchSpan: 8, // 栅格占 4 (两个加起来是 8)
|
||||
searchLabelWidth: 80,
|
||||
},
|
||||
{
|
||||
label: "岗位服务次数",
|
||||
prop: "serveCount",
|
||||
searchType: 'number',
|
||||
search: unemployedCollegeStudents,
|
||||
searchLabelWidth: 100,
|
||||
searchSpan: 8,
|
||||
label: "最大服务次数",
|
||||
prop: "serveCountUp", // 后端对应的【最大】次数查询字段
|
||||
type: "number",
|
||||
search: true,
|
||||
hide: true,
|
||||
display: false,
|
||||
searchSpan: 8, // 栅格占 4
|
||||
searchLabelWidth: 80,
|
||||
},
|
||||
// {
|
||||
// label: "政策推送次数",
|
||||
// prop: "servePolicyCount",
|
||||
// searchType: 'number',
|
||||
// search: unemployedCollegeStudents,
|
||||
// searchLabelWidth: 100,
|
||||
// searchSpan: 8,
|
||||
// },
|
||||
// {
|
||||
// label: "岗位服务次数",
|
||||
// prop: "serveCount",
|
||||
// searchType: 'number',
|
||||
// search: unemployedCollegeStudents,
|
||||
// searchLabelWidth: 100,
|
||||
// searchSpan: 8,
|
||||
// },
|
||||
{
|
||||
label: "服务次数",
|
||||
prop: "serveTotalCount",
|
||||
},
|
||||
{
|
||||
label: "识别原因",
|
||||
prop: "labelsBase",
|
||||
width: 100,
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -638,7 +598,7 @@ export default {
|
||||
span: 12,
|
||||
hide: true,
|
||||
display: true,
|
||||
dicData: [{name: "有效", value: 1}, {name: "无效", value: 0}],
|
||||
dicData: [{ name: "有效", value: 1 }, { name: "无效", value: 0 }],
|
||||
props: {
|
||||
label: "name",
|
||||
value: "value",
|
||||
@@ -739,19 +699,6 @@ export default {
|
||||
this.getDept()
|
||||
},
|
||||
methods: {
|
||||
// rowStyle(column) {
|
||||
// if (column.row.serveTheme === '人工推送岗位' || column.row.serveTheme === '人工推送政策') {
|
||||
// this.logOption.editBtn = true
|
||||
// } else {
|
||||
// this.logOption.editBtn = false
|
||||
// }
|
||||
// },
|
||||
handleBasicUpdate() {
|
||||
window.open('http://10.160.7.100:8000/jyback/template/general.html#/generalPage?_modulePartId_=1000076072', '_blank');
|
||||
},
|
||||
handelJobIntention() {
|
||||
this.$message({type: "info", message: "功能未配置"});
|
||||
},
|
||||
async getDept() {
|
||||
let params = {
|
||||
tenantId: '000000'
|
||||
@@ -771,56 +718,63 @@ export default {
|
||||
})
|
||||
})
|
||||
},
|
||||
handelPhoneConfirm() {
|
||||
let _this = this
|
||||
let phone = ''
|
||||
if (this.phoneForm.list.length) phone = this.phoneForm.list[0];
|
||||
// if (/^1[3-9]{1}\d{9}/.test(this.phoneForm.phone)) phone = this.phoneForm.phone;
|
||||
if (phone) {
|
||||
this.$confirm(`手机号为:${phone}`, {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(async (res) => {
|
||||
let params = {
|
||||
idNumber: _this.phoneItem.idNumber,
|
||||
phone,
|
||||
serveId: this.selectInfo.id,
|
||||
serveUserId: this.phoneItem.serveUserId,
|
||||
isServe: this.phoneForm.isServe,
|
||||
isTrain: this.phoneForm.isTrain
|
||||
}
|
||||
let resData = await phoneUpdate(params)
|
||||
if (resData.data.code === 200) {
|
||||
_this.$message.success("手机号更新成功");
|
||||
_this.handlePhoneClose()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.error("请选择或输入用户手机号!");
|
||||
}
|
||||
},
|
||||
handlePhoneClose() {
|
||||
this.phoneDialogVisible = false
|
||||
this.phoneForm.phone = ''
|
||||
this.phoneForm.list = []
|
||||
this.phoneForm.isServe = 0
|
||||
this.phoneForm.isTrain = 0
|
||||
},
|
||||
// 5. 重写 phoneDataList 方法
|
||||
async phoneDataList(item) {
|
||||
let params = {
|
||||
idNumber: item.idNumber
|
||||
// 开启 Loading
|
||||
const loadingInstance = this.$loading({
|
||||
lock: true,
|
||||
text: '正在加载数据...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
|
||||
try {
|
||||
// 1. 获取电话列表
|
||||
let params = { idNumber: item.idNumber };
|
||||
let resData = await getPhoneList(params);
|
||||
|
||||
// 2. (如果需要) 获取技能列表
|
||||
if (this.workSkillsOptions.length === 0) {
|
||||
let skillsRes = await getWorkTypes(1);
|
||||
if (skillsRes.data.code === 200) {
|
||||
this.workSkillsOptions = skillsRes.data.data;
|
||||
}
|
||||
let resData = await getPhoneList(params)
|
||||
}
|
||||
|
||||
if (this.areaOptions.length === 0) {
|
||||
let regsRes = await serveRegion();
|
||||
if (regsRes.data.code === 200) {
|
||||
this.areaOptions = regsRes.data.data;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.exitReasonOptions.length === 0) {
|
||||
let Reason = await serveExitReason();
|
||||
if (Reason.data.code === 200) {
|
||||
this.exitReasonOptions = Reason.data.data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 检查电话列表API结果
|
||||
if (resData.data.code === 200) {
|
||||
this.phoneList = resData.data.data
|
||||
this.phoneItem = item
|
||||
this.phoneDialogVisible = true
|
||||
this.phoneForm.isServe = item.isServe
|
||||
this.phoneForm.isTrain = item.isTrain
|
||||
// 成功: 关闭 loading, 传递数据, 打开弹窗
|
||||
loadingInstance.close();
|
||||
this.phoneList = resData.data.data;
|
||||
this.phoneItem = item;
|
||||
this.phoneDialogVisible = true;
|
||||
} else {
|
||||
// 失败: 关闭 loading, 显示错误
|
||||
loadingInstance.close();
|
||||
this.$message.error("用户数据异常!");
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
// 异常: 关闭 loading, 显示错误
|
||||
console.error("Error loading follow-up data:", error);
|
||||
loadingInstance.close();
|
||||
this.$message.error("获取用户数据失败!");
|
||||
}
|
||||
},
|
||||
/*点击分组加载相应人才列表*/
|
||||
nodeClick(data) {
|
||||
@@ -859,7 +813,7 @@ export default {
|
||||
this.$nextTick(function () {
|
||||
this.$refs.tree.setCurrentKey(groupId);
|
||||
}); //默认高亮
|
||||
this.nodeClick({id: groupId});
|
||||
this.nodeClick({ id: groupId });
|
||||
} else {
|
||||
if (this.treeData.length) {
|
||||
const serveId2 = this.treeData[0].id
|
||||
@@ -867,9 +821,10 @@ export default {
|
||||
this.$nextTick(function () {
|
||||
this.$refs.tree.setCurrentKey(serveId);
|
||||
}); //默认高亮第一个
|
||||
this.nodeClick({id: serveId});
|
||||
this.nodeClick({ id: serveId });
|
||||
}
|
||||
}
|
||||
this.selectInfo = data[0].children[0]
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
@@ -888,8 +843,8 @@ export default {
|
||||
const h = this.$createElement;
|
||||
this.$confirm(
|
||||
h("div", null, [
|
||||
h("p", {style: "font-size: 16px"}, "您确定要删除此分组吗? "),
|
||||
h("p", {style: "color: red"}, "一旦删除则无法找回"),
|
||||
h("p", { style: "font-size: 16px" }, "您确定要删除此分组吗? "),
|
||||
h("p", { style: "color: red" }, "一旦删除则无法找回"),
|
||||
]),
|
||||
{
|
||||
type: "warning",
|
||||
@@ -933,6 +888,9 @@ export default {
|
||||
.catch(() => {
|
||||
});
|
||||
},
|
||||
callbackPopup() {
|
||||
this.onLoad(this.page, this.query);
|
||||
},
|
||||
/*加载人才列表 */
|
||||
onLoad(page, params = {}) {
|
||||
this.loading = true;
|
||||
@@ -940,10 +898,12 @@ export default {
|
||||
current: page.currentPage,
|
||||
size: page.size,
|
||||
id: this.tenantId,
|
||||
...params
|
||||
}
|
||||
for (const paramsKey in params) {
|
||||
params[paramsKey] !== '' ? paramsed[paramsKey] = params[paramsKey] : null
|
||||
}
|
||||
getServeListTalents(paramsed).then((res) => {
|
||||
const {records, current, size, total} = res.data.data
|
||||
const { records, current, size, total } = res.data.data
|
||||
this.dataSource = records
|
||||
this.loading = false;
|
||||
this.page.size = size
|
||||
@@ -990,7 +950,7 @@ export default {
|
||||
serveId: this.selectInfo.id,
|
||||
companyId: this.selectInfo.companyId
|
||||
}).then(res => {
|
||||
const {records, current, size, total} = res.data.data
|
||||
const { records, current, size, total } = res.data.data
|
||||
this.innerDrawer1 = true
|
||||
this.workData = records
|
||||
this.workPage.size = size
|
||||
@@ -1000,9 +960,9 @@ export default {
|
||||
},
|
||||
// 匹配政策
|
||||
matchPolicy(row) {
|
||||
getMatchPolicy({id: row.id, serveId: this.selectInfo.id, serveUserId: row.serveUserId}).then(res => {
|
||||
getMatchPolicy({ id: row.id, serveId: this.selectInfo.id, serveUserId: row.serveUserId }).then(res => {
|
||||
let _this = this;
|
||||
const {records, current, size, total} = res.data.data
|
||||
const { records, current, size, total } = res.data.data
|
||||
_this.policyData = records
|
||||
_this.innerDrawer2 = true
|
||||
_this.policyPage.size = size
|
||||
@@ -1021,7 +981,7 @@ export default {
|
||||
size: this.logPage.size
|
||||
}).then(res => {
|
||||
let _this = this;
|
||||
const {records, current, size, total} = res.data.data
|
||||
const { records, current, size, total } = res.data.data
|
||||
_this.logData = records
|
||||
_this.innerDrawer3 = true
|
||||
_this.logPage.size = size
|
||||
@@ -1076,7 +1036,7 @@ export default {
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
return removeServeLog({ids: row.id});
|
||||
return removeServeLog({ ids: row.id });
|
||||
})
|
||||
.then(() => {
|
||||
this.serveLog(this.selectUserServeLog)
|
||||
@@ -1144,6 +1104,4 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
1279
src/views/tenant/main/serve/index2.vue
Normal file
1279
src/views/tenant/main/serve/index2.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -76,6 +76,7 @@ import {isvalidatemobile} from "@/util/validate";
|
||||
import {getDept, getDeptMyTree} from "@/api/tenant/talents";
|
||||
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
|
||||
import {cloneDeep} from "lodash";
|
||||
import {serveTypeOptions} from "@/common/dic";
|
||||
|
||||
const page = {
|
||||
size: 10,
|
||||
@@ -382,12 +383,7 @@ export default {
|
||||
label: '服务类型',
|
||||
prop: 'serveType',
|
||||
type: 'select',
|
||||
dicData: [
|
||||
{label: '普通日志', value: 0},
|
||||
{label: '回访日志', value: 1},
|
||||
{label: '推送岗位日志', value: 2},
|
||||
{label: '推送政策日志', value: 3},
|
||||
],
|
||||
dicData: serveTypeOptions,
|
||||
display: false,
|
||||
}, {
|
||||
label: '服务主题',
|
||||
|
||||
@@ -27,7 +27,7 @@ module.exports = {
|
||||
port: 1888,
|
||||
proxy: {
|
||||
"/api": {
|
||||
target: 'http://192.168.3.11:8000',
|
||||
target: 'http://39.98.44.136:6013',
|
||||
// target: 'http://10.165.0.173:8000',
|
||||
ws: true,
|
||||
changeOrigin: true,
|
||||
|
||||
Reference in New Issue
Block a user