From 4f4f6e115b3593d66536e2e0c0c87341f5e92fb2 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Tue, 11 Nov 2025 21:03:35 +0800 Subject: [PATCH] =?UTF-8?q?flat:=20=E6=9A=82=E5=AD=98,rules=20=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=20=E6=98=BE=E7=A4=BA=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/resource/oss.js | 128 +- src/api/tenant/common.js | 10 +- src/api/tenant/serve.js | 26 + src/common/dic.js | 335 ++--- src/page/login/userlogin.vue | 45 +- src/router/axios.js | 141 +- .../tenant/main/serve/Dialog/pushService2.vue | 58 +- .../main/serve/followUpVisit/qzjyknry.vue | 535 +++++++ .../main/serve/followUpVisit/rulesForm.js | 121 ++ src/views/tenant/main/serve/index.vue | 704 +++++---- src/views/tenant/main/serve/index2.vue | 1279 +++++++++++++++++ .../main/talents/personnelserve/index.vue | 8 +- vue.config.js | 2 +- 13 files changed, 2670 insertions(+), 722 deletions(-) create mode 100644 src/views/tenant/main/serve/followUpVisit/qzjyknry.vue create mode 100644 src/views/tenant/main/serve/followUpVisit/rulesForm.js create mode 100644 src/views/tenant/main/serve/index2.vue diff --git a/src/api/resource/oss.js b/src/api/resource/oss.js index d120f38..60d1fb8 100644 --- a/src/api/resource/oss.js +++ b/src/api/resource/oss.js @@ -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) => { - return request({ - url: '/api/jobslink-api/resource/oss/list', - method: 'get', - params: { - ...params, - current, - size, - } - }) +export const getList = (current, size, params) => { + return request({ + url: "/api/jobslink-api/resource/oss/list", + method: "get", + params: { + ...params, + current, + size } + }); +}; -export const getDetail = - (id) => { - return request({ - url: '/api/jobslink-api/resource/oss/detail', - method: 'get', - params: {id} - }) +export const getDetail = id => { + return request({ + url: "/api/jobslink-api/resource/oss/detail", + method: "get", + params: { id } + }); +}; + +export const remove = ids => { + return request({ + url: "/api/jobslink-api/resource/oss/remove", + method: "post", + params: { + ids } + }); +}; -export const remove = - (ids) => { - return request({ - url: '/api/jobslink-api/resource/oss/remove', - method: 'post', - params: { - ids, - } - }) - } +export const add = row => { + return request({ + url: "/api/jobslink-api/resource/oss/submit", + method: "post", + data: row + }); +}; -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 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 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 + }); +}; diff --git a/src/api/tenant/common.js b/src/api/tenant/common.js index fbedce8..f03d90c 100644 --- a/src/api/tenant/common.js +++ b/src/api/tenant/common.js @@ -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; diff --git a/src/api/tenant/serve.js b/src/api/tenant/serve.js index fff15a2..355ff15 100644 --- a/src/api/tenant/serve.js +++ b/src/api/tenant/serve.js @@ -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", diff --git a/src/common/dic.js b/src/common/dic.js index ad5bbdb..2853df0 100644 --- a/src/common/dic.js +++ b/src/common/dic.js @@ -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 } +]; diff --git a/src/page/login/userlogin.vue b/src/page/login/userlogin.vue index 1c2d8a4..de3a175 100644 --- a/src/page/login/userlogin.vue +++ b/src/page/login/userlogin.vue @@ -5,22 +5,15 @@
{{ $t('login.phoneLogin') }}
- - + + - - + + @@ -37,12 +30,8 @@
-
@@ -51,14 +40,14 @@ + + diff --git a/src/views/tenant/main/serve/followUpVisit/rulesForm.js b/src/views/tenant/main/serve/followUpVisit/rulesForm.js new file mode 100644 index 0000000..c2d71b5 --- /dev/null +++ b/src/views/tenant/main/serve/followUpVisit/rulesForm.js @@ -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; diff --git a/src/views/tenant/main/serve/index.vue b/src/views/tenant/main/serve/index.vue index df9b509..0eb3227 100644 --- a/src/views/tenant/main/serve/index.vue +++ b/src/views/tenant/main/serve/index.vue @@ -7,36 +7,35 @@
服务分组管理
新建分组 + v-if="vaildData(permission.tenant_main_serve_index_groupadd, false)" @click="updateGroups('add')">新建分组
-
+
- - - + + - {{ data.groupName || data.name }} + {{ data.groupName || data.name }} + + + + + + + - - - - - - -
@@ -44,18 +43,9 @@ - + @@ -72,23 +62,11 @@ - 回访 + 回访 - 推送服务 + 推送服务 - 管理服务日志 + 管理服务日志 @@ -96,50 +74,28 @@ - - + - - + @@ -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, } ] } @@ -604,129 +564,129 @@ export default { label: '政策名称', prop: 'name' }, - { - label: "政策级别", - prop: "level", - span: 12, - hide: true, + { + label: "政策级别", + prop: "level", + span: 12, + hide: true, + }, + { + label: "政策文号", + prop: "number", + span: 12, + hide: true, + }, + { + label: "发文机构", + prop: "issuingAuthority", + span: 12, + hide: true, + }, + { + label: "分组", + prop: "groupId", + type: "tree", + hide: true, + span: 12, + display: true, + placeholder: "请选择 分组", + }, + { + label: "有效性", + prop: "status", + type: "tree", + span: 12, + hide: true, + display: true, + dicData: [{ name: "有效", value: 1 }, { name: "无效", value: 0 }], + props: { + label: "name", + value: "value", }, - { - label: "政策文号", - prop: "number", - span: 12, - hide: true, + }, + { + label: "服务类型", + prop: "stype", + type: "tree", + span: 12, + display: true, + hide: true, + dicData: serviceType, + props: { + label: "label", + value: "value", }, - { - label: "发文机构", - prop: "issuingAuthority", - span: 12, - hide: true, - }, - { - label: "分组", - prop: "groupId", - type: "tree", - hide: true, - span: 12, - display: true, - placeholder: "请选择 分组", - }, - { - label: "有效性", - prop: "status", - type: "tree", - span: 12, - hide: true, - display: true, - dicData: [{name: "有效", value: 1}, {name: "无效", value: 0}], - props: { - label: "name", - value: "value", + rules: [ + { + required: true, + message: "请选择服务类型", + trigger: "change", }, - }, - { - label: "服务类型", - prop: "stype", - type: "tree", - span: 12, - display: true, - hide: true, - dicData: serviceType, - props: { - label: "label", - value: "value", - }, - rules: [ - { - required: true, - message: "请选择服务类型", - trigger: "change", - }, - ], - placeholder: "请选择 服务类型", - }, - { - label: "发文字号", - prop: "issuingNumber", - hide: true, - span: 12, - // row: true, - maxlength: 50, - showWordLimit: true, - }, - { - label: "类别", - prop: "category", - span: 12, - hide: true, - maxlength: 50, - showWordLimit: true, - }, - { - label: "标签", - prop: "labelName", - hide: false, - formslot: true, - span: 24, - }, - { - label: "政策文件名", - prop: "policyFileName", - hide: true, - span: 24, - }, - { - label: '政策内容', - prop: 'policyContent', - slot: true, - hide: true, - formslot: true, - span: 24, - }, - { - label: "指南文件名", - prop: "guidelineFileName", - hide: true, - span: 24, - maxlength: 50, - showWordLimit: true, - }, - { - label: "指南内容", - prop: "guidelineContent", - hide: true, - formslot: true, - span: 24, - }, - { - label: "备注", - prop: "remarks", - type: "textarea", - hide: true, - span: 24, - maxlength: 100, - showWordLimit: true, - }, + ], + placeholder: "请选择 服务类型", + }, + { + label: "发文字号", + prop: "issuingNumber", + hide: true, + span: 12, + // row: true, + maxlength: 50, + showWordLimit: true, + }, + { + label: "类别", + prop: "category", + span: 12, + hide: true, + maxlength: 50, + showWordLimit: true, + }, + { + label: "标签", + prop: "labelName", + hide: false, + formslot: true, + span: 24, + }, + { + label: "政策文件名", + prop: "policyFileName", + hide: true, + span: 24, + }, + { + label: '政策内容', + prop: 'policyContent', + slot: true, + hide: true, + formslot: true, + span: 24, + }, + { + label: "指南文件名", + prop: "guidelineFileName", + hide: true, + span: 24, + maxlength: 50, + showWordLimit: true, + }, + { + label: "指南内容", + prop: "guidelineContent", + hide: true, + formslot: true, + span: 24, + }, + { + label: "备注", + prop: "remarks", + type: "textarea", + hide: true, + span: 24, + maxlength: 100, + showWordLimit: true, + }, ] } }, @@ -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,55 +718,62 @@ 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 - } - let resData = await getPhoneList(params) - 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 - } else { - this.$message.error("用户数据异常!"); + // 开启 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; + } + } + + 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) { + // 成功: 关闭 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("获取用户数据失败!"); } }, /*点击分组加载相应人才列表*/ @@ -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 { } - + diff --git a/src/views/tenant/main/serve/index2.vue b/src/views/tenant/main/serve/index2.vue new file mode 100644 index 0000000..41fd2c7 --- /dev/null +++ b/src/views/tenant/main/serve/index2.vue @@ -0,0 +1,1279 @@ + + + + + diff --git a/src/views/tenant/main/talents/personnelserve/index.vue b/src/views/tenant/main/talents/personnelserve/index.vue index 048df06..2147324 100644 --- a/src/views/tenant/main/talents/personnelserve/index.vue +++ b/src/views/tenant/main/talents/personnelserve/index.vue @@ -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: '服务主题', diff --git a/vue.config.js b/vue.config.js index 4f99925..e8edf03 100644 --- a/vue.config.js +++ b/vue.config.js @@ -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,