抽出催办招商
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
|
<el-tabs v-model="activeTab" class="department-user-tabs" @tab-click="handleTabClick">
|
||||||
|
<el-tab-pane label="部门人员列表" name="list">
|
||||||
<el-card class="filter-container" shadow="never">
|
<el-card class="filter-container" shadow="never">
|
||||||
<el-form :model="queryParams" :inline="true" label-width="100px">
|
<el-form :model="queryParams" :inline="true" label-width="100px">
|
||||||
<el-form-item label="姓名">
|
<el-form-item label="姓名">
|
||||||
@@ -49,15 +51,6 @@
|
|||||||
>
|
>
|
||||||
构建父链
|
构建父链
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
|
||||||
type="danger"
|
|
||||||
icon="el-icon-bell"
|
|
||||||
:loading="urgeInvestmentLoading"
|
|
||||||
style="margin-left: 12px"
|
|
||||||
@click="handleUrgeInvestment"
|
|
||||||
>
|
|
||||||
催办招商
|
|
||||||
</el-button>
|
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card class="table-container" shadow="never">
|
<el-card class="table-container" shadow="never">
|
||||||
@@ -99,6 +92,56 @@
|
|||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<el-tab-pane label="催办招商" name="urge">
|
||||||
|
<el-card shadow="never" class="urge-tree-panel">
|
||||||
|
<div class="urge-tree-toolbar">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-refresh"
|
||||||
|
:loading="urgeTreeLoading"
|
||||||
|
@click="fetchUrgeTree"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<el-alert
|
||||||
|
:title="`共 ${urgeTreeTotal} 人`"
|
||||||
|
type="info"
|
||||||
|
:closable="false"
|
||||||
|
show-icon
|
||||||
|
class="urge-tree-alert"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="urgeTreeFilterText"
|
||||||
|
clearable
|
||||||
|
placeholder="搜索姓名、用户ID、电话、加入日期"
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
class="urge-tree-filter"
|
||||||
|
/>
|
||||||
|
<div v-loading="urgeTreeLoading" class="urge-tree-wrap">
|
||||||
|
<el-tree
|
||||||
|
v-if="urgeTreeData.length"
|
||||||
|
ref="urgeTree"
|
||||||
|
:data="urgeTreeData"
|
||||||
|
:props="urgeTreeProps"
|
||||||
|
:filter-node-method="filterUrgeTreeNode"
|
||||||
|
node-key="userId"
|
||||||
|
highlight-current
|
||||||
|
>
|
||||||
|
<span slot-scope="{ data }" class="urge-tree-node">
|
||||||
|
<span class="urge-tree-node-name">{{ data.name || '-' }}</span>
|
||||||
|
<span class="urge-tree-node-meta">用户ID:{{ data.userId || '-' }}</span>
|
||||||
|
<span class="urge-tree-node-meta">电话:{{ data.phone || '-' }}</span>
|
||||||
|
<span class="urge-tree-node-meta">加入日期:{{ data.joinDate || '-' }}</span>
|
||||||
|
</span>
|
||||||
|
</el-tree>
|
||||||
|
<el-empty v-else description="暂无数据,请点击刷新加载" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
|
||||||
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="760px" @close="resetForm">
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="760px" @close="resetForm">
|
||||||
<el-form ref="dataForm" :model="form" :rules="formRules" label-width="120px">
|
<el-form ref="dataForm" :model="form" :rules="formRules" label-width="120px">
|
||||||
@@ -218,50 +261,6 @@
|
|||||||
<el-button type="primary" :loading="parentBindLoading" @click="confirmParentSelection">确定</el-button>
|
<el-button type="primary" :loading="parentBindLoading" @click="confirmParentSelection">确定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog
|
|
||||||
title="催办招商 - 部门用户树"
|
|
||||||
:visible.sync="urgeTreeDialogVisible"
|
|
||||||
width="900px"
|
|
||||||
@close="resetUrgeTreeDialog"
|
|
||||||
>
|
|
||||||
<el-alert
|
|
||||||
:title="`共 ${urgeTreeTotal} 人`"
|
|
||||||
type="info"
|
|
||||||
:closable="false"
|
|
||||||
show-icon
|
|
||||||
class="urge-tree-alert"
|
|
||||||
/>
|
|
||||||
<el-input
|
|
||||||
v-model="urgeTreeFilterText"
|
|
||||||
clearable
|
|
||||||
placeholder="搜索姓名、用户ID、电话、加入日期"
|
|
||||||
prefix-icon="el-icon-search"
|
|
||||||
class="urge-tree-filter"
|
|
||||||
/>
|
|
||||||
<div v-loading="urgeTreeLoading" class="urge-tree-wrap">
|
|
||||||
<el-tree
|
|
||||||
v-if="urgeTreeData.length"
|
|
||||||
ref="urgeTree"
|
|
||||||
:data="urgeTreeData"
|
|
||||||
:props="urgeTreeProps"
|
|
||||||
:filter-node-method="filterUrgeTreeNode"
|
|
||||||
node-key="userId"
|
|
||||||
highlight-current
|
|
||||||
>
|
|
||||||
<span slot-scope="{ data }" class="urge-tree-node">
|
|
||||||
<span class="urge-tree-node-name">{{ data.name || '-' }}</span>
|
|
||||||
<span class="urge-tree-node-meta">用户ID:{{ data.userId || '-' }}</span>
|
|
||||||
<span class="urge-tree-node-meta">电话:{{ data.phone || '-' }}</span>
|
|
||||||
<span class="urge-tree-node-meta">加入日期:{{ data.joinDate || '-' }}</span>
|
|
||||||
</span>
|
|
||||||
</el-tree>
|
|
||||||
<el-empty v-else description="暂无数据" />
|
|
||||||
</div>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="urgeTreeDialogVisible = false">关闭</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -282,12 +281,11 @@ export default {
|
|||||||
name: 'LbDepartmentUser',
|
name: 'LbDepartmentUser',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
activeTab: 'list',
|
||||||
loading: false,
|
loading: false,
|
||||||
submitLoading: false,
|
submitLoading: false,
|
||||||
syncLoading: false,
|
syncLoading: false,
|
||||||
syncParentChainLoading: false,
|
syncParentChainLoading: false,
|
||||||
urgeInvestmentLoading: false,
|
|
||||||
urgeTreeDialogVisible: false,
|
|
||||||
urgeTreeLoading: false,
|
urgeTreeLoading: false,
|
||||||
urgeTreeData: [],
|
urgeTreeData: [],
|
||||||
urgeTreeTotal: 0,
|
urgeTreeTotal: 0,
|
||||||
@@ -478,26 +476,28 @@ export default {
|
|||||||
this.syncParentChainLoading = false
|
this.syncParentChainLoading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleUrgeInvestment() {
|
handleTabClick(tab) {
|
||||||
|
if (!tab || tab.name !== 'urge') return
|
||||||
|
this.fetchUrgeTree()
|
||||||
|
},
|
||||||
|
fetchUrgeTree() {
|
||||||
const tenantId = this.getTenantIdFromBusinessHeaders()
|
const tenantId = this.getTenantIdFromBusinessHeaders()
|
||||||
if (!tenantId) {
|
if (!tenantId) {
|
||||||
this.$message.error('未获取到租户ID,请先登录或配置业务请求头中的租户')
|
this.$message.error('未获取到租户ID,请先登录或配置业务请求头中的租户')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.urgeInvestmentLoading = true
|
|
||||||
this.urgeTreeLoading = true
|
this.urgeTreeLoading = true
|
||||||
getLbDepartmentUserTree({ tenantId })
|
getLbDepartmentUserTree({ tenantId })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const hasData = res && Array.isArray(res.data)
|
const hasData = res && Array.isArray(res.data)
|
||||||
const isSuccess = res && (res.success === true || res.code === 200 || res.code === 20000 || hasData)
|
const isSuccess = res && (res.success === true || res.code === 200 || res.code === 20000 || hasData)
|
||||||
if (!isSuccess) {
|
if (!isSuccess) {
|
||||||
this.$message.error((res && res.message) || '催办招商失败')
|
this.$message.error((res && res.message) || '加载部门用户树失败')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.urgeTreeData = hasData ? res.data : []
|
this.urgeTreeData = hasData ? res.data : []
|
||||||
this.urgeTreeTotal = typeof res.total === 'number' ? res.total : this.urgeTreeData.length
|
this.urgeTreeTotal = typeof res.total === 'number' ? res.total : this.urgeTreeData.length
|
||||||
this.urgeTreeFilterText = ''
|
this.urgeTreeFilterText = ''
|
||||||
this.urgeTreeDialogVisible = true
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (this.$refs.urgeTree) {
|
if (this.$refs.urgeTree) {
|
||||||
this.$refs.urgeTree.filter('')
|
this.$refs.urgeTree.filter('')
|
||||||
@@ -508,10 +508,9 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.$message.error('催办招商失败')
|
this.$message.error('加载部门用户树失败')
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.urgeInvestmentLoading = false
|
|
||||||
this.urgeTreeLoading = false
|
this.urgeTreeLoading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -522,12 +521,6 @@ export default {
|
|||||||
const fields = [data.name, data.userId, data.phone, data.joinDate]
|
const fields = [data.name, data.userId, data.phone, data.joinDate]
|
||||||
return fields.some((field) => field != null && String(field).toLowerCase().includes(keyword))
|
return fields.some((field) => field != null && String(field).toLowerCase().includes(keyword))
|
||||||
},
|
},
|
||||||
resetUrgeTreeDialog() {
|
|
||||||
this.urgeTreeData = []
|
|
||||||
this.urgeTreeTotal = 0
|
|
||||||
this.urgeTreeFilterText = ''
|
|
||||||
this.urgeTreeLoading = false
|
|
||||||
},
|
|
||||||
handleEdit(row) {
|
handleEdit(row) {
|
||||||
this.dialogTitle = '编辑部门人员'
|
this.dialogTitle = '编辑部门人员'
|
||||||
this.isEdit = true
|
this.isEdit = true
|
||||||
@@ -772,6 +765,18 @@ export default {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.app-container {
|
.app-container {
|
||||||
|
.department-user-tabs {
|
||||||
|
::v-deep .el-tabs__header {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.urge-tree-panel {
|
||||||
|
.urge-tree-toolbar {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.filter-container {
|
.filter-container {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
@@ -835,7 +840,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.urge-tree-wrap {
|
.urge-tree-wrap {
|
||||||
max-height: 60vh;
|
max-height: calc(100vh - 320px);
|
||||||
|
min-height: 400px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border: 1px solid #ebeef5;
|
border: 1px solid #ebeef5;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|||||||
Reference in New Issue
Block a user