flat: 增加 所属机构

This commit is contained in:
Apcallover
2024-04-17 16:59:33 +08:00
parent 0fb5b70df5
commit 9cb647d53e
8 changed files with 353 additions and 179 deletions

View File

@@ -92,11 +92,11 @@ export const removeDept =
/*转移分组*/ /*转移分组*/
export const transferDept = export const transferDept =
(groupIds, ids) => { (groupIds, ids, deptId) => {
return request({ return request({
url: '/api/jobslink-api/tenant/talents/updateAllGroup', url: '/api/jobslink-api/tenant/talents/updateAllGroup',
method: 'post', method: 'post',
params: {groupIds, ids} params: {groupIds, ids, deptId}
}) })
} }
@@ -104,3 +104,11 @@ export const transferDept =
export const upload = () => { export const upload = () => {
return `/api/jobslink-api/tenant/talents/tenant/import-talents?isCovered=1` return `/api/jobslink-api/tenant/talents/tenant/import-talents?isCovered=1`
} }
export const getDeptMyTree = (params) => {
return request({
url: '/api/jobslink-api/system/dept/my-tree',
method: 'get',
params
})
}

View File

@@ -18,6 +18,7 @@ Vue.use(VueRouter);
export const createRouter = () => export const createRouter = () =>
new VueRouter({ new VueRouter({
// mode: 'history', // mode: 'history',
// base: 'manage',
// https://router.vquejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8 // https://router.vquejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8
// 这个方法 是控制滚动条 // 这个方法 是控制滚动条
// 如果 retuen falsy || {} ,则不发生滚动 // 如果 retuen falsy || {} ,则不发生滚动

View File

@@ -31,13 +31,15 @@
size="small" size="small"
icon="el-icon-search" icon="el-icon-search"
@click="searchChange1" @click="searchChange1"
> </el-button >
</el-button
> >
<el-button <el-button
size="small" size="small"
icon="el-icon-delete" icon="el-icon-delete"
@click="searchReset1" @click="searchReset1"
> </el-button >
</el-button
> >
</div> </div>
<!-- </el-col> --> <!-- </el-col> -->
@@ -72,7 +74,8 @@
v-if="permission.user_role" v-if="permission.user_role"
icon="el-icon-user" icon="el-icon-user"
@click="handleGrant" @click="handleGrant"
>角色配置</el-button >角色配置
</el-button
> >
<el-button <el-button
size="small" size="small"
@@ -80,7 +83,8 @@
v-if="permission.user_reset" v-if="permission.user_reset"
icon="el-icon-refresh" icon="el-icon-refresh"
@click="handleReset" @click="handleReset"
>密码重置</el-button >密码重置
</el-button
> >
</template> </template>
<template slot-scope="{ row }" slot="companyName"> <template slot-scope="{ row }" slot="companyName">
@@ -456,7 +460,7 @@ export default {
"excelForm.isCovered"() { "excelForm.isCovered"() {
if (this.excelForm.isCovered !== "") { if (this.excelForm.isCovered !== "") {
const column = this.findObject(this.excelOption.column, "excelFile"); const column = this.findObject(this.excelOption.column, "excelFile");
column.action = `/api/jobslink-api/system/tuser//import-user?isCovered=${this.excelForm.isCovered}`; column.action = `/api/jobslink-api/system/tuser/import-user?isCovered=${this.excelForm.isCovered}`;
} }
}, },
}, },
@@ -722,6 +726,7 @@ export default {
margin-bottom: 18px; margin-bottom: 18px;
padding: 0 10px; padding: 0 10px;
} }
.searchBtn { .searchBtn {
display: inline-block; display: inline-block;
margin-bottom: 18px; margin-bottom: 18px;

View File

@@ -19,7 +19,8 @@
</template> </template>
<script> <script>
import { transferDept } from "@/api/tenant/talents"; import {getDeptMyTree, transferDept} from "@/api/tenant/talents";
export default { export default {
props: { props: {
ids: String, ids: String,
@@ -30,12 +31,32 @@ export default {
groupId: "", groupId: "",
box: false, box: false,
form: {}, form: {},
option: { deptId: '',
depTree: []
};
},
computed: {
option() {
return {
menuPosition: "right", menuPosition: "right",
menuBtn: true, menuBtn: true,
submitBtn: true, submitBtn: true,
emptyBtn: false, emptyBtn: false,
column: [ column: [
{
label: "所属机构",
prop: "deptId",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
},
checkStrictly: true,
slot: true,
span: 24,
change: this.deptChange
},
{ {
label: "所属分组", label: "所属分组",
prop: "groupId", prop: "groupId",
@@ -62,11 +83,28 @@ export default {
placeholder: "请选择分组", placeholder: "请选择分组",
}, },
], ],
}
}
}, },
}; created() {
this.getDept()
}, },
computed: {},
methods: { methods: {
deptChange({value, column}) {
this.deptId = value
console.log(value)
},
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
console.log(this.depTree)
}
},
closed() { closed() {
this.form = {}; this.form = {};
if (this.$refs.groups) { if (this.$refs.groups) {
@@ -76,7 +114,7 @@ export default {
} }
}, },
openDialog() { openDialog() {
this.title = "转移分组"; this.title = "转移推送";
this.box = true; this.box = true;
if (this.$refs.groups) { if (this.$refs.groups) {
this.$refs.groups.init(); this.$refs.groups.init();
@@ -86,7 +124,7 @@ export default {
}, },
handleSubmit(form, done) { handleSubmit(form, done) {
//提交转移分组接口 //提交转移分组接口
transferDept(this.form.groupId, this.ids).then( transferDept(this.form.groupId, this.ids, this.deptId).then(
() => { () => {
this.box = false; this.box = false;
this.$message({ this.$message({

View File

@@ -32,7 +32,8 @@
<div class="footer" style="padding-left: 6px"> <div class="footer" style="padding-left: 6px">
<el-button type="text" icon="el-icon-plus" <el-button type="text" icon="el-icon-plus"
v-if="vaildData(permission.tenant_main_talents_certain_index_groupadd, false)" v-if="vaildData(permission.tenant_main_talents_certain_index_groupadd, false)"
@click="updateGroups('add')">新建分组</el-button> @click="updateGroups('add')">新建分组
</el-button>
</div> </div>
</el-scrollbar> </el-scrollbar>
</div> </div>
@@ -77,7 +78,8 @@
<template slot="resume" slot-scope="{ row }"> <template slot="resume" slot-scope="{ row }">
<div> <div>
<el-button type="text" size="mini" @click="$refs.resume.openDialog(row)" <el-button type="text" size="mini" @click="$refs.resume.openDialog(row)"
v-if="row.userId && row.userId !== '0'">查看简历</el-button> v-if="row.userId && row.userId !== '0'">查看简历
</el-button>
<div v-else>暂无简历</div> <div v-else>暂无简历</div>
</div> </div>
</template> </template>
@@ -89,12 +91,17 @@
<!--自定义按钮--> <!--自定义按钮-->
<template slot="menuLeft"> <template slot="menuLeft">
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport" <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_main_talents_certain_index_add, false)">批量导入</el-button> v-show="vaildData(permission.tenant_main_talents_certain_index_add, false)">批量导入
</el-button>
<el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort" <el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort"
@click="handleTransfer" v-show="vaildData(permission.tenant_main_talents_certain_index_transfergroup, false)">转移分组</el-button> @click="handleTransfer"
v-show="vaildData(permission.tenant_main_talents_certain_index_transfergroup, false)">转移推送
</el-button>
<el-button type="danger" size="small" icon="el-icon-delete" @click="handleDelete" <el-button type="danger" size="small" icon="el-icon-delete" @click="handleDelete"
:disabled="!selectionList.length" plain v-show="vaildData(permission.tenant_main_talents_certain_index_transfergroup, false)"> :disabled="!selectionList.length" plain
删除</el-button> v-show="vaildData(permission.tenant_main_talents_certain_index_transfergroup, false)">
删除
</el-button>
</template> </template>
<template slot="name" slot-scope="{row}"> <template slot="name" slot-scope="{row}">
<span>{{ row.name }}</span> <span>{{ row.name }}</span>
@@ -139,7 +146,7 @@ import {
detail, detail,
getDept, getDept,
removeDept, removeDept,
upload, upload, getDeptMyTree,
} 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";
@@ -151,6 +158,7 @@ import { getTemplate } from "@/api/resource/template";
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'
export default { export default {
filters: { filters: {
ellipsis(value) { ellipsis(value) {
@@ -187,10 +195,11 @@ export default {
tempWorkType: [], tempWorkType: [],
worktypeDic: {}, worktypeDic: {},
arr: [],////// arr: [],//////
deptId: '',
excelBox: false, excelBox: false,
data: [], data: [],
obj: {}, obj: {},
depTree: [],
excelForm: {isCovered: 1}, excelForm: {isCovered: 1},
}; };
}, },
@@ -203,7 +212,8 @@ export default {
addBtn: this.vaildData(this.permission.tenant_main_talents_certain_index_add, false), addBtn: this.vaildData(this.permission.tenant_main_talents_certain_index_add, false),
viewBtn: true, viewBtn: true,
delBtn: this.vaildData(this.permission.tenant_main_talents_certain_index_delete, false), delBtn: this.vaildData(this.permission.tenant_main_talents_certain_index_delete, false),
editBtn: this.vaildData( this.permission.tenant_main_talents_certain_index_edit,false)}; editBtn: this.vaildData(this.permission.tenant_main_talents_certain_index_edit, false)
};
}, },
ids() { ids() {
let ids = []; let ids = [];
@@ -385,11 +395,26 @@ export default {
}; };
}, },
excelOption() { excelOption() {
const url = this.tenantId ? `${upload()}&id=${this.tenantId}` : upload() const baseUrl = upload() + `&deptId=${this.deptId}`
const url = this.tenantId ? `${baseUrl}&id=${this.tenantId}` : baseUrl
return { return {
submitBtn: false, submitBtn: false,
emptyBtn: false, emptyBtn: false,
column: [ column: [
{
label: "所属机构",
prop: "deptId",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
},
checkStrictly: true,
slot: true,
span: 20,
change: this.deptChange
},
{ {
label: "文件上传", label: "文件上传",
prop: "excelFile", prop: "excelFile",
@@ -460,8 +485,24 @@ export default {
this.initDept(); this.initDept();
// this.getWorkTypes(); // this.getWorkTypes();
this.getLabelList(); this.getLabelList();
this.getDept()
}, },
methods: { methods: {
deptChange({value, column}) {
this.deptId = value
console.log(value)
},
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
console.log(this.depTree)
}
},
getWorkTypes() { getWorkTypes() {
getWorkTypes().then((res) => { getWorkTypes().then((res) => {
@@ -641,6 +682,7 @@ export default {
telphone: row.telphone, telphone: row.telphone,
labelsBase: row.labelsBase, labelsBase: row.labelsBase,
remarks: row.remarks, remarks: row.remarks,
groupType: 1,
}).then( }).then(
() => { () => {
this.$message({ this.$message({

View File

@@ -19,7 +19,8 @@
</template> </template>
<script> <script>
import { transferDept } from "@/api/tenant/talents"; import {getDeptMyTree, transferDept} from "@/api/tenant/talents";
export default { export default {
props: { props: {
ids: String, ids: String,
@@ -30,12 +31,32 @@ export default {
groupId: "", groupId: "",
box: false, box: false,
form: {}, form: {},
option: { deptId: '',
depTree: []
};
},
computed: {
option() {
return {
menuPosition: "right", menuPosition: "right",
menuBtn: true, menuBtn: true,
submitBtn: true, submitBtn: true,
emptyBtn: false, emptyBtn: false,
column: [ column: [
{
label: "所属机构",
prop: "deptId",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
},
checkStrictly: true,
slot: true,
span: 24,
change: this.deptChange
},
{ {
label: "所属分组", label: "所属分组",
prop: "groupId", prop: "groupId",
@@ -61,12 +82,29 @@ export default {
], ],
placeholder: "请选择分组", placeholder: "请选择分组",
}, },
], ]
}
}
}, },
}; created() {
this.getDept()
}, },
computed: {},
methods: { methods: {
deptChange({value, column}) {
this.deptId = value
console.log(value)
},
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
console.log(this.depTree)
}
},
closed() { closed() {
this.form = {}; this.form = {};
if (this.$refs.groups) { if (this.$refs.groups) {
@@ -76,7 +114,7 @@ export default {
} }
}, },
openDialog() { openDialog() {
this.title = "转移分组"; this.title = "转移推送";
this.box = true; this.box = true;
if (this.$refs.groups) { if (this.$refs.groups) {
this.$refs.groups.init(); this.$refs.groups.init();
@@ -86,7 +124,7 @@ export default {
}, },
handleSubmit(form, done) { handleSubmit(form, done) {
//提交转移分组接口 //提交转移分组接口
transferDept(this.form.groupId, this.ids).then( transferDept(this.form.groupId, this.ids, this.deptId).then(
() => { () => {
this.box = false; this.box = false;
this.$message({ this.$message({

View File

@@ -32,7 +32,8 @@
<div class="footer" style="padding-left: 6px"> <div class="footer" style="padding-left: 6px">
<el-button type="text" icon="el-icon-plus" <el-button type="text" icon="el-icon-plus"
v-if="vaildData(permission.tenant_main_talents_latent_index_groupadd, false)" v-if="vaildData(permission.tenant_main_talents_latent_index_groupadd, false)"
@click="updateGroups('add')">新建分组</el-button> @click="updateGroups('add')">新建分组
</el-button>
</div> </div>
</el-scrollbar> </el-scrollbar>
</div> </div>
@@ -77,7 +78,8 @@
<template slot="resume" slot-scope="{ row }"> <template slot="resume" slot-scope="{ row }">
<div> <div>
<el-button type="text" size="mini" @click="$refs.resume.openDialog(row)" <el-button type="text" size="mini" @click="$refs.resume.openDialog(row)"
v-if="row.userId && row.userId !== '0'">查看简历</el-button> v-if="row.userId && row.userId !== '0'">查看简历
</el-button>
<div v-else>暂无简历</div> <div v-else>暂无简历</div>
</div> </div>
</template> </template>
@@ -89,12 +91,17 @@
<!--自定义按钮--> <!--自定义按钮-->
<template slot="menuLeft"> <template slot="menuLeft">
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport" <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_main_talents_latent_index_add, false)">批量导入</el-button> v-show="vaildData(permission.tenant_main_talents_latent_index_add, false)">批量导入
</el-button>
<el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort" <el-button type="warning" size="small" plain :disabled="!selectionList.length" icon="el-icon-sort"
@click="handleTransfer" v-show="vaildData(permission.tenant_main_talents_latent_index_tansfergroup, false)">转移分组</el-button> @click="handleTransfer"
v-show="vaildData(permission.tenant_main_talents_latent_index_tansfergroup, false)">转移推送
</el-button>
<el-button type="danger" size="small" icon="el-icon-delete" @click="handleDelete" <el-button type="danger" size="small" icon="el-icon-delete" @click="handleDelete"
:disabled="!selectionList.length" plain v-show="vaildData(permission.tenant_main_talents_latent_index_tansfergroup, false)"> :disabled="!selectionList.length" plain
删除</el-button> v-show="vaildData(permission.tenant_main_talents_latent_index_tansfergroup, false)">
删除
</el-button>
</template> </template>
<template slot="name" slot-scope="{row}"> <template slot="name" slot-scope="{row}">
<span>{{ row.name }}</span> <span>{{ row.name }}</span>
@@ -140,6 +147,7 @@ import {
getDept, getDept,
removeDept, removeDept,
upload, upload,
getDeptMyTree
} 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";
@@ -188,7 +196,8 @@ export default {
tempWorkType: [], tempWorkType: [],
worktypeDic: {}, worktypeDic: {},
arr: [],////// arr: [],//////
depTree: [],
deptId: '',
excelBox: false, excelBox: false,
data: [], data: [],
obj: {}, obj: {},
@@ -387,11 +396,27 @@ export default {
}; };
}, },
excelOption() { excelOption() {
const url = this.tenantId ? `${upload()}&id=${this.tenantId}` : upload() const baseUrl = upload() + `&deptId=${this.deptId}`
const url = this.tenantId ? `${baseUrl}&id=${this.tenantId}` : baseUrl
return { return {
submitBtn: false, submitBtn: false,
emptyBtn: false, emptyBtn: false,
column: [ column: [
{
label: "所属机构",
prop: "deptId",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
},
checkStrictly: true,
slot: true,
span: 20,
change: this.deptChange
},
{ {
label: "文件上传", label: "文件上传",
prop: "excelFile", prop: "excelFile",
@@ -462,8 +487,24 @@ export default {
this.initDept(); this.initDept();
// this.getWorkTypes(); // this.getWorkTypes();
this.getLabelList(); this.getLabelList();
this.getDept()
}, },
methods: { methods: {
deptChange({value, column}) {
this.deptId = value
console.log(value)
},
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
console.log(this.depTree)
}
},
getWorkTypes() { getWorkTypes() {
getWorkTypes().then((res) => { getWorkTypes().then((res) => {
@@ -643,6 +684,7 @@ export default {
telphone: row.telphone, telphone: row.telphone,
labelsBase: row.labelsBase, labelsBase: row.labelsBase,
remarks: row.remarks, remarks: row.remarks,
groupType: 0,
}).then( }).then(
() => { () => {
this.$message({ this.$message({

View File

@@ -1,6 +1,6 @@
module.exports = { module.exports = {
//路径前缀 //路径前缀
publicPath: "/manage/", publicPath: "manage",
outputDir: "manage", outputDir: "manage",
lintOnSave: true, lintOnSave: true,
productionSourceMap: false, productionSourceMap: false,
@@ -23,7 +23,7 @@ module.exports = {
port: 1888, port: 1888,
proxy: { proxy: {
"/api": { "/api": {
target: 'http://10.165.0.173:8000', target: 'http://192.168.1.106:8000',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {