浏览代码

提交相关代码

Lijy 4 月之前
父节点
当前提交
3c2d30717e

+ 7 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/businessInfo.vue

@@ -109,7 +109,13 @@ function deleteBusinessOpportunity() {
   }).then(() => {
     requests.post(deteleFiled, { ...foemVal }).then((res) => {
       toastSuccess('删除成功')
-      router.navigateBack()
+      router.navigateBack({
+        success: () => {
+          router.emit('moduleListDetailParameter', {
+            row: JSON.stringify(routingInformation)
+          })
+        }
+      })
     }).catch((err) => {
       toastFail(err.msg ? err.msg : '删除失败')
     })

+ 3 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/detail.vue

@@ -62,7 +62,6 @@ function processingData(id) {
   timeout.value = setTimeout(() => {
     getBusinessOpportunityDetails(id)
   }, 100);
-  
 }
 
 useLifecycle({
@@ -73,6 +72,9 @@ useLifecycle({
   load: () => {
     tabActive.value = '商机信息';
     processingData(props.info.id)
+  },
+  unLoad: () => {
+    clearTimeout(timeout.value);
   }
 });
 </script>

+ 49 - 0
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/contacts/contactsInfo.vue

@@ -16,6 +16,8 @@
     </div>
     <div class="bottomButton">
       <van-button type="warning" class="w-full block" @click="showDialogCli()">转移联系人</van-button>
+      <van-button type="default" class="w-full block" v-permission="[routingInformation.jurisdiction.edit]" @click="jumpEdit()">编辑联系人</van-button>
+      <van-button type="danger" class="w-full block" v-permission="[routingInformation.jurisdiction.delete]" @click="deleteRow()">删除联系人</van-button>
     </div>
 
     <!-- 转移弹窗 -->
@@ -38,13 +40,18 @@
 
 <script setup>
 import { ref } from 'vue';
+import { showConfirmDialog } from 'vant';
 import { useLifecycle } from '@hooks/useCommon.js';
 import { TRANSFER_CONTACT_PERSON } from '@hooks/useApi'
 import requests from "@common/requests";
 import useShowToast from '@hooks/useToast'
 import useInfoStore from '@store/useInfoStore'
 import useRouterStore from "@store/useRouterStore.js";
+import { routingInfos } from "@utility/generalVariables"
+import { resetListData, getListFieldKey } from '@components/common/formForm/formCorrespondenceProcessing'
+import useFixedData from "@store/useFixedData.js"
 
+const fixedData = useFixedData()
 const router = useRouterStore()
 const userInfo = useInfoStore()
 const { toastSuccess, toastFail, toastText } = useShowToast()
@@ -56,10 +63,52 @@ const props = defineProps({
   }
 })
 
+const routingInformation = routingInfos['contacts']
 const showDialog = ref(false);
 const showSelect = ref(false);
 const dialogSelection = ref({});
 
+function deleteRow() {
+  const { name = '', searchFiled = {}, deteleFiled = '' } = routingInformation
+  const row = props.info
+  const foemVal = { [routingInformation.key == 'tasks' ? 'taskIds' : 'ids']: row.id }
+  showConfirmDialog({
+    title: `删除${name}`,
+    message: `确定删除【${row[searchFiled?.search]}】${name}吗?`,
+  }).then(() => {
+    requests.post(deteleFiled, { ...foemVal }).then((res) => {
+      toastSuccess('删除成功')
+      router.navigateBack({
+        success: () => {
+          router.emit('moduleListDetailParameter', {
+            row: JSON.stringify(routingInformation)
+          })
+        }
+      })
+    }).catch((err) => {
+      toastFail(err.msg ? err.msg : '删除失败')
+    })
+  })
+}
+
+function jumpEdit() {
+  const formJson = fixedData.formJson[routingInformation.key] || []
+  const formList = resetListData(formJson?.list)
+  const filedObj = getListFieldKey(formList, props.info)
+  const formVal = { ...filedObj, id: props.info.id }
+
+  router.navigateTo({
+    pathName: 'addEditor',
+    success: () => {
+      router.emit('addEditorParameter', {
+        routerInfo: JSON.stringify(routingInformation),
+        filedValue: JSON.stringify(formVal)
+      })
+    }
+  })
+}
+
+
 function confirmTransfer() {
   if (!dialogSelection.value.label) {
     return toastText('请选择要转移的人员')

+ 15 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/contacts/detail.vue

@@ -2,7 +2,7 @@
   <div class="w-full h-full">
     <van-tabs v-model:active="tabActive">
       <van-tab title="联系人信息" name="联系人信息">
-        <ContactsInfo :info="info" />
+        <ContactsInfo :info="infoData" />
       </van-tab>
       <van-tab title="相关任务" name="相关任务">
         <RelatedTasks :infoList="relatedTasksList" />
@@ -33,6 +33,8 @@ const props = defineProps({
 const tabActive = ref('联系人信息');
 const relatedBusinessOpportunitiesList = ref([]);
 const relatedTasksList = ref([]);
+const infoData = ref(props.info);
+const timeout = ref(null);
 
 watch(() => props.info, (newValue) => {
   tabActive.value = '联系人信息';
@@ -41,19 +43,30 @@ watch(() => props.info, (newValue) => {
 
 function getDetailedData(id) {
   requests.post(GET_CONTACT_DETAILS, { id }).then(({ data }) => {
+    infoData.value = data || {}
     relatedBusinessOpportunitiesList.value = data.businessOpportunityList || []
     relatedTasksList.value = data.taskList || []
   })
 }
 
 function processingData(id) {
-  getDetailedData(id)
+  clearTimeout(timeout.value);
+  timeout.value = setTimeout(() => {
+    getDetailedData(id)
+  }, 100);
 }
 
 useLifecycle({
   init: () => {
     tabActive.value = '联系人信息';
     processingData(props.info.id || props.info.customId)
+  },
+  load: () => {
+    tabActive.value = '线索信息';
+    processingData(props.info.id || props.info.customId)
+  },
+  unload: () => {
+    clearTimeout(timeout.value)
   }
 });
 </script>

+ 47 - 0
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/customer/customerInfo.vue

@@ -20,6 +20,8 @@
         @click="showDialogCli()">转移客户</van-button>
       <van-button type="primary" class="w-full block" v-if="!info.inchargerName"
         @click="claimAndClaim()">认领客户</van-button>
+      <van-button type="default" class="w-full block" v-permission="[routingInformation.jurisdiction.edit]" @click="jumpEdit()">编辑客户</van-button>
+      <van-button type="danger" class="w-full block" v-permission="[routingInformation.jurisdiction.delete]" @click="deleteRow()">删除客户</van-button>
     </div>
 
     <!-- 转移弹窗 -->
@@ -49,7 +51,11 @@ import requests from "@common/requests";
 import useShowToast from '@hooks/useToast'
 import useInfoStore from '@store/useInfoStore'
 import useRouterStore from "@store/useRouterStore.js";
+import { routingInfos } from "@utility/generalVariables"
+import { resetListData, getListFieldKey } from '@components/common/formForm/formCorrespondenceProcessing'
+import useFixedData from "@store/useFixedData.js"
 
+const fixedData = useFixedData()
 const router = useRouterStore()
 const userInfo = useInfoStore()
 const { toastSuccess, toastFail, toastText } = useShowToast()
@@ -64,6 +70,47 @@ const props = defineProps({
 const showDialog = ref(false);
 const showSelect = ref(false);
 const dialogSelection = ref({});
+const routingInformation = routingInfos['customer']
+
+function deleteRow() {
+  const { name = '', searchFiled = {}, deteleFiled = '' } = routingInformation
+  const row = props.info
+  const foemVal = { [routingInformation.key == 'tasks' ? 'taskIds' : 'ids']: row.id }
+  showConfirmDialog({
+    title: `删除${name}`,
+    message: `确定删除【${row[searchFiled?.search]}】${name}吗?`,
+  }).then(() => {
+    requests.post(deteleFiled, { ...foemVal }).then((res) => {
+      toastSuccess('删除成功')
+      router.navigateBack({
+        success: () => {
+          router.emit('moduleListDetailParameter', {
+            row: JSON.stringify(routingInformation)
+          })
+        }
+      })
+    }).catch((err) => {
+      toastFail(err.msg ? err.msg : '删除失败')
+    })
+  })
+}
+
+function jumpEdit() {
+  const formJson = fixedData.formJson[routingInformation.key] || []
+  const formList = resetListData(formJson?.list)
+  const filedObj = getListFieldKey(formList, props.info)
+  const formVal = { ...filedObj, id: props.info.id }
+
+  router.navigateTo({
+    pathName: 'addEditor',
+    success: () => {
+      router.emit('addEditorParameter', {
+        routerInfo: JSON.stringify(routingInformation),
+        filedValue: JSON.stringify(formVal)
+      })
+    }
+  })
+}
 
 function confirmTransfer() {
   if (!dialogSelection.value.label) {

+ 15 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/customer/detail.vue

@@ -2,7 +2,7 @@
   <div class="w-full h-full">
     <van-tabs v-model:active="tabActive" swipe-threshold="3">
       <van-tab title="客户信息" name="客户信息">
-        <CustomerInfo :info="info" />
+        <CustomerInfo :info="infoData" />
       </van-tab>
       <van-tab title="相关任务" name="相关任务">
         <RelatedTasks :infoList="relatedTasksList" />
@@ -43,6 +43,8 @@ const relatedTasksList = ref([]);
 const relatedContactsList = ref([]);
 const relatedBusinessOpportunitiesList = ref([]);
 const relatedSalesOrdersList = ref([]);
+const infoData = ref(props.info)
+const timeout = ref(null);
 
 watch(() => props.info, (newValue) => {
   tabActive.value = '客户信息';
@@ -51,6 +53,7 @@ watch(() => props.info, (newValue) => {
 
 function getDetailedData(id) {
   requests.post(OBTAIN_CUSTOMER_DETAILS, { id }).then(({ data }) => {
+    infoData.value = data || {}
     relatedTasksList.value = data.tasks || []
     relatedContactsList.value = data.contacts || []
     relatedBusinessOpportunitiesList.value = data.businessOpportunitys || []
@@ -59,13 +62,23 @@ function getDetailedData(id) {
 }
 
 function processingData(id) {
-  getDetailedData(id)
+  clearTimeout(timeout.value);
+  timeout.value = setTimeout(() => {
+    getDetailedData(id)
+  }, 100);
 }
 
 useLifecycle({
   init: () => {
     tabActive.value = '客户信息';
     processingData(props.info.id)
+  },
+  load: () => {
+    tabActive.value = '客户信息';
+    processingData(props.info.id)
+  },
+  unload: () => {
+    clearTimeout(timeout.value)
   }
 });
 </script>

+ 15 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/thread/detail.vue

@@ -2,7 +2,7 @@
   <div class="w-full h-full">
     <van-tabs v-model:active="tabActive">
       <van-tab title="线索信息">
-        <ThreadInfo :info="info" />
+        <ThreadInfo :info="infoData" />
       </van-tab>
       <van-tab title="相关任务" name="相关任务">
         <RelatedTasks :infoList="relatedTasksList" :key="componentKey" />
@@ -29,6 +29,8 @@ const props = defineProps({
 const tabActive = ref('线索信息');
 const componentKey = ref(1);
 const relatedTasksList = ref([]);
+const infoData = ref(props.info);
+const timeout = ref(null);
 
 watch(() => props.info, (newValue) => {
   tabActive.value = '线索信息';
@@ -37,6 +39,7 @@ watch(() => props.info, (newValue) => {
 
 function getDetails(id) {
   requests.post(GET_CLUE_DETAILS, { id }).then(({ data }) => {
+    infoData.value = data || {}
     relatedTasksList.value = data.taskList || []
   }).finally(() => {
     setTimeout(() => {
@@ -46,13 +49,23 @@ function getDetails(id) {
 }
 
 function processingData(id) {
-  getDetails(id)
+  clearTimeout(timeout.value);
+  timeout.value = setTimeout(() => {
+    getDetails(id)
+  }, 100);
 }
 
 useLifecycle({
   init: () => {
     tabActive.value = '线索信息';
     processingData(props.info.id)
+  },
+  load: () => {
+    tabActive.value = '线索信息';
+    processingData(props.info.id)
+  },
+  unload: () => {
+    clearTimeout(timeout.value)
   }
 });
 </script>

+ 47 - 0
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/thread/threadInfo.vue

@@ -18,6 +18,8 @@
     <div class="bottomButton">
       <van-button type="warning" class="w-full block" v-if="info.inchargerName"  @click="showDialogCli()">转移线索</van-button>
       <van-button type="primary" class="w-full block" v-if="!info.inchargerName" @click="claimAndClaim()">认领线索</van-button>
+      <van-button type="default" class="w-full block" v-permission="[routingInformation.jurisdiction.edit]" @click="jumpEdit()">编辑线索</van-button>
+      <van-button type="danger" class="w-full block" v-permission="[routingInformation.jurisdiction.delete]" @click="deleteRow()">删除线索</van-button>
     </div>
 
     <!-- 转移弹窗 -->
@@ -47,7 +49,11 @@ import requests from "@common/requests";
 import useShowToast from '@hooks/useToast'
 import useInfoStore from '@store/useInfoStore'
 import useRouterStore from "@store/useRouterStore.js";
+import { routingInfos } from "@utility/generalVariables"
+import { resetListData, getListFieldKey } from '@components/common/formForm/formCorrespondenceProcessing'
+import useFixedData from "@store/useFixedData.js"
 
+const fixedData = useFixedData()
 const router = useRouterStore()
 const userInfo = useInfoStore()
 const { toastSuccess, toastFail, toastText } = useShowToast()
@@ -59,10 +65,51 @@ const props = defineProps({
   }
 })
 
+const routingInformation = routingInfos['thread']
 const showDialog = ref(false);
 const showSelect = ref(false);
 const dialogSelection = ref({});
 
+function deleteRow() {
+  const { name = '', searchFiled = {}, deteleFiled = '' } = routingInformation
+  const row = props.info
+  const foemVal = { [routingInformation.key == 'tasks' ? 'taskIds' : 'ids']: row.id }
+  showConfirmDialog({
+    title: `删除${name}`,
+    message: `确定删除【${row[searchFiled?.search]}】${name}吗?`,
+  }).then(() => {
+    requests.post(deteleFiled, { ...foemVal }).then((res) => {
+      toastSuccess('删除成功')
+      router.navigateBack({
+        success: () => {
+          router.emit('moduleListDetailParameter', {
+            row: JSON.stringify(routingInformation)
+          })
+        }
+      })
+    }).catch((err) => {
+      toastFail(err.msg ? err.msg : '删除失败')
+    })
+  })
+}
+
+function jumpEdit() {
+  const formJson = fixedData.formJson[routingInformation.key] || []
+  const formList = resetListData(formJson?.list)
+  const filedObj = getListFieldKey(formList, props.info)
+  const formVal = { ...filedObj, id: props.info.id }
+
+  router.navigateTo({
+    pathName: 'addEditor',
+    success: () => {
+      router.emit('addEditorParameter', {
+        routerInfo: JSON.stringify(routingInformation),
+        filedValue: JSON.stringify(formVal)
+      })
+    }
+  })
+}
+
 function listReloadData() {
   router.navigateBack({
     success: () => {