flat: 6.5 改版
This commit is contained in:
22
package-lock.json
generated
22
package-lock.json
generated
@@ -6165,6 +6165,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dom7": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
|
||||||
|
"requires": {
|
||||||
|
"ssr-window": "^3.0.0-alpha.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"domain-browser": {
|
"domain-browser": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "http://r.cnpmjs.org/domain-browser/download/domain-browser-1.2.0.tgz",
|
"resolved": "http://r.cnpmjs.org/domain-browser/download/domain-browser-1.2.0.tgz",
|
||||||
@@ -13065,6 +13073,11 @@
|
|||||||
"tweetnacl": "~0.14.0"
|
"tweetnacl": "~0.14.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ssr-window": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
|
||||||
|
},
|
||||||
"ssri": {
|
"ssri": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "http://r.cnpmjs.org/ssri/download/ssri-6.0.1.tgz",
|
"resolved": "http://r.cnpmjs.org/ssri/download/ssri-6.0.1.tgz",
|
||||||
@@ -13472,6 +13485,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"swiper": {
|
||||||
|
"version": "6.8.4",
|
||||||
|
"resolved": "https://registry.npmmirror.com/swiper/-/swiper-6.8.4.tgz",
|
||||||
|
"integrity": "sha512-O+buF9Q+sMA0H7luMS8R59hCaJKlpo8PXhQ6ZYu6Rn2v9OsFd4d1jmrv14QvxtQpKAvL/ZiovEeANI/uDGet7g==",
|
||||||
|
"requires": {
|
||||||
|
"dom7": "^3.0.0",
|
||||||
|
"ssr-window": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"table": {
|
"table": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "http://r.cnpmjs.org/table/download/table-4.0.2.tgz",
|
"resolved": "http://r.cnpmjs.org/table/download/table-4.0.2.tgz",
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"portfinder": "^1.0.23",
|
"portfinder": "^1.0.23",
|
||||||
"script-loader": "^0.7.2",
|
"script-loader": "^0.7.2",
|
||||||
|
"swiper": "^6.8.4",
|
||||||
"vue": "^2.6.10",
|
"vue": "^2.6.10",
|
||||||
"vue-axios": "^2.1.2",
|
"vue-axios": "^2.1.2",
|
||||||
"vue-baidu-map": "^0.21.22",
|
"vue-baidu-map": "^0.21.22",
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import request from "@/router/axios";
|
import request from "@/router/axios";
|
||||||
|
|
||||||
/*获取人才列表*/
|
/*获取人才列表*/
|
||||||
export const getList = (current, size, params, groupId) => {
|
export const getList = (params) => {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/jobslink-api/serve/list",
|
url: "/api/jobslink-api/tenant/talents/list",
|
||||||
method: "get",
|
method: "get",
|
||||||
params: {...params, current, size, groupId}
|
params
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ export const getDept = () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getDepTree = () => {
|
||||||
|
return request({
|
||||||
|
url: "/api/jobslink-api/serve/tree",
|
||||||
|
method: "get",
|
||||||
|
params: {}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/*新建分组*/
|
/*新建分组*/
|
||||||
export const addDept = row => {
|
export const addDept = row => {
|
||||||
return request({
|
return request({
|
||||||
@@ -270,3 +278,20 @@ export const getMainServeUserLog = params => {
|
|||||||
params: params
|
params: params
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export const saveGroupServeInfo = (data) => {
|
||||||
|
return request({
|
||||||
|
url: "/api/jobslink-api/serve/tree/save",
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const updateGroupServeInfo = (data) => {
|
||||||
|
return request({
|
||||||
|
url: "/api/jobslink-api/serve/tree/update",
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -121,3 +121,19 @@ export const getDeptAllTree = (params) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const talentsEliminate = (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/api/jobslink-api/tenant/talents/eliminate',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const talentsApproval = (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/api/jobslink-api/tenant/talents/approval',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
:before-close="handleClose"
|
:before-close="handleClose"
|
||||||
append-to-body>
|
append-to-body>
|
||||||
<span>{{ subTitle }}</span>
|
<span>{{ subTitle }}</span>
|
||||||
<div v-if="status === 1">
|
<slot name="header"></slot>
|
||||||
|
<div v-if="flagState === 1">
|
||||||
|
<slot name="content"></slot>
|
||||||
<div class="input_box">
|
<div class="input_box">
|
||||||
<el-input type="textarea" v-model="input" placeholder="请输入内容"></el-input>
|
<el-input type="textarea" v-model="input" placeholder="请输入内容"></el-input>
|
||||||
</div>
|
</div>
|
||||||
@@ -18,9 +20,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<slot name="footer"></slot>
|
||||||
<el-button @click="handleClose">取 消</el-button>
|
<el-button @click="handleClose">取 消</el-button>
|
||||||
<el-button :type="btnTypes[status]" @click="handleCancel">驳 回</el-button>
|
<el-button v-if="backBtnHide" :type="btnTypes[flagState]" @click="handleCancel">驳 回</el-button>
|
||||||
<el-button type="primary" @click="handleConfirm">通 过</el-button>
|
<el-button type="primary" @click="handleConfirm">{{ submitText }}</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
@@ -50,6 +53,20 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
backBtnStatus: {
|
||||||
|
default: 0,
|
||||||
|
type: Number,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
submitText: {
|
||||||
|
default: '通 过',
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
backBtnHide: {
|
||||||
|
default: true,
|
||||||
|
type: Boolean,
|
||||||
|
},
|
||||||
visible: {
|
visible: {
|
||||||
default: false,
|
default: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@@ -76,7 +93,14 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {},
|
computed: {
|
||||||
|
flagState() {
|
||||||
|
if (this.backBtnStatus) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return this.status
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.$emit('onClose')
|
this.$emit('onClose')
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ export default [
|
|||||||
children: [{
|
children: [{
|
||||||
path: 'index',
|
path: 'index',
|
||||||
name: '首页',
|
name: '首页',
|
||||||
meta: {i18n: 'dashboard',code: "wel"},
|
meta: {i18n: 'dashboard', code: "wel"},
|
||||||
component: () =>
|
component: () =>
|
||||||
// import(/* webpackChunkName: "views" */ '@/views/wel/index')
|
// import(/* webpackChunkName: "views" */ '@/views/wel/index')
|
||||||
import(/* webpackChunkName: "views" */ '@/views/workstation/workbench')
|
import(/* webpackChunkName: "views" */ '@/views/workstation/workbench')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -24,7 +24,7 @@ export default [
|
|||||||
name: '测试页',
|
name: '测试页',
|
||||||
meta: {i18n: 'test'},
|
meta: {i18n: 'test'},
|
||||||
component: () =>
|
component: () =>
|
||||||
import(/* webpackChunkName: "views" */ '@/views/util/test')
|
import(/* webpackChunkName: "views" */ '@/views/util/test')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -36,7 +36,7 @@ export default [
|
|||||||
name: '字典管理',
|
name: '字典管理',
|
||||||
meta: {i18n: 'dict'},
|
meta: {i18n: 'dict'},
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/util/demo/dict-horizontal')
|
/* webpackChunkName: "views" */ '@/views/util/demo/dict-horizontal')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -48,7 +48,7 @@ export default [
|
|||||||
name: '字典管理',
|
name: '字典管理',
|
||||||
meta: {i18n: 'dict'},
|
meta: {i18n: 'dict'},
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/util/demo/dict-vertical')
|
/* webpackChunkName: "views" */ '@/views/util/demo/dict-vertical')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -60,7 +60,7 @@ export default [
|
|||||||
name: '个人信息',
|
name: '个人信息',
|
||||||
meta: {i18n: 'info'},
|
meta: {i18n: 'info'},
|
||||||
component: () =>
|
component: () =>
|
||||||
import(/* webpackChunkName: "views" */ '@/views/system/userinfo')
|
import(/* webpackChunkName: "views" */ '@/views/system/userinfo')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -76,7 +76,7 @@ export default [
|
|||||||
isTab: false,
|
isTab: false,
|
||||||
},
|
},
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/manage/mission/zpView')
|
/* webpackChunkName: "views" */ '@/views/manage/mission/zpView')
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -87,9 +87,9 @@ export default [
|
|||||||
children: [{
|
children: [{
|
||||||
path: 'index',
|
path: 'index',
|
||||||
name: '客户消息',
|
name: '客户消息',
|
||||||
meta: {i18n: 'news',code:'news'},
|
meta: {i18n: 'news', code: 'news'},
|
||||||
component: () =>
|
component: () =>
|
||||||
import(/* webpackChunkName: "views" */ '@/views/tenant/news/index')
|
import(/* webpackChunkName: "views" */ '@/views/tenant/news/index')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -101,7 +101,7 @@ export default [
|
|||||||
name: '账户信息',
|
name: '账户信息',
|
||||||
meta: {i18n: 'accountsafe', code: 'accountsafe'},
|
meta: {i18n: 'accountsafe', code: 'accountsafe'},
|
||||||
component: () =>
|
component: () =>
|
||||||
import(/* webpackChunkName: "views" */ '@/views/tenant/account/index')
|
import(/* webpackChunkName: "views" */ '@/views/tenant/account/index')
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@@ -147,7 +147,7 @@ export default [
|
|||||||
},
|
},
|
||||||
props: true,
|
props: true,
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/manage/policies/news/addNews')
|
/* webpackChunkName: "views" */ '@/views/manage/policies/news/addNews')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -169,7 +169,7 @@ export default [
|
|||||||
},
|
},
|
||||||
props: true,
|
props: true,
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/manage/policies/article/allArticle/addNews')
|
/* webpackChunkName: "views" */ '@/views/manage/policies/article/allArticle/addNews')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -191,7 +191,7 @@ export default [
|
|||||||
},
|
},
|
||||||
props: true,
|
props: true,
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/tenant/main/serve/Dialog/addLog')
|
/* webpackChunkName: "views" */ '@/views/tenant/main/serveCopy/Dialog/addLog')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -213,7 +213,7 @@ export default [
|
|||||||
},
|
},
|
||||||
props: true,
|
props: true,
|
||||||
component: () => import(
|
component: () => import(
|
||||||
/* webpackChunkName: "views" */ '@/views/manage/recommend/manageContent/contentManage')
|
/* webpackChunkName: "views" */ '@/views/manage/recommend/manageContent/contentManage')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ export default {
|
|||||||
}, 1000),
|
}, 1000),
|
||||||
leftSearch() {
|
leftSearch() {
|
||||||
this.leftPages.currentPage = 1
|
this.leftPages.currentPage = 1
|
||||||
this.getLeftUserList('serve')
|
this.getLeftUserList('serveCopy')
|
||||||
console.log('leftpages:', this.leftPages)
|
console.log('leftpages:', this.leftPages)
|
||||||
},
|
},
|
||||||
leftCurrentPageChange(current) {
|
leftCurrentPageChange(current) {
|
||||||
@@ -366,7 +366,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groupNameChange() {
|
groupNameChange() {
|
||||||
this.getLeftUserList('serve')
|
this.getLeftUserList('serveCopy')
|
||||||
},
|
},
|
||||||
async pushPostAndUser() {
|
async pushPostAndUser() {
|
||||||
this.pushState = true
|
this.pushState = true
|
||||||
|
|||||||
@@ -206,7 +206,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
<!-- <serve-detail ref="copy" @back="backIndex" v-show="false"></serve-detail> -->
|
<!-- <serveCopy-detail ref="copy" @back="backIndex" v-show="false"></serveCopy-detail> -->
|
||||||
<el-drawer
|
<el-drawer
|
||||||
size="85%"
|
size="85%"
|
||||||
append-to-body
|
append-to-body
|
||||||
@@ -398,7 +398,7 @@ import workView from "./workMissionView.vue"
|
|||||||
import {serviceType} from "@/common/dic";
|
import {serviceType} from "@/common/dic";
|
||||||
import Tinymce from "@/components/Tinymce";
|
import Tinymce from "@/components/Tinymce";
|
||||||
import {deepClone} from "@/util/util";
|
import {deepClone} from "@/util/util";
|
||||||
import PushService from "@/views/tenant/main/serve/Dialog/pushService.vue";
|
import PushService from "@/views/tenant/main/serveCopy/Dialog/pushService.vue";
|
||||||
import TextTooltip from "@/components/text-tooltip/index.vue";
|
import TextTooltip from "@/components/text-tooltip/index.vue";
|
||||||
|
|
||||||
const page = {
|
const page = {
|
||||||
|
|||||||
423
src/views/tenant/main/serve/Dialog/addGroup.vue
Normal file
423
src/views/tenant/main/serve/Dialog/addGroup.vue
Normal file
@@ -0,0 +1,423 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 新建分组模板 -->
|
||||||
|
<el-dialog
|
||||||
|
:title="title"
|
||||||
|
append-to-body
|
||||||
|
:visible.sync="box"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
@closed="closed"
|
||||||
|
width="70%"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
:model="form"
|
||||||
|
@submit.native.prevent
|
||||||
|
:rules="rules"
|
||||||
|
ref="groups"
|
||||||
|
label-position="right"
|
||||||
|
label-width="100px"
|
||||||
|
>
|
||||||
|
<el-collapse v-model="activeNames">
|
||||||
|
<el-collapse-item title="分组信息" name="1">
|
||||||
|
<el-form-item style="width: 400px" label="分组名称" prop="groupName">
|
||||||
|
<el-input v-model="form.groupName" placeholder="请输入 分组名称" size="small" :disabled="loading"
|
||||||
|
maxlength="40"
|
||||||
|
show-word-limit></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item style="width: 400px" label="分组排序" prop="sort">
|
||||||
|
<el-input type="number" v-model="form.sort" min="0" placeholder="请输入 分组名称"
|
||||||
|
size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-collapse-item>
|
||||||
|
<el-collapse-item title="服务信息" name="2">
|
||||||
|
<div class="scroll-row">
|
||||||
|
<el-card class="card-row" shadow="hover" v-for="(item, index) in serveAll" :key="index">
|
||||||
|
<div :class="`card-row-name ${selectServer.id === item.id && 'color-blue'}`" @click="changeCard(item)">
|
||||||
|
{{ item.name }}
|
||||||
|
</div>
|
||||||
|
<div class="del-btn" @click="delServer(item)">
|
||||||
|
<i style="font-size: 18px" class="el-icon-circle-close"></i>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="card-row card-add" shadow="hover">
|
||||||
|
<div class="card-row-name" @click="changeCard(null)">添加<i
|
||||||
|
class="el-icon-circle-plus-outline"></i></div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
<div class="car-content" v-if="selectShow">
|
||||||
|
<el-form-item style="width: 400px" label="服务名称" prop="name">
|
||||||
|
<el-input v-model="serveForm.name" placeholder="请输入 服务名称" size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item style="width: 400px" label="机构名称" prop="companyName">-->
|
||||||
|
<!-- <el-input v-model="serveForm.companyName" placeholder="请输入 机构名称" size="small"></el-input>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<el-form-item label="服务场景" prop="serveLabels">
|
||||||
|
<tag-select v-model="serveForm.serveLabels" :prop="{ label: 'name', value: 'name' }" :data="workDataList">
|
||||||
|
</tag-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="政策指南" prop="policyIds">
|
||||||
|
<el-cascader
|
||||||
|
style="width: 100%"
|
||||||
|
size="small"
|
||||||
|
v-model="serveForm.policyIds"
|
||||||
|
:options="listAllPolicyTree"
|
||||||
|
:props="{ expandTrigger: 'hover', multiple: true, label: 'name', value: 'value', children: 'child'}"
|
||||||
|
@change="handleChange"
|
||||||
|
filterable
|
||||||
|
></el-cascader>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="重点人群" prop="talentsGroupId">
|
||||||
|
<el-select style="width: 100%" v-model="serveForm.talentsGroupId" multiple filterable
|
||||||
|
placeholder="请输入 重点人群">
|
||||||
|
<el-option
|
||||||
|
v-for="item in talentsList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.groupName"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remarks">
|
||||||
|
<el-input type="textarea" v-model="serveForm.remarks" placeholder="请输入 备注"
|
||||||
|
size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" style="text-align:right">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-check"
|
||||||
|
@click="handleSubmit"
|
||||||
|
:loading="loading"
|
||||||
|
>提交
|
||||||
|
</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-circle-close" @click=" box = false" :loading="loading">取消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {saveGroupServeInfo, updateDept, updateGroupServeInfo} from "@/api/tenant/serve";
|
||||||
|
import {deepClone} from "@/util/util";
|
||||||
|
|
||||||
|
const prefix = 'custom-'
|
||||||
|
const initRule = {
|
||||||
|
groupName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
whitespace: true,
|
||||||
|
message: "请填写分组名称",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
const initFormValue = {
|
||||||
|
groupName: "",
|
||||||
|
sort: 0,
|
||||||
|
}
|
||||||
|
const initServeForm = {
|
||||||
|
companyName: '',
|
||||||
|
name: '',
|
||||||
|
serveLabels: [],
|
||||||
|
policyIds: [],
|
||||||
|
talentsGroupId: [],
|
||||||
|
remarks: '',
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
treeData: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
},
|
||||||
|
listAllPolicyTree: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
},
|
||||||
|
worktypeDic: {
|
||||||
|
type: Object,
|
||||||
|
default: {},
|
||||||
|
},
|
||||||
|
talentsList: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: "",
|
||||||
|
title: "",
|
||||||
|
groupId: "",
|
||||||
|
loading: false,
|
||||||
|
box: false,
|
||||||
|
form: Object.assign({}, initFormValue),
|
||||||
|
serveForm: Object.assign({}, initServeForm),
|
||||||
|
rules: Object.assign({}, initRule),
|
||||||
|
activeNames: ['1', '2'],
|
||||||
|
serveAll: [],
|
||||||
|
selectServer: {},
|
||||||
|
selectShow: false,
|
||||||
|
selectLabelNameTypes: [],
|
||||||
|
tempWorkType: [],
|
||||||
|
tabDataSource: [],
|
||||||
|
editData: null,
|
||||||
|
customNum: 1,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log('watch', this.data)
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
workDataList() {
|
||||||
|
let rel = deepClone(this.data)
|
||||||
|
for (let i = 0; i < this.tempWorkType.length; i++) {
|
||||||
|
const key = this.tempWorkType[i];
|
||||||
|
if (key && !this.worktypeDic.hasOwnProperty(key)) {
|
||||||
|
rel.push({name: key});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rel
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
closed() {
|
||||||
|
this.form = {
|
||||||
|
groupName: "",
|
||||||
|
};
|
||||||
|
if (this.$refs.groups) {
|
||||||
|
this.$refs.groups.resetFields();
|
||||||
|
}
|
||||||
|
this.loading = false;
|
||||||
|
},
|
||||||
|
openDialog(type, data) {
|
||||||
|
this.type = type;
|
||||||
|
if (this.type === "add") {
|
||||||
|
this.title = "新建分组";
|
||||||
|
this.form.groupName = '';
|
||||||
|
// this.form.sort = 0;
|
||||||
|
this.serveAll = []
|
||||||
|
this.editData = null
|
||||||
|
this.box = true;
|
||||||
|
} else if (this.type === "edit") {
|
||||||
|
this.title = "编辑分组";
|
||||||
|
this.groupId = data.id;
|
||||||
|
this.form.groupName = data.groupName;
|
||||||
|
// this.form.sort = data.sort;
|
||||||
|
this.serveAll = data.children
|
||||||
|
this.editData = data
|
||||||
|
this.box = true;
|
||||||
|
}
|
||||||
|
this.selectShow = false
|
||||||
|
this.selectServer = {}
|
||||||
|
this.serveForm = Object.assign({}, initServeForm)
|
||||||
|
this.customNum = 1
|
||||||
|
},
|
||||||
|
async handleSubmit() {
|
||||||
|
if (this.selectServer.id) {
|
||||||
|
let copyForm = deepClone(this.serveForm)
|
||||||
|
let serve = {
|
||||||
|
...this.selectServer,
|
||||||
|
...copyForm,
|
||||||
|
policyIds: copyForm.policyIds ? copyForm.policyIds.join(',') : '',
|
||||||
|
talentsGroupId: copyForm.talentsGroupId ? copyForm.talentsGroupId.join(',') : '',
|
||||||
|
serveLabels: copyForm.serveLabels ? copyForm.serveLabels.map((item) => item.name).join(',') : '',
|
||||||
|
}
|
||||||
|
if (this.tabDataSource.find((item) => item.id === serve.id)) {
|
||||||
|
this.tabDataSource = this.tabDataSource.map((item) => {
|
||||||
|
if (item.id === serve.id) {
|
||||||
|
return deepClone(serve)
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.tabDataSource = [...this.tabDataSource.filter((item) => item.id !== serve.id), deepClone(serve)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const serveAll = deepClone(this.serveAll)
|
||||||
|
const tabDataSource = deepClone(this.tabDataSource)
|
||||||
|
// prefix
|
||||||
|
const customList = tabDataSource.filter((item) => /^custom-/ig.test(item.id))
|
||||||
|
// 替换数据
|
||||||
|
for (let i = 0; i < tabDataSource.length; i++) {
|
||||||
|
for (let j = 0; j < serveAll.length; j++) {
|
||||||
|
if (serveAll[j].id === tabDataSource[i].id) {
|
||||||
|
serveAll[j] = tabDataSource[i]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
serveAll.forEach((item) => {
|
||||||
|
if (/^custom-/ig.test(item.id)) {
|
||||||
|
delete item.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
let params, resData
|
||||||
|
switch (true) {
|
||||||
|
case this.type === 'add' :
|
||||||
|
params = {
|
||||||
|
...this.form,
|
||||||
|
children: serveAll
|
||||||
|
}
|
||||||
|
if (this.form.groupName) {
|
||||||
|
this.loading = true;
|
||||||
|
resData = await saveGroupServeInfo(params)
|
||||||
|
} else {
|
||||||
|
this.$message.error('请输入分组名称');
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case this.type === 'edit' :
|
||||||
|
params = {
|
||||||
|
...this.editData,
|
||||||
|
...this.form,
|
||||||
|
children: serveAll
|
||||||
|
}
|
||||||
|
if (this.form.groupName) {
|
||||||
|
this.loading = true;
|
||||||
|
resData = await updateGroupServeInfo(params)
|
||||||
|
} else {
|
||||||
|
this.$message.error('请输入分组名称');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
this.$message.success('操作成功!');
|
||||||
|
this.loading = false;
|
||||||
|
this.$emit("refresh");
|
||||||
|
this.box = false;
|
||||||
|
} else {
|
||||||
|
this.loading = false;
|
||||||
|
this.$message.success('操作失败!');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeCard(data) {
|
||||||
|
// 校验
|
||||||
|
if (this.selectServer.id) {
|
||||||
|
let copyForm = deepClone(this.serveForm)
|
||||||
|
let serve = {
|
||||||
|
...this.selectServer,
|
||||||
|
...copyForm,
|
||||||
|
policyIds: copyForm.policyIds ? copyForm.policyIds.join(',') : '',
|
||||||
|
talentsGroupId: copyForm.talentsGroupId ? copyForm.talentsGroupId.join(',') : '',
|
||||||
|
serveLabels: copyForm.serveLabels ? copyForm.serveLabels.map((item) => item.name).join(',') : '',
|
||||||
|
}
|
||||||
|
if (this.tabDataSource.find((item) => item.id === serve.id)) {
|
||||||
|
this.tabDataSource = this.tabDataSource.map((item) => {
|
||||||
|
if (item.id === serve.id) {
|
||||||
|
return deepClone(serve)
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.tabDataSource = [...this.tabDataSource.filter((item) => item.id !== serve.id), deepClone(serve)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 新增
|
||||||
|
if (!data) {
|
||||||
|
const fm = {
|
||||||
|
...Object.assign({}, initServeForm),
|
||||||
|
name: `自定义服务名${this.customNum}`,
|
||||||
|
id: `${prefix}${this.customNum}`
|
||||||
|
}
|
||||||
|
this.selectShow = true
|
||||||
|
this.selectServer = fm
|
||||||
|
this.serveForm = fm
|
||||||
|
this.tempWorkType = []
|
||||||
|
this.customNum++
|
||||||
|
this.serveAll = [...this.serveAll, deepClone(fm)]
|
||||||
|
this.tabDataSource.push(fm)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回填
|
||||||
|
let source = deepClone(data)
|
||||||
|
if (this.tabDataSource.find((item) => item.id === data.id)) {
|
||||||
|
source = deepClone(this.tabDataSource.filter((item) => (item.id === data.id))[0])
|
||||||
|
} else {
|
||||||
|
this.tabDataSource.push(data)
|
||||||
|
}
|
||||||
|
this.selectShow = true
|
||||||
|
this.selectServer = source
|
||||||
|
this.tempWorkType = source.serveLabels ? source.serveLabels.split(",") : [];
|
||||||
|
this.serveForm.talentsGroupId = source.talentsGroupId ? source.talentsGroupId.split(',') : []
|
||||||
|
this.serveForm.serveLabels = source.serveLabels ? source.serveLabels.split(',').map((item) => ({name: item})) : []
|
||||||
|
const policyIds = this.treeIteration(this.listAllPolicyTree, source.policyIds.split(','))
|
||||||
|
this.serveForm.policyIds = policyIds
|
||||||
|
// this.serveForm.companyName = source.companyName
|
||||||
|
this.serveForm.name = source.name
|
||||||
|
this.serveForm.remarks = source.remarks
|
||||||
|
this.serveForm.id = source.id
|
||||||
|
},
|
||||||
|
delServer(data) {
|
||||||
|
this.serveAll = this.serveAll.filter((item) => item.id !== data.id)
|
||||||
|
this.tabDataSource = this.tabDataSource.filter((item) => item.id !== data.id)
|
||||||
|
},
|
||||||
|
handleChange(policy) {
|
||||||
|
console.log(policy)
|
||||||
|
this.serveForm.policyIds = policy
|
||||||
|
},
|
||||||
|
treeIteration(tree, ids) {
|
||||||
|
if (!(tree.length && ids.length)) return;
|
||||||
|
let arr = []
|
||||||
|
tree.forEach((treeItem) => {
|
||||||
|
treeItem.child.forEach((item) => {
|
||||||
|
if (ids.some((id) => item.value === id)) {
|
||||||
|
arr.push([treeItem.value, item.value])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return arr;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.color-blue {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll-row {
|
||||||
|
overflow-x: scroll;
|
||||||
|
width: 100%;
|
||||||
|
height: fit-content;
|
||||||
|
display: -webkit-box;
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-row {
|
||||||
|
width: fit-content;
|
||||||
|
margin-right: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.del-btn {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-row-name {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-add {
|
||||||
|
color: #e5e5e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.car-content {
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -333,7 +333,7 @@ export default {
|
|||||||
}, 1000),
|
}, 1000),
|
||||||
leftSearch() {
|
leftSearch() {
|
||||||
this.leftPages.currentPage = 1
|
this.leftPages.currentPage = 1
|
||||||
this.getLeftUserList('serve')
|
this.getLeftUserList('serveCopy')
|
||||||
console.log('leftpages:', this.leftPages)
|
console.log('leftpages:', this.leftPages)
|
||||||
},
|
},
|
||||||
leftCurrentPageChange(current) {
|
leftCurrentPageChange(current) {
|
||||||
@@ -373,7 +373,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
groupNameChange() {
|
groupNameChange() {
|
||||||
this.getLeftUserList('serve')
|
this.getLeftUserList('serveCopy')
|
||||||
},
|
},
|
||||||
async pushPostAndUser() {
|
async pushPostAndUser() {
|
||||||
this.pushState = true
|
this.pushState = true
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
594
src/views/tenant/main/serveCopy/Dialog/pushService.vue
Normal file
594
src/views/tenant/main/serveCopy/Dialog/pushService.vue
Normal file
@@ -0,0 +1,594 @@
|
|||||||
|
<template>
|
||||||
|
<el-drawer size="100%" append-to-body title="推送服务" :visible.sync="viewDrawer">
|
||||||
|
<div>
|
||||||
|
<div class="content">
|
||||||
|
<!-- 用户板块 -->
|
||||||
|
<div class="content-left relative">
|
||||||
|
<avue-crud height="900" width="500" ref="crud1" :data="leftUserDataList" :option="leftUserOptions"
|
||||||
|
:page.sync="leftPages"
|
||||||
|
@current-change="leftCurrentPageChange" @size-change="leftSizePageChange"
|
||||||
|
@selection-change="leftSelectionChange">
|
||||||
|
<template slot="menuLeft">
|
||||||
|
<div class="leftInput">
|
||||||
|
<el-input size="small" v-model="formInline.userName" class="input-with-select" placeholder="用户名">
|
||||||
|
<el-select size="small" v-model="formInline.groupId" slot="prepend" class="selectWidth"
|
||||||
|
placeholder="请选择">
|
||||||
|
<el-option v-for="item in leftServeOptions" :key="item.id" :label="item.groupName"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button size="small" slot="append" class="input-search" @click="leftSearch">搜索</el-button>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template slot="labelsBase" slot-scope="{row}">
|
||||||
|
<TextTooltip :content="row.labelsBase" length="20"></TextTooltip>
|
||||||
|
</template>
|
||||||
|
</avue-crud>
|
||||||
|
<CustomLoading :visible="leftLoading" size="largeXXL" loading-text="用户数据加载中"></CustomLoading>
|
||||||
|
</div>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<div class="content-center">
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" size="small" @click="changeTabs(0)">匹配政策</el-button>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 30px">
|
||||||
|
<el-button :disabled="leftUserSelections.length > 0 ? false : true"
|
||||||
|
type="primary" @click="changeTabs(1)" size="small">匹配岗位
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<div class="content-right relative">
|
||||||
|
<avue-crud height="900" ref="crud2" :data="rightDataList"
|
||||||
|
:option="rightTabs ? rightPostOptions : rightPolicyOptions" :page.sync="rightPages"
|
||||||
|
@current-change="rightCurrentPageChange" @size-change="rightSizePageChange"
|
||||||
|
@selection-change="rightSelectionChange">
|
||||||
|
<template slot="menuLeft">
|
||||||
|
<el-input style="width: 300px" placeholder="搜索岗位" v-show="rightTabs === 1"
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
@input="searchInputChange" v-model="searchInput" clearable>
|
||||||
|
</el-input>
|
||||||
|
</template>
|
||||||
|
<template slot="labelName" slot-scope="{row}">
|
||||||
|
<TextTooltip :content="row.labelName" length="40"></TextTooltip>
|
||||||
|
</template>
|
||||||
|
<template slot="jobDescription" slot-scope="{row}">
|
||||||
|
<TextTooltip :content="row.jobDescription" length="40"></TextTooltip>
|
||||||
|
</template>
|
||||||
|
<template slot="address" slot-scope="{row}">
|
||||||
|
<TextTooltip :content="row.address" length="40"></TextTooltip>
|
||||||
|
</template>
|
||||||
|
</avue-crud>
|
||||||
|
<CustomLoading :visible="rightLoading" size="largeXXL" loading-text="智能分析匹配中"></CustomLoading>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-footer">
|
||||||
|
<el-button type="primary" style="width: 80px" size="small" :disabled="pushState" @click="onSubmit">
|
||||||
|
{{ pushState ? '推送中...' : rightTabs ? '推送岗位' : '推送政策' }}
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getListByids,
|
||||||
|
getSearchAll,
|
||||||
|
getSearchAllByUserId,
|
||||||
|
pushPolicyUserServe,
|
||||||
|
pushPostUserServe,
|
||||||
|
getListAllByPolicy
|
||||||
|
} from "@/api/tenant/serve.js";
|
||||||
|
import TextTooltip from "@/components/text-tooltip/index.vue";
|
||||||
|
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 baseOptions = {
|
||||||
|
size: 'medium',
|
||||||
|
dateBtn: false,
|
||||||
|
addBtn: false,
|
||||||
|
editBtn: false,
|
||||||
|
delBtn: false,
|
||||||
|
height: "auto",
|
||||||
|
reserveSelection: false,
|
||||||
|
border: true,
|
||||||
|
columnBtn: false,
|
||||||
|
refreshBtn: false,
|
||||||
|
menu: false,
|
||||||
|
tip: false,
|
||||||
|
selection: true,
|
||||||
|
align: 'center',
|
||||||
|
}
|
||||||
|
let leftUserOptions = {
|
||||||
|
...baseOptions,
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '机构名称',
|
||||||
|
prop: 'companyName',
|
||||||
|
fixed: true,
|
||||||
|
}, {
|
||||||
|
label: '姓名',
|
||||||
|
prop: 'name',
|
||||||
|
fixed: true,
|
||||||
|
}, {
|
||||||
|
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: 'idNumber',
|
||||||
|
width: 150,
|
||||||
|
}, {
|
||||||
|
label: '手机号',
|
||||||
|
prop: 'telphone',
|
||||||
|
}, {
|
||||||
|
label: "求职意愿",
|
||||||
|
prop: "willingJob",
|
||||||
|
}, {
|
||||||
|
label: "民族",
|
||||||
|
prop: "aac005",
|
||||||
|
type: 'select',
|
||||||
|
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
|
||||||
|
props: {
|
||||||
|
label: "dictValue",
|
||||||
|
value: "dictKey",
|
||||||
|
},
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入民族",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
label: "户口性质",
|
||||||
|
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",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
label: "户口所在地",
|
||||||
|
prop: "aac010",
|
||||||
|
width: 150,
|
||||||
|
}, {
|
||||||
|
label: "文化程度",
|
||||||
|
prop: "aac011",
|
||||||
|
type: 'select',
|
||||||
|
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
|
||||||
|
props: {
|
||||||
|
label: "dictValue",
|
||||||
|
value: "dictKey",
|
||||||
|
},
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入文化程度",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
label: '个人标签',
|
||||||
|
prop: 'labelsBase',
|
||||||
|
width: 150,
|
||||||
|
slot: true,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let rightPolicyOptions = {
|
||||||
|
...baseOptions,
|
||||||
|
column: [{
|
||||||
|
label: '政策名称',
|
||||||
|
prop: 'name',
|
||||||
|
}, {
|
||||||
|
label: '政策标签',
|
||||||
|
prop: 'labelName',
|
||||||
|
slot: true,
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
let rightPostOptions = {
|
||||||
|
...baseOptions,
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '岗位名称',
|
||||||
|
prop: 'jobName',
|
||||||
|
}, {
|
||||||
|
label: '用工单位',
|
||||||
|
prop: 'companyName',
|
||||||
|
}, {
|
||||||
|
label: '详细地址',
|
||||||
|
prop: 'address',
|
||||||
|
slot: true,
|
||||||
|
}, {
|
||||||
|
label: '岗位描述',
|
||||||
|
prop: 'jobDescription',
|
||||||
|
slot: true,
|
||||||
|
}, {
|
||||||
|
label: "岗位类型",
|
||||||
|
prop: "type1",
|
||||||
|
type: "select",
|
||||||
|
dicData: [
|
||||||
|
{
|
||||||
|
value: "0",
|
||||||
|
label: "零工岗位",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "1",
|
||||||
|
label: "全职岗位",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
display: false,
|
||||||
|
hide: true,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
components: {TextTooltip, CustomLoading},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formInline: {},
|
||||||
|
leftServeOptions: [],
|
||||||
|
leftUserDataList: [],
|
||||||
|
leftUserPages: {},
|
||||||
|
leftUserSelections: [],
|
||||||
|
leftPages: Object.assign({}, pages),
|
||||||
|
leftUserOptions: Object.assign({}, leftUserOptions),
|
||||||
|
leftLoading: false,
|
||||||
|
rightLoading: false,
|
||||||
|
rightDataList: [],
|
||||||
|
rightDataSelections: [],
|
||||||
|
rightPages: Object.assign({}, pages),
|
||||||
|
rightPolicyOptions: Object.assign({}, rightPolicyOptions),
|
||||||
|
rightPostOptions: Object.assign({}, rightPostOptions),
|
||||||
|
searchInput: '',
|
||||||
|
rightTabs: 0, // 0: 政策, 1: 岗位
|
||||||
|
pushState: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
visible: Boolean,
|
||||||
|
rowData: {default: null, type: Function},
|
||||||
|
changeVisible: {default: null, type: Function},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
viewDrawer: {
|
||||||
|
get() {
|
||||||
|
return this.visible;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$emit("update:visible", val);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
viewDrawer(val) {
|
||||||
|
val ? this.onPageLoad() : this.onPageInit()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onPageLoad() {
|
||||||
|
console.log('row', this.rowData)
|
||||||
|
if (!this.rowData) return
|
||||||
|
this.getLeftSignGroupList()
|
||||||
|
this.getLeftUserList()
|
||||||
|
// this.getRightListPolicy()
|
||||||
|
},
|
||||||
|
onPageInit() {
|
||||||
|
this.formInline = {}
|
||||||
|
this.leftServeOptions = []
|
||||||
|
this.leftUserDataList = []
|
||||||
|
this.leftUserSelections = []
|
||||||
|
this.leftUserPages = Object({}, pages)
|
||||||
|
this.leftPages = Object.assign({}, pages)
|
||||||
|
this.leftUserOptions = Object.assign({}, leftUserOptions)
|
||||||
|
this.leftLoading = false
|
||||||
|
this.rightLoading = false
|
||||||
|
this.rightDataList = []
|
||||||
|
this.rightDataSelections = []
|
||||||
|
this.rightPages = Object.assign({}, pages)
|
||||||
|
this.rightPolicyOptions = Object.assign({}, rightPolicyOptions)
|
||||||
|
this.rightPostOptions = Object.assign({}, rightPostOptions)
|
||||||
|
this.searchInput = ''
|
||||||
|
this.rightTabs = 0 // 0: 政策
|
||||||
|
this.pushState = false
|
||||||
|
this.$refs.crud1.selectClear()
|
||||||
|
this.$refs.crud2.selectClear()
|
||||||
|
},
|
||||||
|
changeTabs(type) {
|
||||||
|
this.rightDataList = []
|
||||||
|
this.rightTabs = type
|
||||||
|
this.rightDataSelections = []
|
||||||
|
this.$message.success('智能分析匹配中');
|
||||||
|
|
||||||
|
type === 0 && this.getRightListPolicy()
|
||||||
|
type === 1 && this.getRightSearchByUserId()
|
||||||
|
},
|
||||||
|
searchInputChange: debounce(function (val) {
|
||||||
|
this.getRightSearch()
|
||||||
|
}, 1000),
|
||||||
|
leftSearch() {
|
||||||
|
this.leftPages.currentPage = 1
|
||||||
|
this.getLeftUserList('serveCopy')
|
||||||
|
console.log('leftpages:', this.leftPages)
|
||||||
|
},
|
||||||
|
leftCurrentPageChange(current) {
|
||||||
|
this.leftPages.currentPage = current
|
||||||
|
this.getLeftUserList()
|
||||||
|
console.log('leftpages:', this.leftPages)
|
||||||
|
},
|
||||||
|
leftSizePageChange(current) {
|
||||||
|
this.leftPages.size = current
|
||||||
|
this.getLeftUserList()
|
||||||
|
console.log('leftpages:', this.leftPages)
|
||||||
|
},
|
||||||
|
rightCurrentPageChange(current) {
|
||||||
|
this.rightPages.currentPage = current
|
||||||
|
this.rightTabs === 0 && this.getRightListPolicy()
|
||||||
|
this.rightTabs === 1 && this.getRightSearchByUserId()
|
||||||
|
},
|
||||||
|
rightSizePageChange(current) {
|
||||||
|
this.rightPages.size = current
|
||||||
|
this.rightTabs === 0 && this.getRightListPolicy()
|
||||||
|
this.rightTabs === 1 && this.getRightSearchByUserId()
|
||||||
|
},
|
||||||
|
leftSelectionChange(val) {
|
||||||
|
this.leftUserSelections = val
|
||||||
|
console.log(val, '--------------------00000');
|
||||||
|
},
|
||||||
|
rightSelectionChange(val) {
|
||||||
|
this.rightDataSelections = val
|
||||||
|
},
|
||||||
|
onSubmit() {
|
||||||
|
if (!this.leftUserSelections.length) return this.$message.info('请选择推送用户')
|
||||||
|
if (!this.rightDataSelections.length) return this.$message.info('请选择推送政策或岗位')
|
||||||
|
if (this.rightTabs === 0) {
|
||||||
|
this.pushPolicyAndUser()
|
||||||
|
} else {
|
||||||
|
this.pushPostAndUser()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groupNameChange() {
|
||||||
|
this.getLeftUserList('serveCopy')
|
||||||
|
},
|
||||||
|
async pushPostAndUser() {
|
||||||
|
this.pushState = true
|
||||||
|
const createTime = Date.now() + 2000
|
||||||
|
// console.log(this.rightDataSelections,);
|
||||||
|
let params = {
|
||||||
|
serveId: this.rowData.id,
|
||||||
|
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,
|
||||||
|
userId: item.userId,
|
||||||
|
userName: item.name
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
console.log(params, "999999999999999999999999999");
|
||||||
|
let resData = await pushPostUserServe(params)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$message.success('岗位推送成功')
|
||||||
|
this.$refs.crud1.selectClear()
|
||||||
|
this.$refs.crud2.selectClear()
|
||||||
|
this.pushState = false
|
||||||
|
}, timed)
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async pushPolicyAndUser() {
|
||||||
|
this.pushState = true
|
||||||
|
const createTime = Date.now() + 2000
|
||||||
|
let params = {
|
||||||
|
serveId: this.rowData.id,
|
||||||
|
policyIds: this.rightDataSelections.map((item) => item.id),
|
||||||
|
users: this.leftUserSelections.map((item) => ({
|
||||||
|
idNumber: item.idNumber,
|
||||||
|
talentsId: item.id,
|
||||||
|
userId: item.userId,
|
||||||
|
userName: item.name
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
let resData = await pushPolicyUserServe(params)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$message.success('政策推送成功')
|
||||||
|
this.$refs.crud1.selectClear()
|
||||||
|
this.$refs.crud2.selectClear()
|
||||||
|
this.pushState = false
|
||||||
|
}, timed)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getRightSearch() {
|
||||||
|
let params = {keywords: this.searchInput || '1'}
|
||||||
|
const createTime = Date.now() + 3000
|
||||||
|
this.rightLoading = true
|
||||||
|
let resData = await getSearchAll(params)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
this.rightLoading = false
|
||||||
|
this.rightDataList = resData.data.data
|
||||||
|
}, timed)
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getRightSearchByUserId() {
|
||||||
|
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() + 3000
|
||||||
|
this.rightLoading = true
|
||||||
|
let params = {
|
||||||
|
idNumbers,
|
||||||
|
current: currentPage,
|
||||||
|
size,
|
||||||
|
}
|
||||||
|
let paramsBody = {
|
||||||
|
willingJobs: willingJobs
|
||||||
|
}
|
||||||
|
console.log(params, paramsBody)
|
||||||
|
let resData = await getSearchAllByUserId(params, paramsBody)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
const {records, total, size, current} = resData.data.data
|
||||||
|
this.rightLoading = false
|
||||||
|
this.rightDataList = records
|
||||||
|
this.rightPages = {total, size, currentPage: current}
|
||||||
|
}, timed)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getRightListPolicy() {
|
||||||
|
const {currentPage, size} = this.rightPages
|
||||||
|
let params = {
|
||||||
|
ids: this.rowData.policyIds,
|
||||||
|
current: currentPage,
|
||||||
|
size,
|
||||||
|
}
|
||||||
|
const createTime = Date.now() + 3000
|
||||||
|
this.rightLoading = true
|
||||||
|
let resData = await getListByids(params)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
// const {records, total, size, current} = resData.data.data
|
||||||
|
this.rightLoading = false
|
||||||
|
// this.rightDataList = records
|
||||||
|
// this.rightPages = {total, size, currentPage: current}
|
||||||
|
this.rightPages = {total: resData.data.data.length, currentPage: 1}
|
||||||
|
this.rightDataList = resData.data.data
|
||||||
|
}, timed)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getLeftUserList(type) {
|
||||||
|
const {currentPage, size} = this.leftPages
|
||||||
|
const createTime = Date.now() + 3000
|
||||||
|
let params = {
|
||||||
|
...this.formInline,
|
||||||
|
current: currentPage,
|
||||||
|
size,
|
||||||
|
labels: this.rowData.talentsNames.join(','),
|
||||||
|
talentsGroupId: this.rowData.talentsGroupId
|
||||||
|
}
|
||||||
|
console.log('params', params)
|
||||||
|
// params.labels = '未分组'
|
||||||
|
this.leftLoading = true
|
||||||
|
let resData = await getListAllByPolicy(params)
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
|
||||||
|
setTimeout(() => {
|
||||||
|
const {records, total, size, current} = resData.data.data
|
||||||
|
this.leftUserDataList = records
|
||||||
|
this.leftPages = {total, size, currentPage: current}
|
||||||
|
console.log('leftpages:', this.leftPages)
|
||||||
|
this.leftLoading = false
|
||||||
|
}, timed)
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getLeftSignGroupList() {
|
||||||
|
const arr = this.rowData.talentsNames.map((v) => ({groupName: v, value: v}))
|
||||||
|
this.leftServeOptions = [{groupName: '全部'}, ...arr]
|
||||||
|
// let params = { labels: this.rowData.talentsNames.join(',') }
|
||||||
|
// params.labels = '未分组'
|
||||||
|
// let resData = await getListAllByPolicy(params)
|
||||||
|
// if ( resData.data.code === 200 ) {
|
||||||
|
// this.leftServeOptions = [{groupName: '全部', value: ''}, ...resData.data.data]
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: calc(50% - 40px) 80px calc(50% - 80px);
|
||||||
|
grid-gap: 20px;
|
||||||
|
|
||||||
|
.content-left {
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-center {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-right {
|
||||||
|
|
||||||
|
//修改动画的大小 给文字加粗效果
|
||||||
|
.right-search {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftInput {
|
||||||
|
width: 500px;
|
||||||
|
|
||||||
|
.selectWidth {
|
||||||
|
width: 160px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__inner {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-search {
|
||||||
|
margin-right: -15px;
|
||||||
|
margin-bottom: -10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .el-loading-spinner {
|
||||||
|
font-size: 80px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .el-loading-spinner .circular {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-footer {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.relative {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
1752
src/views/tenant/main/serveCopy/index.vue
Normal file
1752
src/views/tenant/main/serveCopy/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -93,6 +93,21 @@
|
|||||||
<span v-else>{{ row.name }}(<span style="color: red;">未实名</span>)</span> -->
|
<span v-else>{{ row.name }}(<span style="color: red;">未实名</span>)</span> -->
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
<template slot-scope="{row}" slot="menu">
|
||||||
|
<el-button type="text"
|
||||||
|
icon="el-icon-document"
|
||||||
|
size="small"
|
||||||
|
@click="serveLog(row)"
|
||||||
|
>查看日志
|
||||||
|
</el-button>
|
||||||
|
<el-button type="text"
|
||||||
|
icon="el-icon-circle-check"
|
||||||
|
size="small"
|
||||||
|
@click="checkUserInfo(row)"
|
||||||
|
>剔除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!--/自定义按钮-->
|
<!--/自定义按钮-->
|
||||||
<template slot="menuRight">
|
<template slot="menuRight">
|
||||||
<el-button
|
<el-button
|
||||||
@@ -106,6 +121,37 @@
|
|||||||
</template>
|
</template>
|
||||||
</avue-crud>
|
</avue-crud>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
title="服务日志"
|
||||||
|
size="80%"
|
||||||
|
:append-to-body="true"
|
||||||
|
:before-close="handleCloseLog"
|
||||||
|
:visible.sync="innerDrawerLog">
|
||||||
|
<!-- <div>
|
||||||
|
<span>姓名:</span>
|
||||||
|
<span>身份证号:</span>
|
||||||
|
</div> -->
|
||||||
|
<avue-crud
|
||||||
|
:data="logDataSource"
|
||||||
|
:option="logOption"
|
||||||
|
:page.sync="logPage"
|
||||||
|
:table-loading="loadingLog"
|
||||||
|
@row-save="saveLog"
|
||||||
|
@row-update="saveUpdateLog"
|
||||||
|
@row-del="removeLog"
|
||||||
|
@size-change="logSizeChange"
|
||||||
|
@current-change="logCurrentChange"
|
||||||
|
>
|
||||||
|
<!-- <template slot="menuLeft">
|
||||||
|
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
|
||||||
|
</template>
|
||||||
|
<template slot="menu" slot-scope="{row}">
|
||||||
|
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">修改</el-button>
|
||||||
|
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">查看附件</el-button>
|
||||||
|
</template> -->
|
||||||
|
</avue-crud>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
<!--批量导入-->
|
<!--批量导入-->
|
||||||
<el-dialog title="导入" append-to-body :visible.sync="excelBox" :close-on-click-modal="false" width="555px">
|
<el-dialog title="导入" append-to-body :visible.sync="excelBox" :close-on-click-modal="false" width="555px">
|
||||||
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"
|
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"
|
||||||
@@ -125,6 +171,28 @@
|
|||||||
<transfer-groups ref="transferGroups" @refresh="refresh" :ids="ids"></transfer-groups>
|
<transfer-groups ref="transferGroups" @refresh="refresh" :ids="ids"></transfer-groups>
|
||||||
<!--/转移分组dialog-->
|
<!--/转移分组dialog-->
|
||||||
<resume ref="resume" v-show="false"></resume>
|
<resume ref="resume" v-show="false"></resume>
|
||||||
|
|
||||||
|
<PromptDialog
|
||||||
|
:visible="dialogFlag"
|
||||||
|
title="剔除"
|
||||||
|
:back-btn-hide="false"
|
||||||
|
submit-text="确 认"
|
||||||
|
sub-title="请核对人员信息后再进行审核通过,剔除该用户将从人群中删除,在人员服务日志中可见"
|
||||||
|
:tips="[
|
||||||
|
'人员信息描述不清晰或过于简单;',
|
||||||
|
'人员信息存在违法违规行为;',
|
||||||
|
'人员信息的薪资、福利等待遇不符合市场标准;',
|
||||||
|
]"
|
||||||
|
@onClose="dialogFlag = false; backInput = ''"
|
||||||
|
@onConfirm="diaLogConfirm"
|
||||||
|
>
|
||||||
|
<template v-slot:header>
|
||||||
|
<div class="input_box" style="margin-top: 20px">
|
||||||
|
<el-input type="textarea" v-model="backInput" placeholder="请输入备注"></el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</PromptDialog>
|
||||||
|
|
||||||
</basic-container>
|
</basic-container>
|
||||||
<ied ref="ied"></ied>
|
<ied ref="ied"></ied>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -140,7 +208,9 @@ import {
|
|||||||
detail,
|
detail,
|
||||||
getDept,
|
getDept,
|
||||||
removeDept,
|
removeDept,
|
||||||
upload, getDeptMyTree,
|
upload,
|
||||||
|
getDeptMyTree,
|
||||||
|
talentsEliminate
|
||||||
} from "@/api/tenant/talents";
|
} from "@/api/tenant/talents";
|
||||||
import {getWorkTypes, getLabelList} from "@/api/tenant/common";
|
import {getWorkTypes, getLabelList} from "@/api/tenant/common";
|
||||||
import {mapGetters} from "vuex";
|
import {mapGetters} from "vuex";
|
||||||
@@ -152,7 +222,14 @@ import {getTemplate, getTemplateRecommendExportList} from "@/api/resource/templa
|
|||||||
import ied from "@/views/util/import-error-dialog";
|
import ied from "@/views/util/import-error-dialog";
|
||||||
import {excelAccept} from "@/common/accept";
|
import {excelAccept} from "@/common/accept";
|
||||||
import TextTooltip from '@/components/text-tooltip'
|
import TextTooltip from '@/components/text-tooltip'
|
||||||
|
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
|
||||||
|
import PromptDialog from "@/components/promptDialog/index.vue";
|
||||||
|
|
||||||
|
let page = {
|
||||||
|
pageSize: 10,
|
||||||
|
currentPage: 1,
|
||||||
|
total: 0,
|
||||||
|
}
|
||||||
export default {
|
export default {
|
||||||
filters: {
|
filters: {
|
||||||
ellipsis(value) {
|
ellipsis(value) {
|
||||||
@@ -166,6 +243,8 @@ export default {
|
|||||||
name: "tenant_talents",
|
name: "tenant_talents",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
dialogFlag: false,
|
||||||
|
dialogInfo: null,
|
||||||
downloadButton: false,
|
downloadButton: false,
|
||||||
activeNames: "1",
|
activeNames: "1",
|
||||||
isIndeterminate: false,
|
isIndeterminate: false,
|
||||||
@@ -196,9 +275,15 @@ export default {
|
|||||||
obj: {},
|
obj: {},
|
||||||
depTree: [],
|
depTree: [],
|
||||||
excelForm: {isCovered: 1},
|
excelForm: {isCovered: 1},
|
||||||
|
logPage: Object.assign({}, page),
|
||||||
|
logDataSource: [],
|
||||||
|
loadingLog: false,
|
||||||
|
innerDrawerLog: false,
|
||||||
|
selectUserServeLog: null,
|
||||||
|
backInput: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {addGroups, transferGroups, Resume, ied, TextTooltip},
|
components: {addGroups, transferGroups, Resume, ied, TextTooltip, PromptDialog},
|
||||||
watch: {},
|
watch: {},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(["permission"]),
|
...mapGetters(["permission"]),
|
||||||
@@ -256,6 +341,7 @@ export default {
|
|||||||
searchShow: true,
|
searchShow: true,
|
||||||
viewBtn: true,
|
viewBtn: true,
|
||||||
searchMenuSpan: 6,
|
searchMenuSpan: 6,
|
||||||
|
menuWidth: 170,
|
||||||
border: true,
|
border: true,
|
||||||
index: false,
|
index: false,
|
||||||
indexLabel: "序号",
|
indexLabel: "序号",
|
||||||
@@ -549,6 +635,45 @@ export default {
|
|||||||
}
|
}
|
||||||
return rel;
|
return rel;
|
||||||
},
|
},
|
||||||
|
logOption() {
|
||||||
|
return {
|
||||||
|
editBtn: true,
|
||||||
|
delBtn: true,
|
||||||
|
addBtn: true,
|
||||||
|
viewBtn: true,
|
||||||
|
border: true,
|
||||||
|
index: true,
|
||||||
|
indexLabel: "序号",
|
||||||
|
refreshBtn: false,
|
||||||
|
dialogType: "drawer",
|
||||||
|
addBtnText: "新增日志",
|
||||||
|
height: '100',
|
||||||
|
column: [{
|
||||||
|
label: '服务时间',
|
||||||
|
prop: 'createTime',
|
||||||
|
type: 'date',
|
||||||
|
format: "yyyy-MM-dd",
|
||||||
|
valueFormat: "yyyy-MM-dd HH:mm:ss",
|
||||||
|
}, {
|
||||||
|
label: '服务发起人',
|
||||||
|
prop: 'fromName',
|
||||||
|
display: false,
|
||||||
|
}, {
|
||||||
|
label: '服务对象',
|
||||||
|
prop: 'toName',
|
||||||
|
display: false,
|
||||||
|
}, {
|
||||||
|
label: '服务主题',
|
||||||
|
prop: 'serveTheme'
|
||||||
|
}, {
|
||||||
|
label: '服务内容',
|
||||||
|
prop: 'serveContent'
|
||||||
|
}, {
|
||||||
|
label: '备注说明',
|
||||||
|
prop: 'bak1'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.initDept();
|
this.initDept();
|
||||||
@@ -557,6 +682,33 @@ export default {
|
|||||||
this.getDept()
|
this.getDept()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
checkUserInfo(row) {
|
||||||
|
this.dialogInfo = row
|
||||||
|
this.dialogFlag = true
|
||||||
|
},
|
||||||
|
diaLogConfirm() {
|
||||||
|
if (!this.backInput) {
|
||||||
|
return this.$message.info('请输入剔除备注');
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
idNumber: this.dialogInfo.idNumber,
|
||||||
|
content: this.backInput,
|
||||||
|
name: this.dialogInfo.name,
|
||||||
|
}
|
||||||
|
this.$confirm("确定将选择数据剔除?", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return talentsEliminate(params);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.onLoad(this.page, this.query);
|
||||||
|
this.dialogFlag = false
|
||||||
|
this.$message.success('操作成功');
|
||||||
|
});
|
||||||
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.downloadButton = true
|
this.downloadButton = true
|
||||||
// 0 潜在 1 已认定
|
// 0 潜在 1 已认定
|
||||||
@@ -1035,6 +1187,95 @@ export default {
|
|||||||
this.selectionClear();
|
this.selectionClear();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
async saveLog(row, index, done, loading) {
|
||||||
|
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.serveLog(this.selectUserServeLog)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveUpdateLog(row, index, done, loading) {
|
||||||
|
let params = {
|
||||||
|
id: row.id,
|
||||||
|
createTime: row.createTime,
|
||||||
|
fromName: row.fromName,
|
||||||
|
toName: row.toName,
|
||||||
|
serveTheme: row.serveTheme,
|
||||||
|
serveContent: row.serveContent,
|
||||||
|
bak1: row.bak1,
|
||||||
|
}
|
||||||
|
let resData = await updateServeLog(params)
|
||||||
|
done()
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
this.$message({
|
||||||
|
type: "success",
|
||||||
|
message: "修改成功!",
|
||||||
|
});
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeLog(row, index, done, loading) {
|
||||||
|
this.$confirm("确定将选择数据删除?", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return removeServeLog({ids: row.id});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
this.$message({
|
||||||
|
type: "success",
|
||||||
|
message: "操作成功!",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleCloseLog() {
|
||||||
|
this.innerDrawerLog = false
|
||||||
|
},
|
||||||
|
logSizeChange(pageSize) {
|
||||||
|
this.logPage.pageSize = pageSize;
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
},
|
||||||
|
logCurrentChange(currentPage) {
|
||||||
|
this.logPage.currentPage = currentPage;
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
},
|
||||||
|
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,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -101,8 +101,7 @@
|
|||||||
:disabled="downloadButton"
|
:disabled="downloadButton"
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
>导出
|
>导出
|
||||||
</el-button
|
</el-button>
|
||||||
>
|
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="{row}" slot="menu">
|
<template slot-scope="{row}" slot="menu">
|
||||||
<el-button type="text"
|
<el-button type="text"
|
||||||
@@ -111,6 +110,12 @@
|
|||||||
@click="serveLog(row)"
|
@click="serveLog(row)"
|
||||||
>查看日志
|
>查看日志
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="text"
|
||||||
|
icon="el-icon-circle-check"
|
||||||
|
size="small"
|
||||||
|
@click="checkUserInfo(row)"
|
||||||
|
>审核
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</avue-crud>
|
</avue-crud>
|
||||||
|
|
||||||
@@ -141,6 +146,7 @@
|
|||||||
:data="logDataSource"
|
:data="logDataSource"
|
||||||
:option="logOption"
|
:option="logOption"
|
||||||
:page.sync="logPage"
|
:page.sync="logPage"
|
||||||
|
:table-loading="loadingLog"
|
||||||
@row-save="saveLog"
|
@row-save="saveLog"
|
||||||
@row-update="saveUpdateLog"
|
@row-update="saveUpdateLog"
|
||||||
@row-del="removeLog"
|
@row-del="removeLog"
|
||||||
@@ -163,6 +169,36 @@
|
|||||||
<transfer-groups ref="transferGroups" @refresh="refresh" :ids="ids"></transfer-groups>
|
<transfer-groups ref="transferGroups" @refresh="refresh" :ids="ids"></transfer-groups>
|
||||||
<!--/转移分组dialog-->
|
<!--/转移分组dialog-->
|
||||||
<resume ref="resume" v-show="false"></resume>
|
<resume ref="resume" v-show="false"></resume>
|
||||||
|
|
||||||
|
<PromptDialog
|
||||||
|
:visible="dialogFlag"
|
||||||
|
title="审核"
|
||||||
|
:back-btn-status="1"
|
||||||
|
submit-text="确 定"
|
||||||
|
sub-title="请核对人员信息后再进行审核通过,通过将在已认定人群可见,驳回该用户将从人群中删除,在人员服务日志中可见"
|
||||||
|
:tips="[
|
||||||
|
'人员信息描述不清晰或过于简单;',
|
||||||
|
'人员信息存在违法违规行为;',
|
||||||
|
'人员信息的薪资、福利等待遇不符合市场标准;',
|
||||||
|
]"
|
||||||
|
@onClose="dialogFlag = false; GroupValue = ''"
|
||||||
|
@onCancel="diaLogCancel"
|
||||||
|
@onConfirm="diaLogConfirm"
|
||||||
|
>
|
||||||
|
<template v-slot:header>
|
||||||
|
<div class="input_box" style="margin-top: 20px">
|
||||||
|
<el-select style="width: 100%" clearable v-model="GroupValue" placeholder="请选择分组 (驳回不用选择此项)">
|
||||||
|
<el-option
|
||||||
|
v-for="item in selecTreeData"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.groupName"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</PromptDialog>
|
||||||
|
|
||||||
</basic-container>
|
</basic-container>
|
||||||
<ied ref="ied"></ied>
|
<ied ref="ied"></ied>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -179,7 +215,8 @@ import {
|
|||||||
getDept,
|
getDept,
|
||||||
removeDept,
|
removeDept,
|
||||||
upload,
|
upload,
|
||||||
getDeptMyTree
|
getDeptMyTree,
|
||||||
|
talentsApproval, talentsEliminate
|
||||||
} from "@/api/tenant/talents";
|
} from "@/api/tenant/talents";
|
||||||
import {getWorkTypes, getLabelList} from "@/api/tenant/common";
|
import {getWorkTypes, getLabelList} from "@/api/tenant/common";
|
||||||
import {mapGetters} from "vuex";
|
import {mapGetters} from "vuex";
|
||||||
@@ -193,6 +230,7 @@ import {excelAccept} from "@/common/accept";
|
|||||||
import TextTooltip from '@/components/text-tooltip'
|
import TextTooltip from '@/components/text-tooltip'
|
||||||
import {exportList} from "@/api/workstation/post";
|
import {exportList} from "@/api/workstation/post";
|
||||||
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
|
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
|
||||||
|
import PromptDialog from "@/components/promptDialog/index.vue";
|
||||||
|
|
||||||
let page = {
|
let page = {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@@ -212,6 +250,8 @@ export default {
|
|||||||
name: "tenant_talents",
|
name: "tenant_talents",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
dialogFlag: false,
|
||||||
|
dialogInfo: null,
|
||||||
downloadButton: false,
|
downloadButton: false,
|
||||||
activeNames: "1",
|
activeNames: "1",
|
||||||
isIndeterminate: false,
|
isIndeterminate: false,
|
||||||
@@ -231,6 +271,7 @@ export default {
|
|||||||
page: Object.assign({}, page),
|
page: Object.assign({}, page),
|
||||||
logPage: Object.assign({}, page),
|
logPage: Object.assign({}, page),
|
||||||
logDataSource: [],
|
logDataSource: [],
|
||||||
|
loadingLog: false,
|
||||||
innerDrawerLog: false,
|
innerDrawerLog: false,
|
||||||
selectUserServeLog: null,
|
selectUserServeLog: null,
|
||||||
tempWorkType: [],
|
tempWorkType: [],
|
||||||
@@ -242,9 +283,11 @@ export default {
|
|||||||
data: [],
|
data: [],
|
||||||
obj: {},
|
obj: {},
|
||||||
excelForm: {isCovered: 1},
|
excelForm: {isCovered: 1},
|
||||||
|
selecTreeData: [],
|
||||||
|
GroupValue: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {addGroups, transferGroups, Resume, ied, TextTooltip},
|
components: {addGroups, transferGroups, Resume, ied, TextTooltip, PromptDialog},
|
||||||
watch: {},
|
watch: {},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(["permission", "userInfo"]),
|
...mapGetters(["permission", "userInfo"]),
|
||||||
@@ -301,6 +344,7 @@ export default {
|
|||||||
searchBtn: true,
|
searchBtn: true,
|
||||||
searchShow: true,
|
searchShow: true,
|
||||||
viewBtn: true,
|
viewBtn: true,
|
||||||
|
menuWidth: 170,
|
||||||
searchMenuSpan: 6,
|
searchMenuSpan: 6,
|
||||||
border: true,
|
border: true,
|
||||||
index: false,
|
index: false,
|
||||||
@@ -655,11 +699,72 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.initDept();
|
this.initDept();
|
||||||
|
this.groupTypeDept()
|
||||||
// this.getWorkTypes();
|
// this.getWorkTypes();
|
||||||
this.getLabelList();
|
this.getLabelList();
|
||||||
this.getDept()
|
this.getDept()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
groupTypeDept() {
|
||||||
|
getDept({groupType: 1}).then((res) => {
|
||||||
|
this.selecTreeData = res.data.data.list;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
checkUserInfo(row) {
|
||||||
|
this.dialogInfo = row
|
||||||
|
this.dialogFlag = true
|
||||||
|
},
|
||||||
|
diaLogCancel(value) {
|
||||||
|
if (value) {
|
||||||
|
let params = {
|
||||||
|
idNumber: this.dialogInfo.idNumber,
|
||||||
|
id: this.dialogInfo.id,
|
||||||
|
approvalStatus: 1,
|
||||||
|
content: value,
|
||||||
|
}
|
||||||
|
this.$confirm("确定将选择数据驳回?", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return talentsApproval(params);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.onLoad(this.page, this.query);
|
||||||
|
this.dialogFlag = false
|
||||||
|
this.$message.success('操作成功');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error("请填写驳回原因");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
diaLogConfirm(value) {
|
||||||
|
if (this.GroupValue) {
|
||||||
|
let params = {
|
||||||
|
idNumber: this.dialogInfo.idNumber,
|
||||||
|
id: this.dialogInfo.id,
|
||||||
|
approvalStatus: 0,
|
||||||
|
content: value,
|
||||||
|
groupId: this.GroupValue
|
||||||
|
}
|
||||||
|
this.$confirm("确定通过?", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return talentsApproval(params);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.onLoad(this.page, this.query);
|
||||||
|
this.dialogFlag = false
|
||||||
|
this.$message.success('操作成功');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error("请选择分组");
|
||||||
|
}
|
||||||
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.downloadButton = true
|
this.downloadButton = true
|
||||||
// 0 潜在 1 已认定
|
// 0 潜在 1 已认定
|
||||||
@@ -1186,17 +1291,17 @@ export default {
|
|||||||
serveLog(row) {
|
serveLog(row) {
|
||||||
console.log('服务日志', row)
|
console.log('服务日志', row)
|
||||||
this.selectUserServeLog = row
|
this.selectUserServeLog = row
|
||||||
|
this.loadingLog = true
|
||||||
getMainServeUserLog({
|
getMainServeUserLog({
|
||||||
idNumber: row.id,
|
idNumber: row.idNumber,
|
||||||
current: this.logPage.currentPage,
|
current: this.logPage.currentPage,
|
||||||
size: this.logPage.pageSize
|
size: this.logPage.pageSize
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
let _this = this;
|
this.loadingLog = false
|
||||||
const {records, current, size, total} = res.data.data
|
const {records, current, size, total} = res.data.data
|
||||||
console.log(records, total)
|
this.logDataSource = records
|
||||||
_this.logDataSource = records
|
this.innerDrawerLog = true
|
||||||
_this.innerDrawerLog = true
|
this.logPage = {
|
||||||
_this.logPage = {
|
|
||||||
pageSize: size,
|
pageSize: size,
|
||||||
currentPage: current,
|
currentPage: current,
|
||||||
total: total,
|
total: total,
|
||||||
|
|||||||
@@ -15,14 +15,77 @@
|
|||||||
@size-change="sizeChange"
|
@size-change="sizeChange"
|
||||||
class="customPage"
|
class="customPage"
|
||||||
>
|
>
|
||||||
|
<!--自定义列-->
|
||||||
|
<template slot="labelsBase" slot-scope="{ row }">
|
||||||
|
<el-tooltip effect="dark" placement="top">
|
||||||
|
<div slot="content" v-for="(item,index) in row.labelsBaseArr" :key="index">{{ item }}<br/></div>
|
||||||
|
<div>{{ row.labelsBase | ellipsis }}</div>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template slot-scope="{row}" slot="menu">
|
||||||
|
<el-button type="text"
|
||||||
|
icon="el-icon-document"
|
||||||
|
size="small"
|
||||||
|
@click="serveLog(row)"
|
||||||
|
>查看日志
|
||||||
|
</el-button>
|
||||||
|
<el-button type="text"
|
||||||
|
icon="el-icon-document"
|
||||||
|
size="small"
|
||||||
|
@click="addServeLog(row)"
|
||||||
|
>新增日志
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
</avue-crud>
|
</avue-crud>
|
||||||
</basic-container>
|
</basic-container>
|
||||||
|
<el-drawer
|
||||||
|
title="服务日志"
|
||||||
|
size="80%"
|
||||||
|
:append-to-body="true"
|
||||||
|
:before-close="handleCloseLog"
|
||||||
|
:visible.sync="innerDrawerLog">
|
||||||
|
<!-- <div>
|
||||||
|
<span>姓名:</span>
|
||||||
|
<span>身份证号:</span>
|
||||||
|
</div> -->
|
||||||
|
<avue-crud
|
||||||
|
:data="logDataSource"
|
||||||
|
:option="logOption"
|
||||||
|
:page.sync="logPage"
|
||||||
|
:table-loading="loadingLog"
|
||||||
|
@row-save="saveLog"
|
||||||
|
@row-update="saveUpdateLog"
|
||||||
|
@row-del="removeLog"
|
||||||
|
@size-change="logSizeChange"
|
||||||
|
@current-change="logCurrentChange"
|
||||||
|
>
|
||||||
|
<!-- <template slot="menuLeft">
|
||||||
|
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
|
||||||
|
</template>
|
||||||
|
<template slot="menu" slot-scope="{row}">
|
||||||
|
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">修改</el-button>
|
||||||
|
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">查看附件</el-button>
|
||||||
|
</template> -->
|
||||||
|
</avue-crud>
|
||||||
|
</el-drawer>
|
||||||
|
<el-drawer
|
||||||
|
title="新增"
|
||||||
|
size="60%"
|
||||||
|
:append-to-body="true"
|
||||||
|
:before-close="() => innerDrawerAddLog = false"
|
||||||
|
:visible.sync="innerDrawerAddLog">
|
||||||
|
<avue-form ref="form" :option="logOption" v-model="logValues" @submit="handleSubmitLog"/>
|
||||||
|
</el-drawer>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapGetters} from "vuex";
|
import {mapGetters} from "vuex";
|
||||||
import {getList} from "@/api/tenant/personnelserve";
|
import {getList} from "@/api/tenant/personnelserve";
|
||||||
|
import {isvalidatemobile} from "@/util/validate";
|
||||||
|
import {getDept, getDeptMyTree} from "@/api/tenant/talents";
|
||||||
|
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
|
||||||
|
|
||||||
const page = {
|
const page = {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@@ -36,6 +99,7 @@ const baseOptions = {
|
|||||||
editBtn: false,
|
editBtn: false,
|
||||||
delBtn: false,
|
delBtn: false,
|
||||||
height: "auto",
|
height: "auto",
|
||||||
|
menuWidth: 130,
|
||||||
reserveSelection: false,
|
reserveSelection: false,
|
||||||
border: true,
|
border: true,
|
||||||
columnBtn: false,
|
columnBtn: false,
|
||||||
@@ -48,16 +112,33 @@ const baseOptions = {
|
|||||||
searchLabelWidth: 60,
|
searchLabelWidth: 60,
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
|
filters: {
|
||||||
|
ellipsis(value) {
|
||||||
|
if (!value) return "";
|
||||||
|
if (value.length > 15) {
|
||||||
|
return value.slice(0, 14) + "...";
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
dataSource: [],
|
dataSource: [],
|
||||||
crudValues: {},
|
crudValues: {},
|
||||||
page: Object.assign({}, page)
|
depTree: [],
|
||||||
|
page: Object.assign({}, page),
|
||||||
|
treeData: [],
|
||||||
|
logPage: Object.assign({}, page),
|
||||||
|
logDataSource: [],
|
||||||
|
loadingLog: false,
|
||||||
|
innerDrawerLog: false,
|
||||||
|
innerDrawerAddLog: false,
|
||||||
|
logValues: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(["permission"]),
|
...mapGetters(["permission", "userInfo"]),
|
||||||
permissionList() {
|
permissionList() {
|
||||||
return {
|
return {
|
||||||
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
|
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
|
||||||
@@ -67,30 +148,308 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
option() {
|
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 {
|
return {
|
||||||
...baseOptions,
|
...baseOptions,
|
||||||
column: [
|
column: [
|
||||||
|
{
|
||||||
|
label: "所属机构",
|
||||||
|
prop: "createDept",
|
||||||
|
type: "tree",
|
||||||
|
multiple: false,
|
||||||
|
dicData: this.depTree,
|
||||||
|
props: {
|
||||||
|
label: "title",
|
||||||
|
value: 'value'
|
||||||
|
},
|
||||||
|
checkStrictly: true,
|
||||||
|
span: 24,
|
||||||
|
search: true,
|
||||||
|
searchLabelWidth: 80,
|
||||||
|
change: this.deptChange
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: "姓名",
|
label: "姓名",
|
||||||
prop: "name",
|
prop: "name",
|
||||||
|
// search: true,
|
||||||
|
span: 24,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
whitespace: true,
|
||||||
|
message: "请输入姓名",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
search: true,
|
search: true,
|
||||||
searchSpan: 6,
|
},
|
||||||
|
{
|
||||||
|
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",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
span: 24,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "身份证",
|
label: "身份证",
|
||||||
prop: "idNumber",
|
prop: "idNumber",
|
||||||
|
// hide: true,
|
||||||
|
span: 24,
|
||||||
|
rules: [
|
||||||
|
{required: true, message: "请输入身份证号", trigger: "blur"},
|
||||||
|
{trigger: "blur", validator: IdCardNo},
|
||||||
|
],
|
||||||
search: true,
|
search: true,
|
||||||
searchSpan: 6,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "手机号",
|
label: "手机号",
|
||||||
prop: "phone",
|
prop: "telphone",
|
||||||
|
span: 24,
|
||||||
|
hide: false,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
validator: validateTel,
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
]
|
{
|
||||||
|
label: "民族",
|
||||||
|
prop: "aac005",
|
||||||
|
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: "户口性质",
|
||||||
|
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,
|
||||||
|
rules: [
|
||||||
|
{required: true, message: "请输入口所在地", trigger: "blur"},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "文化程度",
|
||||||
|
prop: "aac011",
|
||||||
|
type: 'select',
|
||||||
|
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: "aae036",
|
||||||
|
display: false,
|
||||||
|
span: 24,
|
||||||
|
rules: [
|
||||||
|
{required: true, message: "请输入经办时间", trigger: "blur"},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "用户类型",
|
||||||
|
prop: "userId",
|
||||||
|
type: "select",
|
||||||
|
dicData: [
|
||||||
|
{
|
||||||
|
value: "0",
|
||||||
|
label: "未注册用户",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "1",
|
||||||
|
label: "已注册用户",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
display: false,
|
||||||
|
hide: true,
|
||||||
|
// search: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "分组",
|
||||||
|
prop: "groupId",
|
||||||
|
type: "tree",
|
||||||
|
span: 24,
|
||||||
|
display: true,
|
||||||
|
dicData: self.treeData,
|
||||||
|
props: {
|
||||||
|
label: "groupName",
|
||||||
|
value: "id",
|
||||||
|
},
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择分组",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: "请选择 分组",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "标签名称",
|
||||||
|
prop: "labelsBase",
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择标签名称",
|
||||||
|
trigger: ["blur"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
slot: true,
|
||||||
|
formslot: true,
|
||||||
|
span: 24,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
label: "备注",
|
||||||
|
prop: "remarks",
|
||||||
|
type: "textarea",
|
||||||
|
slot: true,
|
||||||
|
hide: true,
|
||||||
|
span: 24,
|
||||||
|
maxlength: 100,
|
||||||
|
showWordLimit: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
logOption() {
|
||||||
|
return {
|
||||||
|
editBtn: true,
|
||||||
|
delBtn: true,
|
||||||
|
addBtn: true,
|
||||||
|
viewBtn: true,
|
||||||
|
border: true,
|
||||||
|
index: true,
|
||||||
|
indexLabel: "序号",
|
||||||
|
refreshBtn: false,
|
||||||
|
dialogType: "drawer",
|
||||||
|
addBtnText: "新增日志",
|
||||||
|
height: '100',
|
||||||
|
column: [{
|
||||||
|
label: '服务时间',
|
||||||
|
prop: 'createTime',
|
||||||
|
type: 'date',
|
||||||
|
format: "yyyy-MM-dd",
|
||||||
|
valueFormat: "yyyy-MM-dd HH:mm:ss",
|
||||||
|
}, {
|
||||||
|
label: '服务发起人',
|
||||||
|
prop: 'fromName',
|
||||||
|
display: false,
|
||||||
|
}, {
|
||||||
|
label: '服务对象',
|
||||||
|
prop: 'toName',
|
||||||
|
display: false,
|
||||||
|
}, {
|
||||||
|
label: '服务主题',
|
||||||
|
prop: 'serveTheme'
|
||||||
|
}, {
|
||||||
|
label: '服务内容',
|
||||||
|
prop: 'serveContent'
|
||||||
|
}, {
|
||||||
|
label: '备注说明',
|
||||||
|
prop: 'bak1'
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.getDept()
|
||||||
|
this.initDept()
|
||||||
|
this.onLoad(this.page, this.query)
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
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) {
|
searchChange(params, done) {
|
||||||
this.query = params;
|
this.query = params;
|
||||||
this.page.currentPage = 1;
|
this.page.currentPage = 1;
|
||||||
@@ -109,24 +468,139 @@ export default {
|
|||||||
this.page.pageSize = pageSize;
|
this.page.pageSize = pageSize;
|
||||||
this.onLoad(this.page, this.query);
|
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 = {}) {
|
onLoad(page, params = {}) {
|
||||||
const {releaseTimeRange} = params;
|
const {releaseTimeRange} = params;
|
||||||
let values = {
|
let paramsed = {
|
||||||
...params,
|
currentPage: page.currentPage,
|
||||||
|
pageSize: page.pageSize,
|
||||||
|
...this.query
|
||||||
};
|
};
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
getList(
|
getList(paramsed).then((res) => {
|
||||||
page.currentPage,
|
const {total, size, current, records, page} = res.data.data
|
||||||
page.pageSize,
|
|
||||||
Object.assign(values, this.query)
|
|
||||||
).then((res) => {
|
|
||||||
const {total, records, page} = res.data.data
|
|
||||||
this.page.total = total;
|
|
||||||
// this.page.currentPage = page
|
|
||||||
this.dataSource = records;
|
this.dataSource = records;
|
||||||
this.loading = false;
|
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,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
addServeLog(row) {
|
||||||
|
this.selectUserServeLog = row
|
||||||
|
this.innerDrawerAddLog = true
|
||||||
|
},
|
||||||
|
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
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveLog(row, index, done, loading) {
|
||||||
|
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.serveLog(this.selectUserServeLog)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveUpdateLog(row, index, done, loading) {
|
||||||
|
let params = {
|
||||||
|
id: row.id,
|
||||||
|
createTime: row.createTime,
|
||||||
|
fromName: row.fromName,
|
||||||
|
toName: row.toName,
|
||||||
|
serveTheme: row.serveTheme,
|
||||||
|
serveContent: row.serveContent,
|
||||||
|
bak1: row.bak1,
|
||||||
|
}
|
||||||
|
let resData = await updateServeLog(params)
|
||||||
|
done()
|
||||||
|
if (resData.data.code === 200) {
|
||||||
|
this.$message({
|
||||||
|
type: "success",
|
||||||
|
message: "修改成功!",
|
||||||
|
});
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeLog(row, index, done, loading) {
|
||||||
|
this.$confirm("确定将选择数据删除?", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return removeServeLog({ids: row.id});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.serveLog(this.selectUserServeLog)
|
||||||
|
this.$message({
|
||||||
|
type: "success",
|
||||||
|
message: "操作成功!",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleCloseLog() {
|
||||||
|
this.innerDrawerLog = false
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ module.exports = {
|
|||||||
port: 1888,
|
port: 1888,
|
||||||
proxy: {
|
proxy: {
|
||||||
"/api": {
|
"/api": {
|
||||||
target: 'http://10.165.0.173:8000',
|
target: 'http://192.168.1.105:8000',
|
||||||
ws: true,
|
ws: true,
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
|
|||||||
Reference in New Issue
Block a user