flat: 8.30

This commit is contained in:
史典卓
2024-08-30 12:06:45 +08:00
parent a6be0ec06f
commit 1016f6f3f3
27 changed files with 1874 additions and 490 deletions

View File

@@ -164,9 +164,11 @@ export default {
this.rightDataList = []
this.rightTabs = type
this.rightDataSelections = []
this.$message.success('智能分析匹配中');
type === 0 && this.getRightListPolicy()
type === 1 && this.getRightSearchByUserId()
if (type === 1) {
this.$message.success('智能分析匹配中');
this.getRightSearchByUserId()
}
},
upDateUser(user) {
this.leftUserSelections = [user]
@@ -278,16 +280,16 @@ export default {
size,
}
// const createTime = Date.now() + 4000
this.rightLoading = true
// this.rightLoading = true
let resData = await getListByids(params)
if (resData.data.code === 200) {
this.setProgress().then(() => {
setTimeout(() => {
this.rightLoading = false
this.rightPages = {total: resData.data.data.length, currentPage: 1}
this.rightDataList = resData.data.data
}, 200)
})
// this.setProgress().then(() => {
// setTimeout(() => {
// this.rightLoading = false
this.rightPages = {total: resData.data.data.length, currentPage: 1}
this.rightDataList = resData.data.data
// }, 200)
// })
// const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
// setTimeout(() => {
//

View File

@@ -25,7 +25,6 @@
flex-shrink: 1;
">
{{ data.groupName || data.name }}
{{ data.sumNum ? `${data.sumNum}个)` : '' }}
</span>
<span v-show="data.children && data.id && data.id !== '0'" style="flex-basis: 20%">
<el-button type="text" icon="el-icon-edit" size="mini"
@@ -268,6 +267,7 @@ import workView from "../../works/Table/missionView.vue"
import TextTooltip from "@/components/text-tooltip/index.vue";
import {serviceType} from "@/common/dic";
import PushService from './Dialog/pushService2.vue'
import {getDeptMyTree} from "@/api/tenant/talents";
const page = {
pageSize: 10,
@@ -313,6 +313,7 @@ export default {
list: []
},
phoneItem: null,
depTree: []
}
},
computed: {
@@ -353,6 +354,7 @@ export default {
return rel;
},
option() {
const unemployedCollegeStudents = this.selectInfo && this.selectInfo.name === '离校未就业大学生'
return {
dialogWidth: "50%",
dialogType: "drawer",
@@ -368,28 +370,56 @@ export default {
searchMenuSpan: 6,
height: '100',
column: [
{
label: "所属机构",
prop: "deptId",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
search: true,
span: 20,
hide: true,
searchLabelWidth: 80,
searchSpan: 8,
},
{
label: "姓名",
prop: "name",
search: true,
searchLabelWidth: 50,
searchSpan: 7,
search: false,
},
{
label: "身份证",
prop: "idNumber",
search: true,
searchLabelWidth: 60,
searchSpan: 7,
searchLabelWidth: 100,
searchSpan: 8,
},
// {
// label: "手机号",
// prop: "telphone",
// },
{
label: '专业',
prop: 'aac183Major'
},
{
label: "毕业年份",
width: 100,
prop: "year",
sortable: true,
overHidden: true,
align: "center",
type: "year",
format: "yyyy",
valueFormat: "yyyy",
op: "ge,le",
searchType: "year",
hide: true,
searchLabelWidth: 80,
searchSpan: 8,
search: unemployedCollegeStudents,
},
{
label: '文化程度',
prop: 'aac011',
@@ -404,14 +434,22 @@ export default {
label: '户口所在地',
prop: 'aac010'
},
// {
// label: "用户类型",
// prop: "userId",
// },
// {
// label: "身份标签",
// prop: "labelsBase",
// },
{
label: "政策推送次数",
prop: "servePolicyCount",
searchType: 'number',
search: unemployedCollegeStudents,
searchLabelWidth: 100,
searchSpan: 8,
},
{
label: "岗位服务次数",
prop: "serveCount",
searchType: 'number',
search: unemployedCollegeStudents,
searchLabelWidth: 100,
searchSpan: 8,
},
]
}
},
@@ -661,9 +699,19 @@ export default {
this.getListAllPolicyTree()
this.getLabelList()
this.ListAllTalents()
this.getDept()
},
methods: {
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
}
},
selectPushUserService(row) {
this.selectPushService().then(() => {
this.$nextTick(() => {
@@ -839,16 +887,9 @@ export default {
const {records, current, size, total} = res.data.data
this.dataSource = records
this.loading = false;
console.log({
pageSize: size,
currentPage: current,
total: total,
})
this.page = {
pageSize: size,
currentPage: current,
total: total,
}
this.page.size = size
this.page.currentPage = current
this.page.total = total
// this.selectionClear();
});
},
@@ -891,31 +932,25 @@ export default {
const {records, current, size, total} = res.data.data
this.innerDrawer1 = true
this.workData = records
this.workPage = {
pageSize: size,
currentPage: current,
total: total,
}
this.workPage.size = size
this.workPage.currentPage = current
this.workPage.total = total
})
},
// 匹配政策
matchPolicy(row) {
console.log('匹配政策')
getMatchPolicy({id: row.id, serveId: this.selectInfo.id, serveUserId: row.serveUserId}).then(res => {
let _this = this;
const {records, current, size, total} = res.data.data
_this.policyData = records
_this.innerDrawer2 = true
_this.policyPage = {
pageSize: size,
currentPage: current,
total: total,
}
_this.policyPage.size = size
_this.policyPage.currentPage = current
_this.policyPage.total = total
})
},
// 服务日志
serveLog(row) {
console.log('服务日志', row)
this.selectUserServeLog = row
getMatchServeList({
id: row.id,
@@ -928,11 +963,9 @@ export default {
const {records, current, size, total} = res.data.data
_this.logData = records
_this.innerDrawer3 = true
_this.logPage = {
pageSize: size,
currentPage: current,
total: total,
}
_this.logPage.size = size
_this.logPage.currentPage = current
_this.logPage.total = total
})
},
async saveLog(row, index, done, loading) {

View File

@@ -0,0 +1,240 @@
<template>
<el-row>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="dataSource"
:page.sync="page"
ref="crud"
v-model="crudValues"
:permission="permissionList"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@row-update="rowUpdate"
@size-change="sizeChange"
class="customPage"
:row-style="rowStyle"
>
</avue-crud>
</basic-container>
</el-row>
</template>
<script>
import {mapGetters} from "vuex";
import {getList} from "@/api/tenant/personnelserve";
import {isvalidatemobile} from "@/util/validate";
import {detail, getDept, getDeptMyTree, talentsDetail} from "@/api/tenant/talents";
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
import {getTenantTalentsWarn, tenantTalentsWarn, updateTenantTalentsWarn} from "@/api/tenant/LocalWarningDisposal";
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
const baseOptions = {
size: 'medium',
dateBtn: false,
addBtn: false,
editBtn: true,
viewBtn: false,
delBtn: false,
height: "auto",
menuWidth: 130,
reserveSelection: false,
border: true,
columnBtn: false,
refreshBtn: false,
menu: true,
tip: false,
selection: false,
align: 'center',
searchMenuSpan: 6,
// dialogType: "drawer",
searchLabelWidth: 60,
}
export default {
filters: {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
}
return value;
},
},
data() {
return {
loading: false,
dataSource: [],
crudValues: {},
depTree: [],
page: Object.assign({}, page),
logPage: Object.assign({}, page),
logDataSource: [],
loadingLog: false,
innerDrawerLog: false,
innerDrawerAddLog: false,
logValues: {}
}
},
computed: {
...mapGetters(["permission", "userInfo"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
viewBtn: true,
delBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_del, false),
editBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_edit, false),
};
},
option() {
const self = this;
const IdCardNo = (rule, value, callback) => {
// if (check18IdCardNo(value)) {
callback();
// } else {
// callback(new Error("身份证格式不正确"));
// }
};
const validateTel = (rule, value, callback) => {
if (isvalidatemobile(value)[0]) {
callback(new Error(isvalidatemobile(value)[1]));
} else {
callback();
}
};
return {
...baseOptions,
column: [
{
label: "姓名",
prop: "name",
display: false
},
{
label: "身份证",
prop: "idNumber",
search: true,
display: false
},
{
label: '原属地名称',
prop: 'nowOrg',
display: false
},
{
label: '现属地名称',
prop: 'oldOrg',
display: false
},
{
label: '属地变更信息',
prop: 'remark',
display: false
},
{
label: '状态',
prop: 'status',
type: 'radio',
dicData: [
{label: "未处理", value: '0'},
{label: "确认", value: '1'},
{label: "忽略", value: '2'}
]
}
]
}
},
},
created() {
this.getDept()
this.onLoad(this.page, this.query)
},
activated() {
this.$nextTick(() => {
this.$refs.crud.refreshTable()
})
},
methods: {
rowStyle(column) {
if (column.row.status == "0") {
this.option.editBtn = true;
} else {
this.option.editBtn = false;
}
},
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
}
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
const {releaseTimeRange} = params;
let paramsed = {
current: page.currentPage,
pageSize: page.pageSize,
...this.query
};
this.loading = true;
getTenantTalentsWarn(paramsed).then((res) => {
const {total, size, current, records, page} = res.data.data
this.dataSource = records;
this.loading = false;
this.page = {
pageSize: size,
currentPage: current,
total: total,
}
});
},
rowUpdate(row, index, done) {
updateTenantTalentsWarn({id: row.id, status: row.status}).then(
() => {
done();
this.$message({
type: "success",
message: "操作成功!",
});
this.refresh();
},
(error) => {
window.console.log(error);
done();
}
);
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -14,18 +14,18 @@
:data="treeData" :props="props">
<span class="custom-tree-node" slot-scope="{ node, data }" style="width: 80%">
<!-- <el-tooltip class="item" effect="dark" :content="node.label" placement="top"> -->
<TextTooltip :content="`${node.label}(${data.sumNum}人)`" length="13" tip-width="10"></TextTooltip>
<TextTooltip :content="`${node.label}(${data.sumNum}人)`" length="18" tip-width="18"></TextTooltip>
<!-- </el-tooltip> -->
<span v-show="data.id && data.id !== '0'" style="flex-basis: 20%">
<el-button type="text" icon="el-icon-edit" size="mini"
v-if="vaildData(permission.tenant_main_talents_certain_index_groupedit, false)"
@click="() => updateGroups('edit', data)">
</el-button>
<el-button icon="el-icon-delete" type="text" size="mini"
v-if="vaildData(permission.tenant_main_talents_certain_index_groupdelete, false)"
@click="() => removeGroups(data)">
</el-button>
</span>
<!-- <span v-show="data.id && data.id !== '0'" style="flex-basis: 20%">-->
<!-- <el-button type="text" icon="el-icon-edit" size="mini"-->
<!-- v-if="vaildData(permission.tenant_main_talents_certain_index_groupedit, false)"-->
<!-- @click="() => updateGroups('edit', data)">-->
<!-- </el-button>-->
<!-- <el-button icon="el-icon-delete" type="text" size="mini"-->
<!-- v-if="vaildData(permission.tenant_main_talents_certain_index_groupdelete, false)"-->
<!-- @click="() => removeGroups(data)">-->
<!-- </el-button>-->
<!-- </span>-->
</span>
</el-tree>
<!-- v-show="vaildData(permission.tenant_wage_payroll_view, false)" -->
@@ -74,9 +74,9 @@
</template>
<!--自定义按钮-->
<template slot="menuLeft">
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_main_talents_certain_index_add, false)">批量导入
</el-button>
<!-- <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"-->
<!-- v-show="vaildData(permission.tenant_main_talents_certain_index_add, false)">批量导入-->
<!-- </el-button>-->
<el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort"
@click="handleTransfer"
v-show="vaildData(permission.tenant_main_talents_certain_index_transfergroup, false)">转移推送
@@ -371,9 +371,10 @@ export default {
columnBtn: false,
searchBtn: true,
searchShow: true,
viewBtn: true,
viewBtn: false,
searchMenuSpan: 6,
editBtnText: '转 移',
editTitle: '转 移',
searchSpan: 8,
menuWidth: 170,
border: true,
@@ -411,6 +412,7 @@ export default {
trigger: "blur",
},
],
editDisplay: false,
editDisabled: true,
search: true,
slot: true
@@ -424,6 +426,7 @@ export default {
label: "dictValue",
value: "dictKey",
},
editDisplay: false,
rules: [
{
required: true,
@@ -444,11 +447,13 @@ export default {
{trigger: "blur", validator: IdCardNo},
],
editDisabled: true,
editDisplay: false,
search: true,
},
{
label: "人员类型",
prop: "suspected",
editDisplay: false,
search: true,
editDisabled: true,
type: 'select',
@@ -462,6 +467,7 @@ export default {
label: "手机号",
prop: "telphone",
span: 24,
editDisplay: false,
editDisabled: true,
hide: false,
rules: [
@@ -481,6 +487,7 @@ export default {
label: "dictValue",
value: "dictKey",
},
editDisplay: false,
editDisabled: true,
rules: [
{
@@ -500,6 +507,7 @@ export default {
label: "dictValue",
value: "dictKey",
},
editDisplay: false,
editDisabled: true,
rules: [
{
@@ -514,6 +522,7 @@ export default {
label: "求职意愿",
prop: "willingJob",
span: 24,
editDisplay: false,
rules: [
{required: true, message: "请输入求职意愿", trigger: "blur"},
],
@@ -524,6 +533,7 @@ export default {
// hide: true,
span: 24,
editDisabled: true,
editDisplay: false,
rules: [
{required: true, message: "请输入口所在地", trigger: "blur"},
],
@@ -538,6 +548,7 @@ export default {
value: "dictKey",
},
editDisabled: true,
editDisplay: false,
rules: [
{
required: true,
@@ -551,6 +562,7 @@ export default {
label: "经办时间",
prop: "aae036",
display: false,
editDisplay: false,
span: 24,
rules: [
{required: true, message: "请输入经办时间", trigger: "blur"},
@@ -562,12 +574,12 @@ export default {
prop: "groupId",
type: "tree",
span: 24,
display: true,
dicData: self.treeData,
props: {
label: "groupName",
value: "id",
},
editDisplay: false,
editDisabled: true,
rules: [
{
@@ -591,12 +603,14 @@ export default {
editDisabled: true,
slot: true,
formslot: true,
editDisplay: false,
span: 24,
},
{
label: "备注",
prop: "remarks",
type: "textarea",
editDisplay: false,
slot: true,
hide: true,
span: 24,

View File

@@ -12,20 +12,20 @@
<el-scrollbar style="height: 100%">
<el-tree ref="tree" node-key="id" highlight-current :expand-on-click-node="false" @node-click="nodeClick"
:data="treeData" :props="props">
<span class="custom-tree-node" slot-scope="{ node, data }" style="width: 80%">
<span class="custom-tree-node" slot-scope="{ node, data }">
<!-- <el-tooltip class="item" effect="dark" :content="node.label" placement="top"> -->
<TextTooltip :content="`${node.label}(${data.sumNum}人)`" length="10" tip-width="10"></TextTooltip>
<TextTooltip :content="`${node.label}(${data.sumNum}人)`" length="16" tip-width="16"></TextTooltip>
<!-- </el-tooltip> -->
<span v-show="data.id && data.id !== '0'" style="flex-basis: 20%">
<el-button type="text" icon="el-icon-edit" size="mini"
v-if="vaildData(permission.tenant_main_talents_latent_index_groupedit, false)"
@click="() => updateGroups('edit', data)">
</el-button>
<el-button icon="el-icon-delete" type="text" size="mini"
v-if="vaildData(permission.tenant_main_talents_latent_index_groupdelete, false)"
@click="() => removeGroups(data)">
</el-button>
</span>
<!-- <span v-show="data.id && data.id !== '0'" style="flex-basis: 20%">-->
<!-- <el-button type="text" icon="el-icon-edit" size="mini"-->
<!-- v-if="vaildData(permission.tenant_main_talents_latent_index_groupedit, false)"-->
<!-- @click="() => updateGroups('edit', data)">-->
<!-- </el-button>-->
<!-- <el-button icon="el-icon-delete" type="text" size="mini"-->
<!-- v-if="vaildData(permission.tenant_main_talents_latent_index_groupdelete, false)"-->
<!-- @click="() => removeGroups(data)">-->
<!-- </el-button>-->
<!-- </span>-->
</span>
</el-tree>
<!-- v-show="vaildData(permission.tenant_wage_payroll_view, false)" -->
@@ -51,7 +51,7 @@
:permission="permissionList" :before-open="beforeOpen" @row-del="rowDel" @row-update="rowUpdate"
@row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" class="customPage">
@refresh-change="refreshChange" class="customPage" :row-style="rowStyle">
<!--自定义列-->
<template slot="labelsBase" slot-scope="{ row }">
<el-tooltip effect="dark" placement="top">
@@ -72,11 +72,66 @@
<tag-select v-model="selectedWorkTypes" :prop="{ label: 'name', value: 'name' }" :data="arr">
</tag-select>
</template>
<template slot-scope="{row}" slot="employInfoListForm">
<div>
<el-radio-group v-model="employInfoType" @input="employInfoInput">
<el-radio-button :label="1">失业就业信息</el-radio-button>
<el-radio-button :label="2">养老待遇信息</el-radio-button>
<el-radio-button :label="3">人员死亡信息</el-radio-button>
</el-radio-group>
<el-table
v-if="employInfoType === 1"
:data="row.employInfoList"
style="width: 100%">
<el-table-column
prop="workCompany"
label="工作单位">
</el-table-column>
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="title"
label="内容"
width="180">
</el-table-column>
<el-table-column
prop="remarks"
label="备注">
</el-table-column>
</el-table>
<div v-else-if="employInfoType === 2">
<el-row style="margin-top: 10px">
<el-col :span="8">养老保险: {{
row.isPension ? '已领取' : ' 未领取'
}}
</el-col>
<el-col :span="8">最大做账期: {{ splitDate(row.biggestDate) || '无' }}</el-col>
<el-col :span="8">经办时间: {{
row.operateDate && dateFormat(new Date(Number(row.operateDate))) || '无'
}}
</el-col>
<el-col :span="8">开始年月: {{ splitDate(row.startDate) || '无' }}</el-col>
<el-col :span="8">终止年月: {{ splitDate(row.endDate) || '无' }}</el-col>
</el-row>
</div>
<div v-else-if="employInfoType === 3">
<el-row style="margin-top: 10px">
<el-col :span="8">是否死亡: {{ row.isDead ? '已死亡' : ' 未死亡' }}</el-col>
<el-col :span="8">火化地址: {{ row.funeralAddress || '无' }}</el-col>
<el-col :span="8">火化时间: {{ row.funeralDate || '无' }}</el-col>
</el-row>
</div>
</div>
</template>
<!--自定义按钮-->
<template slot="menuLeft">
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_main_talents_latent_index_add, false)">批量导入
</el-button>
<!-- <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"-->
<!-- v-show="vaildData(permission.tenant_main_talents_latent_index_add, false)">批量导入-->
<!-- </el-button>-->
<el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort"
@click="handleTransfer"
v-show="vaildData(permission.tenant_main_talents_latent_index_tansfergroup, false)">转移推送
@@ -117,6 +172,7 @@
>核实
</el-button>
</template>
</avue-crud>
<!--批量导入-->
@@ -172,15 +228,30 @@
<PromptDialog
:visible="dialogFlag"
title="核"
title="核"
:back-btn-status="1"
submit-text=" "
sub-title="请核对人员信息后再进行审核通过驳回该用户将从人群中删除在人员服务日志中可见"
:tips="[
'人员信息描述不清晰或过于简单;',
'人员信息存在违法违规行为;',
'人员信息的薪资、福利等待遇不符合市场标准;',
submit-text=" "
:submit-vail="false"
back-text="不符合"
dialogWidth="60%"
:isInputInfo="false"
:placeholder="`请输入不符合潜在 ${selectGroupName} 的具体原因`"
:sub-title="[
`请核实人员相关信息进行以下操作`,
`符合表示为已初步判定该人员符合 ${selectGroupName} 相关条件但仍需与该人员主动联系并进一步核实最终以省就业3.0实际政策经办情况为准`,
`不符合表示经核查后该人员不符合 ${selectGroupName} 相关条件并将该人员从潜在的{就业困难}列表中剔除`,
'核实完成后会产生服务日志记录'
]"
:tips="dialogTips"
:pattern="{
reg: /[\u4e00-\u9fff]{6,}/g,
check: function checkChineseString(val) {
const pattern = /[\u4e00-\u9fff]/g;
const chineseChars = val.match(pattern);
return chineseChars && chineseChars.length >= 6;
},
message: '请填写具体原因且字数长度不得小于6个汉字'
}"
@onClose="dialogFlag = false; GroupValue = ''"
@onCancel="diaLogCancel"
@onConfirm="diaLogConfirm"
@@ -231,6 +302,8 @@ import TextTooltip from '@/components/text-tooltip'
import {exportList} from "@/api/workstation/post";
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
import PromptDialog from "@/components/promptDialog/index.vue";
import {setWith} from "lodash";
import {dateFormat} from '@/util/date'
let page = {
pageSize: 10,
@@ -250,6 +323,7 @@ export default {
name: "tenant_talents",
data() {
return {
employInfoType: 1,
dialogFlag: false,
dialogInfo: null,
downloadButton: false,
@@ -284,7 +358,10 @@ export default {
obj: {},
excelForm: {isCovered: 1},
selecTreeData: [],
GroupValue: ''
GroupValue: '',
selectInfo: {},
selectGroupName: '',
dialogTips: []
};
},
components: {addGroups, transferGroups, Resume, ied, TextTooltip, PromptDialog},
@@ -333,9 +410,11 @@ export default {
callback();
}
};
// 潜在就业困难人员
// const unemployedCollegeStudents = this.selectInfo && this.selectInfo.groupName === '潜在就业困难人员'
return {
height: "auto",
dialogWidth: "50%",
dialogWidth: "60%",
calcHeight: 180,
align: "center",
menuAlign: "center",
@@ -344,6 +423,8 @@ export default {
searchBtn: true,
delBtn: false,
searchShow: true,
editBtnText: '移 交',
editTitle: '移 交',
viewBtn: true,
menuWidth: 170,
searchMenuSpan: 6,
@@ -353,7 +434,7 @@ export default {
selection: true,
dialogType: "drawer",
dialogClickModal: false,
formLabelWidth: '180px',
formLabelWidth: '220px',
column: [
{
label: "所属机构",
@@ -375,6 +456,7 @@ export default {
prop: "name",
// search: true,
span: 24,
viewDisplay: false,
rules: [
{
required: true,
@@ -386,12 +468,15 @@ export default {
slot: true,
search: true,
editDisabled: true,
editDisplay: false
},
{
label: "姓别",
prop: "aac004",
type: 'select',
viewDisplay: false,
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
editDisplay: false,
props: {
label: "dictValue",
value: "dictKey",
@@ -405,10 +490,13 @@ export default {
},
],
span: 24,
},
{
label: "身份证",
prop: "idNumber",
editDisplay: false,
viewDisplay: false,
// hide: true,
span: 24,
rules: [
@@ -421,6 +509,8 @@ export default {
{
label: "手机号",
prop: "telphone",
editDisplay: false,
viewDisplay: false,
span: 24,
hide: false,
editDisabled: true,
@@ -437,6 +527,8 @@ export default {
prop: "aac005",
type: 'select',
editDisabled: true,
editDisplay: false,
viewDisplay: false,
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
@@ -456,6 +548,8 @@ export default {
prop: "aac009",
type: 'select',
editDisabled: true,
editDisplay: false,
viewDisplay: false,
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
@@ -476,6 +570,8 @@ export default {
// hide: true,
span: 24,
editDisabled: true,
editDisplay: false,
viewDisplay: false,
rules: [
{required: true, message: "请输入口所在地", trigger: "blur"},
],
@@ -484,6 +580,8 @@ export default {
label: "文化程度",
prop: "aac011",
editDisabled: true,
editDisplay: false,
viewDisplay: false,
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
@@ -504,6 +602,7 @@ export default {
prop: "isConfirm",
type: 'select',
display: false,
viewDisplay: false,
dicData: [
{
value: -1,
@@ -523,8 +622,10 @@ export default {
label: "经办时间",
prop: "aae036",
display: false,
viewDisplay: false,
span: 24,
editDisabled: true,
editDisplay: false,
rules: [
{required: true, message: "请输入经办时间", trigger: "blur"},
],
@@ -534,6 +635,8 @@ export default {
prop: "userId",
type: "select",
editDisabled: true,
editDisplay: false,
viewDisplay: false,
dicData: [
{
value: "0",
@@ -553,8 +656,9 @@ export default {
prop: "groupId",
type: "tree",
span: 24,
display: true,
viewDisplay: false,
editDisabled: true,
editDisplay: false,
dicData: self.treeData,
props: {
label: "groupName",
@@ -572,7 +676,9 @@ export default {
{
label: "标签名称",
prop: "labelsBase",
editDisplay: false,
editDisabled: true,
viewDisplay: false,
rules: [
{
required: false,
@@ -584,22 +690,29 @@ export default {
formslot: true,
span: 24,
},
// {
// label: "简历",
// prop: "resume",
// slot: true,
// display: false
// },
{
label: "备注",
prop: "remarks",
type: "textarea",
editDisplay: false,
viewDisplay: false,
slot: true,
hide: true,
span: 24,
maxlength: 100,
showWordLimit: true,
},
{
label: '',
prop: 'employInfoList',
formslot: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
hide: true,
span: 24,
labelPosition: 'top', //标签位置
}
],
};
},
@@ -758,19 +871,51 @@ export default {
},
created() {
this.initDept();
this.groupTypeDept()
// this.getWorkTypes();
this.getLabelList();
this.getDept()
},
methods: {
groupTypeDept() {
getDept({groupType: 1}).then((res) => {
this.selecTreeData = res.data.data.list;
});
splitDate(time) {
if (!time) return
return `${time.slice(0, 4)}${time.slice(4, 6)}`
},
dateFormat: dateFormat,
rowStyle(column) {
const groupId = column.row.groupId
const groupInfo = this.treeData.find((item) => item.id === groupId)
if (groupInfo.groupName === '潜在就业困难人员' || groupInfo.groupName === '潜在就业见习申请人员') {
this.option.column[15].viewDisplay = true
} else {
this.option.column[15].viewDisplay = false
}
},
checkUserInfo(row) {
this.dialogInfo = row
const groupInfo = this.treeData.find((item) => item.id === row.groupId)
this.selectGroupName = groupInfo.groupName
switch (groupInfo.groupName) {
case '潜在就业困难人员':
this.dialogTips = ['人员已死亡', '已经进行就业登记', '享受养老保险待遇', '不满足男性大于等于50岁女性大于等于40岁', '不满足失业登记一年以上', '存在工商信息']
break
case '潜在登记失业人员':
this.dialogTips = ['不满足断保3个月', '存在工商信息']
break
case '潜在失业保险金申领人员':
this.dialogTips = ['已经进行就业登记', '享受养老保险待遇', '存在工商信息', '连续参保不满一年']
break
case '潜在就业困难人员中以个人身份参保人员':
this.dialogTips = ['已经进行就业登记', '存在工商信息', '不是以个人身份参保']
break
case '潜在公益性岗位申请人员':
this.dialogTips = ['人员已死亡', '已经进行就业登记', '享受养老保险待遇', '不满足男性大于等于50岁女性大于等于40岁', '不满足失业登记一年以上', '存在工商信息']
break
case '潜在就业见习申请人员':
this.dialogTips = ['已就业登记', '不满足16-24岁']
break
default :
this.dialogTips = []
}
this.dialogFlag = true
},
diaLogCancel(value) {
@@ -782,7 +927,7 @@ export default {
approvalStatus: 1,
content: value,
}
this.$confirm("确定将选择数据驳回?", {
this.$confirm("确定数据不符合?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
@@ -885,6 +1030,7 @@ export default {
initDept(groupId) {
getDept({groupType: 0}).then((res) => {
const data = res.data.data.list;
this.selecTreeData = data;
this.treeData = data;
let treeDataOne = {
companyId: "",
@@ -988,6 +1134,7 @@ export default {
/*点击分组加载相应人才列表*/
nodeClick(data) {
this.tenantId = data.id ? data.id : "";
this.selectInfo = data
this.page.currentPage = 1;
this.onLoad(this.page, this.query);
// if (this.tenantId !== data.id) {
@@ -1016,6 +1163,7 @@ export default {
setTimeout(() => {
detail(this.obj.id).then(
(res) => {
console.log(res)
this.obj = res.data.data;
this.tempWorkType = this.obj.labelsBase.split(",");
done();

View File

@@ -0,0 +1,506 @@
<template>
<el-row>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="dataSource"
:page.sync="page"
ref="crud"
v-model="crudValues"
:permission="permissionList"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
class="customPage"
:row-style="rowStyle"
:before-open="beforeOpen"
>
<template slot-scope="{row}" slot="employInfoListForm">
<div>
<el-radio-group v-model="employInfoType" @input="employInfoInput">
<el-radio-button :label="1">失业就业信息</el-radio-button>
<el-radio-button :label="2">养老待遇信息</el-radio-button>
<el-radio-button :label="3">人员死亡信息</el-radio-button>
</el-radio-group>
<el-table
v-if="employInfoType === 1"
:data="row.employInfoList"
style="width: 100%">
<el-table-column
prop="workCompany"
label="工作单位">
</el-table-column>
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="title"
label="内容"
width="180">
</el-table-column>
<el-table-column
prop="remarks"
label="备注">
</el-table-column>
</el-table>
<div v-else-if="employInfoType === 2">
<el-row style="margin-top: 10px">
<el-col :span="8">养老保险: {{
row.isPension ? '已领取' : ' 未领取'
}}
</el-col>
<el-col :span="8">最大做账期: {{ splitDate(row.biggestDate) || '无' }}</el-col>
<el-col :span="8">经办时间: {{
row.operateDate && dateFormat(new Date(Number(row.operateDate))) || '无'
}}
</el-col>
<el-col :span="8">开始年月: {{ splitDate(row.startDate) || '无' }}</el-col>
<el-col :span="8">终止年月: {{ splitDate(row.endDate) || '无' }}</el-col>
</el-row>
</div>
<div v-else-if="employInfoType === 3">
<el-row style="margin-top: 10px">
<el-col :span="8">是否死亡: {{ row.isDead ? '已死亡' : ' 未死亡' }}</el-col>
<el-col :span="8">火化地址: {{ row.funeralAddress || '无' }}</el-col>
<el-col :span="8">火化时间: {{ row.funeralDate || '无' }}</el-col>
</el-row>
</div>
</div>
</template>
<!-- <template slot-scope="{row}" slot="menu">-->
<!-- <div>-->
<!-- <el-button type="text"-->
<!-- icon="el-icon-document"-->
<!-- size="small"-->
<!-- @click="serveLog(row)"-->
<!-- >查看-->
<!-- </el-button>-->
<!-- </div>-->
<!-- </template>-->
</avue-crud>
</basic-container>
</el-row>
</template>
<script>
import {mapGetters} from "vuex";
import {getList} from "@/api/tenant/personnelserve";
import {isvalidatemobile} from "@/util/validate";
import {detail, getDept, getDeptMyTree, talentsDetail} from "@/api/tenant/talents";
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
import {dateFormat} from "@/util/date";
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
const baseOptions = {
size: 'medium',
dateBtn: false,
addBtn: false,
editBtn: false,
viewBtn: true,
delBtn: false,
height: "auto",
menuWidth: 130,
reserveSelection: false,
border: true,
columnBtn: false,
refreshBtn: false,
menu: true,
tip: false,
selection: false,
align: 'center',
searchMenuSpan: 6,
dialogType: "drawer",
searchLabelWidth: 60,
}
export default {
filters: {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
}
return value;
},
},
data() {
return {
employInfoType: 1,
loading: false,
dataSource: [],
crudValues: {},
depTree: [],
page: Object.assign({}, page),
treeData: [],
logPage: Object.assign({}, page),
logDataSource: [],
loadingLog: false,
innerDrawerLog: false,
innerDrawerAddLog: false,
logValues: {}
}
},
computed: {
...mapGetters(["permission", "userInfo"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
viewBtn: true,
delBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_del, false),
editBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_edit, false),
};
},
option() {
const self = this;
const IdCardNo = (rule, value, callback) => {
// if (check18IdCardNo(value)) {
callback();
// } else {
// callback(new Error("身份证格式不正确"));
// }
};
const validateTel = (rule, value, callback) => {
if (isvalidatemobile(value)[0]) {
callback(new Error(isvalidatemobile(value)[1]));
} else {
callback();
}
};
return {
...baseOptions,
column: [
{
label: "所属机构",
prop: "createDept",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
span: 24,
search: true,
display: false,
searchLabelWidth: 80,
change: this.deptChange
},
{
label: "姓名",
prop: "name",
// search: true,
span: 24,
display: false,
rules: [
{
required: true,
whitespace: true,
message: "请输入姓名",
trigger: "blur",
},
],
search: true,
},
{
label: "姓别",
prop: "aac004",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
props: {
label: "dictValue",
value: "dictKey",
},
display: false,
rules: [
{
required: true,
message: "请输入性别",
trigger: "blur",
},
],
span: 24,
},
{
label: "身份证",
prop: "idNumber",
// hide: true,
span: 24,
display: false,
rules: [
{required: true, message: "请输入身份证号", trigger: "blur"},
{trigger: "blur", validator: IdCardNo},
],
search: true,
},
{
label: "手机号",
prop: "telphone",
span: 24,
display: false,
hide: false,
rules: [
{
required: true,
validator: validateTel,
trigger: "blur",
},
],
},
{
label: "民族",
prop: "aac005",
display: false,
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入民族",
trigger: "blur",
},
],
span: 24,
},
{
label: "户口性质",
display: false,
prop: "aac009",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入户口性质",
trigger: "blur",
},
],
span: 24,
},
{
label: "户口所在地",
prop: "aac010",
// hide: true,
span: 24,
display: false,
rules: [
{required: true, message: "请输入口所在地", trigger: "blur"},
],
},
{
label: "文化程度",
prop: "aac011",
type: 'select',
display: false,
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入文化程度",
trigger: "blur",
},
],
span: 24,
},
{
label: "备注",
prop: "remarks",
type: "textarea",
slot: true,
hide: true,
display: false,
span: 24,
maxlength: 100,
showWordLimit: true,
},
{
label: '',
prop: 'employInfoList',
formslot: true,
addDisplay: false,
editDisplay: false,
viewDisplay: true,
hide: true,
span: 24,
labelPosition: 'top', //标签位置
}
],
}
},
},
created() {
this.getDept()
this.initDept()
this.onLoad(this.page, this.query)
},
activated() {
this.$nextTick(() => {
this.$refs.crud.refreshTable()
})
},
methods: {
splitDate(time) {
if (!time) return
return `${time.slice(0, 4)}${time.slice(4, 6)}`
},
dateFormat: dateFormat,
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
}
},
initDept(groupId) {
getDept({groupType: 0}).then((res) => {
const data = res.data.data.list;
this.treeData = data;
let treeDataOne = {
companyId: "",
createTime: "",
groupName: "全部",
id: "",
remarks: "",
sort: '',
sumNum: res.data.data.sum,
type: '',
};
this.treeData.unshift(treeDataOne);
this.loading = false;
});
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
logSizeChange(pageSize) {
this.logPage.pageSize = pageSize;
this.serveLog(this.selectUserServeLog);
},
logCurrentChange(currentPage) {
this.logPage.currentPage = currentPage;
this.serveLog(this.selectUserServeLog);
},
onLoad(page, params = {}) {
const {releaseTimeRange} = params;
let paramsed = {
current: page.currentPage,
pageSize: page.pageSize,
...this.query
};
this.loading = true;
getList(paramsed).then((res) => {
const {total, size, current, records, page} = res.data.data
this.dataSource = records;
this.loading = false;
this.page = {
pageSize: size,
currentPage: current,
total: total,
}
});
},
serveLog(row) {
console.log('服务日志', row)
this.selectUserServeLog = row
this.loadingLog = true
getMainServeUserLog({
idNumber: row.idNumber,
current: this.logPage.currentPage,
size: this.logPage.pageSize
}).then(res => {
this.loadingLog = false
const {records, current, size, total} = res.data.data
this.logDataSource = records
this.innerDrawerLog = true
this.logPage = {
pageSize: size,
currentPage: current,
total: total,
}
})
},
beforeOpen(done, type) {
if (["edit", "view", "add"].includes(type)) {
if (type === "edit" || type === "view") {
setTimeout(() => {
talentsDetail({id: this.crudValues.idNumber}).then(
(res) => {
this.crudValues = res.data.data;
done();
},
(error) => {
window.console.log(error);
}
);
}, 0);
} else {
done();
}
}
},
async handleSubmitLog(row, done) {
let params = {
...row,
serveId: this.selectUserServeLog.serveId,
serveUserId: this.selectUserServeLog.serveUserId,
talentsId: this.selectUserServeLog.id,
idNumber: this.selectUserServeLog.idNumber,
toName: this.selectUserServeLog.name,
fromName: this.userInfo.real_name
}
console.log(params)
let resData = await addServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "添加成功!",
});
this.innerDrawerAddLog = false
}
},
}
}
</script>
<style lang="scss" scoped>
</style>