Ver Fonte

修改我的客户页面权限

lm há 1 mês atrás
pai
commit
6365c4af10

+ 29 - 1
src/components/ConcactPeopleFormDialog/formDialog.ts

@@ -1,5 +1,28 @@
 import { ref } from "vue";
 
+// 手机号正则校验
+const phoneNoValidator = (rule: any, value: string, callback: any) => {
+  if (!value) {
+    return callback(new Error('请输入手机号'));
+  }
+  const reg = /^1[3-9]\d{9}$/;
+  if (!reg.test(value)) {
+    return callback(new Error('请输入正确的11位手机号'));
+  }
+  callback();
+};
+// 办公电话正则校验
+const officePhoneNoValidator =  (rule: any, value: string, callback: any) => {
+  if (!value) {
+    return callback();
+  }
+  const reg = /^1[3-9]\d{9}$/;
+  if (!reg.test(value)) {
+    return callback(new Error('请输入正确的11位手机号'));
+  }
+  callback();
+};
+
 export const formItemList = ref([
   {
     key: 'name',
@@ -22,7 +45,9 @@ export const formItemList = ref([
     label: '手机号',
     type: 'input',
     placeholder: '请输入手机号',
-    rules:[{required:true,trigger:'blur',message:'请填写信息'}],
+    rules:[
+      {required:true, validator: phoneNoValidator, trigger: 'blur' }
+    ],
     style: {}
   },
   {
@@ -30,6 +55,9 @@ export const formItemList = ref([
     label: '办公电话',
     type: 'input',
     placeholder: '请输入办公电话',
+    rules:[
+      {validator: officePhoneNoValidator, trigger: 'blur' }
+    ],
     style: {}
   },
   {

+ 38 - 2
src/views/myCustomer/myCustomerDetail/contactDetail/index.vue

@@ -14,6 +14,23 @@
             <template #num="{currentIndex}">
                 {{ currentIndex }}
             </template>
+
+            <template #phoneNo="{row}">
+                <div @mouseleave="HandleHover(row,'phoneNo','leave')"  @mouseenter="HandleHover(row,'phoneNo','enter')">
+                    <span v-if="userInfo.roles.includes('Admin') || hoverRowId == row.id && hoverKey == 'phoneNo'"> {{ row.phoneNo }} </span>
+                    <span v-else>{{ row.phoneNo.slice(0,3)+ '****'+ row.phoneNo.slice(-4)}} </span>
+                </div>
+            </template>
+
+
+            <template #officePhoneNo="{row}">
+                <div @mouseleave="HandleHover(row,'officePhoneNo','leave')"  @mouseenter="HandleHover(row,'officePhoneNo','enter')">
+                    <span v-if="userInfo.roles.includes('Admin') || hoverRowId == row.id && hoverKey == 'officePhoneNo'"> {{ row.officePhoneNo }} </span>
+                    <span v-else>{{ row.officePhoneNo.slice(0,3)+ '****'+ row.officePhoneNo.slice(-4)}} </span>
+                </div>
+            </template>
+            
+            
             <template #lastFollowDate="{row}">
                 {{ row.lastFollowDate ? row.lastFollowDate : '-' }}
             </template>
@@ -21,7 +38,8 @@
                 <div class="table_row_option">
                     <span class="option_button_editor" @click="OpenFollowlFormDialog(row)">写跟进</span>
                     <span class="option_button_editor" @click="OpenCactPeopleFormDialog(row)">编辑</span>
-                    <span class="el_button_delete" @click="OpenDeleteDialog(row)">删除</span>
+                    <!-- deleteStatus   true 可删   false 不可删  -->
+                    <span class="el_button_delete" v-if="row.deleteStatus" @click="OpenDeleteDialog(row)">删除</span>
                 </div>
             </template>
         </Table>
@@ -57,7 +75,7 @@
 
 
 <script setup lang="ts">
-import { onMounted, ref,watch } from 'vue';
+import { computed, onMounted, ref,watch } from 'vue';
 import { useRoute } from 'vue-router';
 import { useStore } from 'vuex';
 
@@ -85,6 +103,10 @@ const route = useRoute()
 const store = useStore()
 
 
+const userInfo = computed(()=>{
+    return JSON.parse(localStorage.getItem('userInfo') || '{}')
+})
+
 
 /**
  * 1. 获取联系人信息有关变量及操作
@@ -211,6 +233,20 @@ const OpenFollowlFormDialog = (row)=>{
     }
 }
 
+
+/**  5. 处理手机号的悬浮显示逻辑 */
+const hoverRowId = ref()  // 当前悬浮的行id
+const hoverKey = ref()
+const HandleHover = (params,key,type)=>{
+    if(type == 'leave'){
+        hoverKey.value = ''
+        hoverRowId.value = ''
+    }else if(type == 'enter'){
+        hoverKey.value = key
+        hoverRowId.value = params.id
+    }
+}
+
 watch(()=>props.contactReloadFlag,async (newVal)=>{
     await GetContactPeopleList()
 })

+ 2 - 2
src/views/myCustomer/myCustomerDetail/contactDetail/table.ts

@@ -30,7 +30,7 @@ export const tableColumns = ref([
     label: '手机号',
     width: '140',
     align: 'center',
-    custom: false,
+    custom: true,
     hidden: false
   },
   {
@@ -38,7 +38,7 @@ export const tableColumns = ref([
     label: '办公电话',
     width: '140',
     align: 'center',
-    custom: false,
+    custom: true,
     hidden: false
   },
   {

+ 13 - 12
src/views/myCustomer/myCustomerDetail/customerStatusOverview/index.vue

@@ -5,7 +5,7 @@
             <div class="product_summary">
                 <div class="summary_title">跟进产品总数 {{ followUpProductSummary.total }}</div>
                 <div class="summary_tags">
-                    <span v-for="(item,index) in followUpProductSummary.differentStatusNum" :key="item.productId"> {{item.productName}} {{item.count}}</span>
+                    <span v-for="(item,index) in followUpProductSummary.differentStatusNum" :key="index"> {{item.statusName}} {{item.count}}</span>
                 </div>
             </div>
             
@@ -104,8 +104,8 @@
             </div>
 
             <!-- 之前归属人的跟进记录 -->
-            <!-- 历史跟进的状态是否展示 要判断是否给当前用户开放历史跟进权限——待完善 -->
-            <div class="history_statistics">
+            <!-- 历史跟进的状态是否展示 要判断是否给当前用户开放历史跟进权限 -->
+            <div v-if="historyFollowData" class="history_statistics">
                 <div class="stat_header">
                     <span>历史跟进</span>
                     <el-button class="button_border" @click="OpenHistoryFollowDialog">历史跟进</el-button>
@@ -316,19 +316,19 @@ const GetOverviewDetail = async ()=>{
     let res = await getOverviewDetailApi(params)
     if(res.code == 200){
         const {selectData,dataPageList,productCount,
-            productOverviewData,productData,
+            productData,statusOverviewData,
             followOverViewData,orderData
         } = res.data
 
         // 跟进产品总览 ——左
         followUpProductSummary.value = {
             total:productCount,
-            differentStatusNum:productOverviewData || []
+            differentStatusNum:statusOverviewData || []
         }
         // 跟进产品-各自分析 ——左
         productsFollowStatistic.value = productData || []
         // 历史跟进统计 —— 右
-        historyFollowData.value = followOverViewData || {}
+        historyFollowData.value = followOverViewData
         //预约待办展示 —— 右
         pendingAppointmentList.value = orderData || []
         // 中间 正在进行中的跟进记录 —— 中
@@ -444,12 +444,13 @@ const HandleSearchChange = async (params,key)=>{
 const pendingAppointmentList = ref<pendingAppointmentItm[]>([]) 
 
 // 右侧—— 历史跟进 数据总览
-const historyFollowData = ref({
-    historyProductCount:0,
-    historyPersonCount:0,
-    historyFollowCount:0,
-    successCount:0,
-})
+interface  historyFollowData {
+    historyProductCount:number,
+    historyPersonCount:number,
+    historyFollowCount:number,
+    successCount:number,
+}
+const historyFollowData = ref<historyFollowData>()
 
 
 /**

+ 5 - 4
src/views/myCustomer/myCustomerDetail/index.vue

@@ -22,7 +22,7 @@
                     <el-button class="button_border" @click="OpenConcactPeoplelFormDialog"><img :src="addIcon" alt=""> 新增联系人</el-button>
                     <el-button class="button_refresh" @click="OpenSchoolFormDialog"><img :src="editIcon" alt="" > 编辑</el-button>
                     <el-button class="button_refresh" @click="OpenTransferPublicDialog"><img :src="poepleMoveIcon" alt=""> 转至公海</el-button>
-                    <el-button class="button_refresh" @click="OpenTransferFormDialog"><img :src="exchangeIcon" alt="" > 转让</el-button>
+                    <el-button class="button_refresh" v-if="userInfo.roles.includes('Admin')" @click="OpenTransferFormDialog"><img :src="exchangeIcon" alt="" > 转让</el-button>
                     <el-button class="button_refresh" @click="OpenOperationRecordDialog"><img :src="logIcon" alt=""> 操作记录</el-button>
                 </div>
             </template>
@@ -154,13 +154,15 @@ const route = useRoute()
 const router = useRouter()
 
 const customerBaseMsg = ref<CustomerBaseMsg>({});
-
 // 默认列表的tab切换
 const defaultShowTab = ref('messageOverview')
 const HandleTabChange = (val)=>{
     defaultShowTab.value = val
 }
 
+const userInfo = computed(()=>{
+    return JSON.parse(localStorage.getItem('userInfo') || '{}')
+})
 
 
 /** 1. 转至公海 弹窗有关数据 及操作  */
@@ -399,8 +401,6 @@ onUnmounted(()=>{
 
 <style lang="scss" scoped>
 .main_container{
-    gap:16px;
-
     :deep(.top_right){
         flex: 1 1;
         .header_content{
@@ -445,6 +445,7 @@ onUnmounted(()=>{
         }
     }
     .bottom_detail{
+        margin-top: 16px;
         overflow: auto;
     }
 }