重点人群识别与服务管理功能开发联调

This commit is contained in:
zxy
2024-02-26 19:03:31 +08:00
parent d11204bed9
commit 1ea90a6b6f
7 changed files with 376 additions and 238 deletions

View File

@@ -1,19 +1,14 @@
<template>
<div>
<el-row>
<el-col :span="5">
<basic-container>
<!-- <el-collapse v-model="activeNames">
<el-collapse-item name="1" disabled="true">
<template slot="title">-->
<!-- <p>全部{{ personTotal }}</p> -->
<p>分组管理</p>
<!-- </template> -->
<div class="box" :style="{ height: leftHeight }">
<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%">
<!-- <el-tooltip class="item" effect="dark" :content="node.label" placement="top"> -->
<span style="
flex-basis: 80%;
overflow: hidden;
@@ -24,7 +19,6 @@
{{ node.label }}
{{ data.sumNum }}
</span>
<!-- </el-tooltip> -->
<span v-show="data.id && data.id !== '0'" style="flex-basis: 20%">
<el-button type="text" icon="el-icon-edit" size="mini" @click="() => updateGroups('edit', data)">
</el-button>
@@ -33,18 +27,12 @@
</span>
</span>
</el-tree>
<!-- v-show="vaildData(permission.tenant_wage_payroll_view, false)" -->
<div class="footer" style="padding-left: 6px">
<el-button type="text" icon="el-icon-plus" @click="updateGroups('add')">新建分组</el-button>
</div>
</el-scrollbar>
</div>
<!-- </el-collapse-item>
</el-collapse>-->
</basic-container>
<!-- <div>
<el-button type="text" icon="el-icon-setting" @click="drawer = true">分组管理</el-button>
</div>-->
</el-col>
<el-col :span="19">
<basic-container>
@@ -54,12 +42,6 @@
<el-form-item label="服务名:">
<el-input v-model="query.name" placeholder="服务名" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="工种:">-->
<!-- <el-select v-model="query.worktypes" placeholder="工种" style="width: 100%" filterable clearable>-->
<!-- <el-option v-for="(item, key, index) in worktypeData" :key="index" :label="item.name"-->
<!-- :value="item.name"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<div class="searchBtn">
<el-button type="primary" size="small" icon="el-icon-search" @click="searchChange1"> </el-button>
@@ -79,6 +61,13 @@
<div>{{ row.worktypes | ellipsis }}</div>
</el-tooltip>
</template>
<template slot="status" slot-scope="{ row }">
<div>
<span>
<b>{{ statusArr[row.status] }}</b>
</span>
</div>
</template>
<template slot="resume" slot-scope="{ row }">
<div>
<el-button type="text" size="mini" @click="$refs.resume.openDialog(row)"
@@ -93,10 +82,6 @@
</template>
<!--自定义按钮-->
<template slot="menuLeft">
<!-- <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_talents_groupadd, false)">导入</el-button>
<el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort"
@click="handleTransfer">转移分组</el-button> -->
<el-button type="danger" size="small" icon="el-icon-delete" @click="handleDelete"
:disabled="!selectionList.length" plain v-show="vaildData(permission.tenant_talents_groupdelete, false)">
删除</el-button>
@@ -112,39 +97,42 @@
icon="el-icon-document"
size="small"
@click="showKeyAudience(row)"
>重点人群详情</el-button>
>服务详情</el-button>
</template>
<!--/父子表-->
</avue-crud>
<!-- / 重点人群详情 -->
<el-dialog title="重点人群详情" :visible.sync="visibleAudience" :close-on-click-modal="false" append-to-body width="70%">
<!-- <el-dialog title="服务详情" :visible.sync="visibleAudience" :close-on-click-modal="false" append-to-body width="70%">
<avue-crud
:data="infoData"
:option="infoOption"
:page.sync="infoPage"
@size-change="infoSizeChange"
@current-change="infoCurrentChange"
class="customPage"
>
<template slot-scope="{row,index}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看服务</el-button>
@click="matchWorkStation(row)"
>匹配任务/岗位</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看政策</el-button>
@click="matchPolicy(row)"
>匹配政策</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看日志</el-button>
@click="serveLog(row)"
>服务日志</el-button>
</template>
</avue-crud>
</el-dialog>
</el-dialog> -->
<!--批量导入-->
<el-dialog title="导入" append-to-body :visible.sync="excelBox" :close-on-click-modal="false" width="555px">
@@ -169,7 +157,98 @@
</basic-container>
<ied ref="ied"></ied>
</el-col>
</el-row>
<!-- <serve-detail ref="copy" @back="backIndex" v-show="false"></serve-detail> -->
<el-drawer
size="80%"
append-to-body
title="服务详情"
:visible.sync="drawer"
:direction="direction"
:before-close="handleClose">
<avue-crud
:data="infoData"
:option="infoOption"
:page.sync="infoPage"
@size-change="infoSizeChange"
@current-change="infoCurrentChange"
>
<template slot-scope="{row,index}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click="matchWorkStation(row)"
>匹配任务/岗位</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click="matchPolicy(row)"
>匹配政策</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click="serveLog(row)"
>服务日志</el-button>
</template>
</avue-crud>
<el-drawer
title="匹配任务/岗位"
size="80%"
:append-to-body="true"
:before-close="handleCloseWork"
:visible.sync="innerDrawer1">
<avue-crud
:data="workData"
:option="workOption"
:page.sync="workPage"
@size-change="workSizeChange"
@current-change="workCurrentChange"
>
<template slot="missionDesc" slot-scope="{ row }">
{{ row.missionDesc }}
</template>
<template slot-scope="{row,index}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看详情</el-button>
</template>
</avue-crud>
</el-drawer>
<el-drawer
title="匹配政策"
size="80%"
:append-to-body="true"
:before-close="handleClosePolicy"
:visible.sync="innerDrawer2">
<avue-crud
:data="policyData"
:option="policyOption"
:page.sync="policyPage"
@size-change="policySizeChange"
@current-change="policyCurrentChange"
>
</avue-crud>
</el-drawer>
<el-drawer
title="服务日志"
size="80%"
:append-to-body="true"
:before-close="handleCloseLog"
:visible.sync="innerDrawer3">
<avue-crud
:data="logData"
:option="logOption"
:page.sync="logPage"
@size-change="logSizeChange"
@current-change="logCurrentChange"
>
</avue-crud>
</el-drawer>
</el-drawer>
</div>
</template>
<script>
@@ -182,7 +261,10 @@ import {
getDept,
removeDept,
upload,
getServeListTalents
getServeListTalents,
getMatchWorkStation,
getMatchPolicy,
getMatchServeList
} from "@/api/tenant/serve";
import { getWorkTypes } from "@/api/tenant/common";
import { mapGetters } from "vuex";
@@ -193,12 +275,18 @@ import { check18IdCardNo, isvalidatemobile, isExcel } from "@/util/validate";
import { getTemplate } from "@/api/resource/template";
import ied from "@/views/util/import-error-dialog";
import { excelAccept } from "@/common/accept";
// import ServeDetail from './Dialog/ServeDetail.vue'
// import CopyMission from "../mission/Dialog/CopyMission";
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
export default {
components: {
// ServeDetail,
// CopyMission
},
filters: {
ellipsis(value) {
if (!value) return "";
@@ -211,6 +299,17 @@ export default {
name: "tenant_talents",
data() {
return {
statusArr: {
0: "未启用",
1: "服务中",
2: "已完成",
3: "关闭",
},
direction: 'rtl',
drawer: false,
innerDrawer1: false,
innerDrawer2: false,
innerDrawer3: false,
activeNames: "1",
isIndeterminate: false,
checkAll: false,
@@ -262,7 +361,13 @@ export default {
visibleAudience: false,
selectInfo: null,
infoData: [],
workData: [],
policyData: [],
logData: [],
infoPage: Object.assign({} ,page),
workPage: Object.assign({} ,page),
policyPage: Object.assign({} ,page),
logPage: Object.assign({} ,page),
obj: {},
excelForm: { isCovered: 1 },
};
@@ -332,7 +437,7 @@ export default {
viewBtn: true,
searchMenuSpan: 6,
border: true,
index: true,
index: false,
indexLabel: "序号",
selection: true,
dialogType: "dialog",
@@ -353,29 +458,6 @@ export default {
],
slot: true
},
// {
// label: "身份证",
// prop: "idNumber",
// hide: true,
// span: 24,
// rules: [
// { required: true, message: "请输入身份证号", trigger: "blur" },
// { trigger: "blur", validator: IdCardNo },
// ],
// },
// {
// label: "手机号",
// prop: "telphone",
// span: 24,
// hide: true,
// rules: [
// {
// required: true,
// validator: validateTel,
// trigger: "blur",
// },
// ],
// },
{
label: "用户类型",
prop: "userId",
@@ -406,6 +488,12 @@ export default {
],
formslot: true,
},
{
label: "状态",
prop: "status",
display: false,
slot: true,
},
{
label: "分组",
prop: "groupId",
@@ -413,6 +501,7 @@ export default {
span: 24,
display: true,
dicData: self.treeData,
hide: true,
props: {
label: "groupName",
value: "id",
@@ -426,26 +515,6 @@ export default {
],
placeholder: "请选择 分组",
},
// {
// label: "工种",
// prop: "worktypes",
// rules: [
// {
// required: true,
// message: "请选择工种",
// trigger: ["blur"],
// },
// ],
// slot: true,
// formslot: true,
// span: 24,
// },
// {
// label: "简历",
// prop: "resume",
// slot: true,
// display: false
// },
{
label: "备注",
prop: "remarks",
@@ -459,21 +528,91 @@ export default {
],
};
},
workOption() {
return {
editBtn: false,
delBtn: false,
addBtn: false,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
height: '100',
column: [{
label: "名称",
prop: "missionTitle",
}, {
label: "描述",
prop: "missionDesc",
slot: true
}]
}
},
policyOption() {
return {
editBtn: false,
delBtn: false,
addBtn: false,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
height: '100',
column: [{
label: '名称',
prop: 'name'
}, {
label: '内容',
prop: 'policyContent'
}]
}
},
logOption() {
return {
editBtn: false,
delBtn: false,
addBtn: false,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
height: '100',
column: [{
label: '备注1',
prop: 'bak1'
},{
label: '备注2',
prop: 'bak2'
},{
label: '备注3',
prop: 'bak3'
},{
label: '备注4',
prop: 'bak4'
}]
}
},
infoOption() {
return {
editBtn: false,
delBtn: false,
addBtn: false,
border: true,
refreshBtn: false,
searchBtn: true,
searchShow: true,
searchMenuSpan: 6,
height: '100',
column: [
{
label: "社区街道名称",
prop: "companyName",
search: true
},
{
label: "姓名",
prop: "name",
search: true
},
{
label: "身份证",
@@ -487,10 +626,6 @@ export default {
label: "用户类型",
prop: "userId",
},
{
label: "分组",
prop: "groupId",
},
{
label: "标签",
prop: "labelsBase",
@@ -532,11 +667,6 @@ export default {
rel.push({ name: key })
}
}
/* for (const key in this.worktypeDic) {
if (this.worktypeDic.hasOwnProperty(key)) {
rel.push({ name: key });
}
}*/
for (let i = 0; i < this.tempWorkType.length; i++) {
const key = this.tempWorkType[i];
if (key && !this.worktypeDic.hasOwnProperty(key)) {
@@ -556,6 +686,8 @@ export default {
this.getKeyAudience({
id: row.id
})
// this.$refs.copy.onLoad();
this.drawer = true;
},
getKeyAudience(params) {
const _this = this
@@ -719,11 +851,6 @@ export default {
this.tenantId = data.id ? data.id : "";
this.page.currentPage = 1;
this.onLoad(this.page, this.query);
// if (this.tenantId !== data.id) {
// } else {
// return;
// }
},
/*新增 编辑 转移 删除分组 更新人才后*/
refresh(type) {
@@ -746,7 +873,6 @@ export default {
detail(this.obj.id).then(
(res) => {
this.obj = res.data.data;
// this.tempWorkType = this.obj.worktypes.split(",");
this.tempWorkType = []
done();
},
@@ -767,9 +893,6 @@ export default {
groupId: row.groupId,
name: row.name,
serveLabels: row.serveLabels,
// idNumber: row.idNumber,
// telphone: row.telphone,
// worktypes: row.worktypes,
remarks: row.remarks,
}).then(
() => {
@@ -793,9 +916,6 @@ export default {
groupId: row.groupId,
name: row.name,
serveLabels: row.serveLabels,
// idNumber: row.idNumber,
// telphone: row.telphone,
// worktypes: row.worktypes,
remarks: row.remarks,
}).then(
() => {
@@ -860,10 +980,6 @@ export default {
);
})
.catch(() => {
// this.$message({
// type: 'info',
// message: '已取消'
// });
});
},
/*批量删除人才*/
@@ -918,10 +1034,6 @@ export default {
);
})
.catch(() => {
// this.$message({
// type: 'info',
// message: '已取消'
// });
});
},
/*导入人才库*/
@@ -1028,6 +1140,68 @@ export default {
this.selectionClear();
});
},
// 匹配任务和岗位
matchWorkStation(row) {
console.log('匹配任务和岗位')
getMatchWorkStation({id: row.id, serveId: this.selectInfo.id, companyId: this.selectInfo.companyId}).then(res => {
console.log(res)
this.innerDrawer1 = true
let _this = this;
const {records, current, size, total} = res.data.data
_this.workData = records
_this.innerDrawer1 = true
_this.workPage = {
pageSize: size,
currentPage: current,
total: total,
}
})
},
// 匹配政策
matchPolicy(row) {
console.log('匹配政策')
getMatchPolicy({id: row.id, serveId: this.selectInfo.id}).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,
}
})
},
// 服务日志
serveLog(row) {
console.log('服务日志')
getMatchServeList({id: row.id, serveId: this.selectInfo.id, companyId: this.selectInfo.companyId, current: 1, size: 10}).then(res => {
let _this = this;
const {records, current, size, total} = res.data.data
_this.logData = records
_this.innerDrawer3 = true
_this.logPage = {
pageSize: size,
currentPage: current,
total: total,
}
})
},
/**/
handleClose() {
this.drawer = false;
this.innerDrawer3 = false
this.infoData = null;
},
handleCloseWork() {
this.innerDrawer1 = false
},
handleClosePolicy() {
this.innerDrawer2 = false
},
handleCloseLog() {
this.innerDrawer3 = false
}
},
};
</script>