mirror of
https://gitee.com/hhyykk/ipms-sjy-ui.git
synced 2025-07-17 04:15:07 +08:00
✨ CRM:完善 CRM 相关实现
This commit is contained in:
@ -103,7 +103,7 @@ const customerId = ref(0) // 客户编号
|
||||
const loading = ref(true) // 加载中
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { delView } = useTagsViewStore() // 视图操作
|
||||
const { currentRoute } = useRouter() // 路由
|
||||
const { push, currentRoute } = useRouter() // 路由
|
||||
|
||||
const permissionListRef = ref<InstanceType<typeof PermissionList>>() // 团队成员列表 Ref
|
||||
|
||||
@ -180,6 +180,7 @@ const handlePutPool = async () => {
|
||||
await message.confirm(`确定将客户【${customer.value.name}】放入公海吗?`)
|
||||
await CustomerApi.putCustomerPool(unref(customerId.value))
|
||||
message.success(`客户【${customer.value.name}】放入公海成功`)
|
||||
// 加载
|
||||
close()
|
||||
}
|
||||
|
||||
@ -198,6 +199,7 @@ const getOperateLog = async () => {
|
||||
|
||||
const close = () => {
|
||||
delView(unref(currentRoute))
|
||||
push({ name: 'CrmCustomer' })
|
||||
}
|
||||
|
||||
/** 初始化 */
|
||||
|
@ -8,16 +8,14 @@
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="规则适用人群" prop="userIds">
|
||||
<el-tree-select
|
||||
v-model="formData.userIds"
|
||||
:data="userTree"
|
||||
:props="defaultProps"
|
||||
multiple
|
||||
filterable
|
||||
check-on-click-node
|
||||
node-key="id"
|
||||
placeholder="请选择规则适用人群"
|
||||
/>
|
||||
<el-select multiple filterable v-model="formData.userIds">
|
||||
<el-option
|
||||
v-for="item in userOptions"
|
||||
:key="item.id"
|
||||
:label="item.nickname"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="规则适用部门" prop="deptIds">
|
||||
<el-tree-select
|
||||
@ -62,6 +60,7 @@ import { defaultProps, handleTree } from '@/utils/tree'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import { cloneDeep } from 'lodash-es'
|
||||
import { LimitConfType } from '@/api/crm/customer/limitConfig'
|
||||
import { aw } from '../../../../../dist-prod/assets/index-9eac537b'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
@ -85,7 +84,7 @@ const formRules = reactive({
|
||||
const formRef = ref() // 表单 Ref
|
||||
// TODO @芋艿:看看怎么搞个部门选择组件
|
||||
const deptTree = ref() // 部门树形结构
|
||||
const userTree = ref() // 用户树形结构
|
||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, limitConfType: LimitConfType, id?: number) => {
|
||||
@ -105,9 +104,9 @@ const open = async (type: string, limitConfType: LimitConfType, id?: number) =>
|
||||
formData.value.type = limitConfType
|
||||
}
|
||||
// 获得部门树
|
||||
await getDeptTree()
|
||||
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
||||
// 获得用户
|
||||
await getUserTree()
|
||||
userOptions.value = await UserApi.getSimpleUserList()
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
@ -149,76 +148,4 @@ const resetForm = () => {
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门树
|
||||
*/
|
||||
const getDeptTree = async () => {
|
||||
const res = await DeptApi.getSimpleDeptList()
|
||||
deptTree.value = []
|
||||
deptTree.value.push(...handleTree(res))
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户树
|
||||
*/
|
||||
const getUserTree = async () => {
|
||||
const res = await UserApi.getAllUser()
|
||||
userTree.value = []
|
||||
userTree.value = cloneDeep(unref(deptTree))
|
||||
|
||||
const deptUserMap = {}
|
||||
res.forEach((user) => {
|
||||
if (user.dept) {
|
||||
if (!deptUserMap[user.deptId]) {
|
||||
deptUserMap[user.deptId] = []
|
||||
}
|
||||
deptUserMap[user.deptId].push(user)
|
||||
}
|
||||
})
|
||||
|
||||
handleUserData(userTree.value, deptUserMap)
|
||||
}
|
||||
|
||||
// TODO @芋艿:看看怎么搞个用户选择的组件
|
||||
/**
|
||||
* 处理用户树
|
||||
*
|
||||
* @param deptTree
|
||||
* @param deptUserMap
|
||||
*/
|
||||
const handleUserData = (deptTree, deptUserMap) => {
|
||||
for (let i = 0; i < deptTree.length; i++) {
|
||||
// 如果是用户,就不用继续找部门下的用户
|
||||
if (deptTree[i].isUser) {
|
||||
continue
|
||||
}
|
||||
const users = deptUserMap[deptTree[i].id]
|
||||
if (users) {
|
||||
if (!deptTree[i].children) {
|
||||
deptTree[i].children = []
|
||||
}
|
||||
deptTree[i].children.push(
|
||||
...users.map((user) => {
|
||||
return {
|
||||
id: user.id,
|
||||
name: user.username + '-' + user.nickname,
|
||||
isUser: true,
|
||||
// 用户状态为关闭
|
||||
disabled: user.status === 1
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (deptTree[i].children && deptTree[i].children.length !== 0) {
|
||||
handleUserData(deptTree[i].children, deptUserMap)
|
||||
}
|
||||
|
||||
// 非人员选项禁用
|
||||
deptTree[i].disabled = true
|
||||
// 将非人员的 id 置为空
|
||||
deptTree[i].id = 'null'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -16,7 +16,6 @@
|
||||
class="mt-4"
|
||||
>
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="规则类型" align="center" prop="type" />
|
||||
<el-table-column
|
||||
label="规则适用人群"
|
||||
align="center"
|
||||
@ -39,6 +38,7 @@
|
||||
label="成交客户是否占用拥有客户数"
|
||||
align="center"
|
||||
prop="dealCountEnabled"
|
||||
min-width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.dealCountEnabled" />
|
||||
|
Reference in New Issue
Block a user