فهرست منبع

CRM-联系人:完善联系人转移、数据权限

puhui999 1 سال پیش
والد
کامیت
a64d4240a3
3فایلهای تغییر یافته به همراه46 افزوده شده و 18 حذف شده
  1. 6 0
      src/api/crm/contact/index.ts
  2. 3 13
      src/views/crm/contact/detail/ContactDetailsHeader.vue
  3. 37 5
      src/views/crm/contact/detail/index.vue

+ 6 - 0
src/api/crm/contact/index.ts

@@ -1,4 +1,5 @@
 import request from '@/config/axios'
+import { TransferReqVO } from '@/api/crm/customer'
 
 export interface ContactVO {
   name: string
@@ -85,3 +86,8 @@ export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
 export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => {
   return await request.delete({ url: `/crm/contact/delete-business-list`, data })
 }
+
+// 联系人转移
+export const transfer = async (data: TransferReqVO) => {
+  return await request.put({ url: '/crm/contact/transfer', data })
+}

+ 3 - 13
src/views/crm/contact/detail/ContactDetailsHeader.vue

@@ -10,9 +10,7 @@
       </div>
       <div>
         <!-- 右上:按钮 -->
-        <el-button @click="openForm('update', contact.id)" v-hasPermi="['crm:contact:update']">
-          编辑
-        </el-button>
+        <slot></slot>
       </div>
     </div>
   </div>
@@ -32,18 +30,10 @@
       </el-descriptions-item>
     </el-descriptions>
   </ContentWrap>
-  <!-- 表单弹窗:添加/修改 -->
-  <ContactForm ref="formRef" @success="emit('refresh')" />
 </template>
-<script setup lang="ts">
+<script lang="ts" setup>
 import * as ContactApi from '@/api/crm/contact'
-import ContactForm from '@/views/crm/contact/ContactForm.vue'
 import { formatDate } from '@/utils/formatTime'
-//操作修改
-const formRef = ref()
-const openForm = (type: string, id?: number) => {
-  formRef.value.open(type, id)
-}
+
 const { contact } = defineProps<{ contact: ContactApi.ContactVO }>()
-const emit = defineEmits(['refresh']) // 定义 success 事件,用于操作成功后的回调
 </script>

+ 37 - 5
src/views/crm/contact/detail/index.vue

@@ -1,5 +1,12 @@
 <template>
-  <ContactDetailsHeader :contact="contact" :loading="loading" @refresh="getContactData(id)" />
+  <ContactDetailsHeader v-loading="loading" :contact="contact">
+    <el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', contact.id)">
+      编辑
+    </el-button>
+    <el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transfer">
+      转移
+    </el-button>
+  </ContactDetailsHeader>
   <el-col>
     <el-tabs>
       <el-tab-pane label="详细资料">
@@ -8,8 +15,14 @@
       <el-tab-pane label="操作日志">
         <OperateLogV2 :log-list="logList" />
       </el-tab-pane>
-      <el-tab-pane label="团队成员" lazy>
-        <PermissionList :biz-id="contact.id!" :biz-type="BizTypeEnum.CRM_CONTACT" />
+      <el-tab-pane label="团队成员">
+        <PermissionList
+          ref="permissionListRef"
+          :biz-id="contact.id!"
+          :biz-type="BizTypeEnum.CRM_CONTACT"
+          :show-action="!permissionListRef?.isPool || false"
+          @quit-team="close"
+        />
       </el-tab-pane>
       <el-tab-pane label="商机" lazy>
         <BusinessList
@@ -20,6 +33,9 @@
       </el-tab-pane>
     </el-tabs>
   </el-col>
+  <!-- 表单弹窗:添加/修改 -->
+  <ContactForm ref="formRef" @success="getContactData" />
+  <CrmTransferForm ref="crmTransferFormRef" @success="close" />
 </template>
 <script lang="ts" setup>
 import { useTagsViewStore } from '@/store/modules/tagsView'
@@ -31,6 +47,8 @@ import PermissionList from '@/views/crm/permission/components/PermissionList.vue
 import { BizTypeEnum } from '@/api/crm/permission'
 import { OperateLogV2VO } from '@/api/system/operatelog'
 import { getOperateLogPage } from '@/api/crm/operateLog'
+import ContactForm from '@/views/crm/contact/ContactForm.vue'
+import CrmTransferForm from '@/views/crm/permission/components/TransferForm.vue'
 
 defineOptions({ name: 'CrmContactDetail' })
 
@@ -49,6 +67,18 @@ const getContactData = async (id: number) => {
     loading.value = false
   }
 }
+/** 编辑 */
+const formRef = ref()
+const openForm = (type: string, id?: number) => {
+  formRef.value.open(type, id)
+}
+/** 联系人转移 */
+const crmTransferFormRef = ref<InstanceType<typeof CrmTransferForm>>() // 联系人转移表单 ref
+const transfer = () => {
+  crmTransferFormRef.value?.open('联系人转移', contact.value.id, ContactApi.transfer)
+}
+
+const permissionListRef = ref<InstanceType<typeof PermissionList>>() // 团队成员列表 Ref
 
 /**
  * 获取操作日志
@@ -64,14 +94,16 @@ const getOperateLog = async (contactId: number) => {
   })
   logList.value = data.list
 }
-
+const close = () => {
+  delView(unref(currentRoute))
+}
 /** 初始化 */
 const { delView } = useTagsViewStore() // 视图操作
 const { currentRoute } = useRouter() // 路由
 onMounted(async () => {
   if (!id) {
     ElMessage.warning('参数错误,联系人不能为空!')
-    delView(unref(currentRoute))
+    close()
     return
   }
   await getContactData(id)