Lijy 5 mesiacov pred
rodič
commit
2887ff92ba

+ 3 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/hooks/useApi.js

@@ -47,7 +47,8 @@ export const TASK_ADD_EDIT = `/tasks/addTask` // 任务新增
 export const MODIFY_TASK = `/tasks/updateTask` // 任务编辑
 export const TASK_OPERATION = `/tasks/updateTaskStatus` // 任务操作
 export const PRODUCT_ADD_EDITOR = `/product/addOrUpdate` // 产品新增编辑
-export const CONTRACT_ADDITION_EDITING = `/contract/addContract` // 合同新增编辑
+export const CONTRACT_ADDITION_EDITING = `/contract/addContract` // 合同新增
+export const CONTRACT_EDITING = `/contract/editContract` // 合同编辑
 export const ORDER_ADDITION_EDITING = `/order/addOrUpdate` // 订单新增编辑
 export const PLAN_TO_ADD_EDITORS = `/visitPlan/addOrUpdateVisitPlan` // 计划新增编辑
 
@@ -64,6 +65,7 @@ export const OBTAIN_DETAILS_OF_THE_VISIT_PLAN = `/visitPlan/getVisitPlanDetail`
 export const GET_PRODUCT_DETAILS = `/product/detail` // 获取产品详情
 export const GET_TASK_DETAILS = `/tasks/getTaskDetail` // 获取任务详情
 export const SELL_AND_OBTAIN_RELATED_PRODUCTS = `/product/orderWithProduct` // 销售订单关联产品
+export const OBTAIN_CONTRACT_DETAILS = `/contract/getContractDetail` // 获取合同详情
 
 export const GET_CONTACTS_WITH_MORE_I_DS = `/contacts/getAllContacts` // 更具Id获取联系人
 export const CONTACT_PERSON_ASSOCIATED_WITH_BUSINESS_OPPORTUNITY = `/business-opportunity/saveContactsId` // 联系人关联商机

+ 8 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/moduleList/moduleList.vue

@@ -459,12 +459,17 @@ async function getListData(flag = false) {
   if (flag) {
     loadingList.value = true
   }
-  const res = await requests.post(url, {
+  let formVal = {
     pageIndex: listData.value.pageIndex,
     pageSize: listData.value.pageSize,
     pageFrom: listData.value.pageSize,
-    [queryParameters.value?.searchFiled?.search]: searchVal.value
-  }).finally(() => {
+    [queryParameters.value?.searchFiled?.search]: searchVal.value,
+  }
+
+  if(queryParameters.value?.key == 'product') {
+    formVal.status = 1
+  }
+  const res = await requests.post(url, { ...formVal }).finally(() => {
     if (flag) {
       loadingList.value = false
     }

+ 2 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/contract/addEditor.vue

@@ -17,7 +17,7 @@ import { useLifecycle } from '@hooks/useCommon.js';
 import CustomerForm from '@components/common/formForm/formView.vue'
 import requests from "@common/requests";
 import useToast from "@hooks/useToast"
-import { CONTRACT_ADDITION_EDITING } from "@hooks/useApi"
+import { CONTRACT_ADDITION_EDITING, CONTRACT_EDITING } from "@hooks/useApi"
 import useRouterStore from "@store/useRouterStore.js";
 
 const router = useRouterStore()
@@ -38,7 +38,7 @@ function onSubmit() {
       return
     }
     toastLoading('保存中', 0)
-    requests.post(CONTRACT_ADDITION_EDITING, { ...props.formValue, ...res.data }).then(() => {
+    requests.post(props.formValue?.id ? CONTRACT_EDITING : CONTRACT_ADDITION_EDITING, { ...props.formValue, ...res.data }).then(() => {
       toastSuccess('保存成功')
       setTimeout(() => {
         router.navigateBack({

+ 6 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/contract/detail.vue

@@ -18,6 +18,8 @@
           {{ infoData.payment ? (100 * infoData.payment / infoData.amounts).toFixed(1) + '%' : '0%' }}
         </template>
       </van-cell>
+      <van-cell title="计划开始时间" :value="infoData.startDate" />
+      <van-cell title="计划结束时间" :value="infoData.endDate" />
       <van-cell title="下笔回款日期" :value="infoData.nextPaymentDate">
         <template #default>
           {{ infoData.nextPaymentDate ? infoData.nextPaymentDate : '-' }}
@@ -64,7 +66,7 @@ import requests from "@common/requests";
 import { showConfirmDialog } from 'vant';
 import { useLifecycle } from '@hooks/useCommon.js';
 import { fixedFieldStatusArray } from '@/utility/defaultData.js';
-import { CONTRACT_APPROVED } from '@hooks/useApi'
+import { CONTRACT_APPROVED, OBTAIN_CONTRACT_DETAILS } from '@hooks/useApi'
 import useShowToast from '@hooks/useToast'
 import useInfoStore from '@store/useInfoStore'
 import useRouterStore from "@store/useRouterStore.js";
@@ -183,7 +185,9 @@ function jumpEdit() {
 }
 
 function getDetails(id) {
-  // 获取合同详情
+  requests.post(OBTAIN_CONTRACT_DETAILS, { id }).then((res) => {
+    infoData.value = res.data || {}
+  })
 }
 function processingData(id) {
   clearTimeout(timeout.value);

+ 3 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/order/orderInfo.vue

@@ -25,7 +25,7 @@
           <span class="text-[#FF8B32]" v-if="info.unReceivedPayment">¥ {{ info.unReceivedPayment }}</span>
         </template>
       </van-cell>
-      <van-cell title="订单类型" :value="info.type" />
+      <van-cell title="订单类型" :value="info.typeName" />
       <van-cell title="下单时间" :value="info.placeTime" />
       <van-cell title="订单开始时间" :value="info.orderStartDate" />
       <van-cell title="订单结束时间" :value="info.orderEndDate" />
@@ -75,7 +75,7 @@ import { ref } from 'vue';
 import { showConfirmDialog } from 'vant';
 import { useLifecycle } from '@hooks/useCommon.js';
 import { fixedFieldPaymentStatus } from "@utility/defaultData" 
-import { TRANSFER_CLUES } from '@hooks/useApi'
+import { TRANSFER_CLUES, TRANSFER_SALES_ORDERS } from '@hooks/useApi'
 import requests from "@common/requests";
 import useShowToast from '@hooks/useToast'
 import useInfoStore from '@store/useInfoStore'
@@ -154,7 +154,7 @@ function confirmTransfer() {
     return toastText('请选择要转移的人员')
   }
 
-  requests.post(TRANSFER_CLUES, { ids: props.info.id, inchargerId: dialogSelection.value.value }).then((res) => {
+  requests.post(TRANSFER_SALES_ORDERS, { id: props.info.id, userId: dialogSelection.value.value }).then((res) => {
     toastSuccess('转移成功')
     showDialog.value = false
     setTimeout(() => {

+ 3 - 3
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/product/productInfo.vue

@@ -141,13 +141,13 @@ function confirmTransfer() {
 
 function claimAndClaim() {
   showConfirmDialog({
-    title: '认领线索',
-    message: `确定认领【${props.info.clueName}】线索吗?`,
+    title: '认领产品',
+    message: `确定认领【${props.info.productName}】产品吗?`,
   }).then(() => {
     requests.post(TRANSFER_PRODUCTS, { id: props.info.id, userId: userInfo.userInfo.id }).then((res) => {
       toastSuccess('认领成功')
       listReloadData()
-      props.info.inchargerName = userInfo.userInfo.clueName
+      props.info.inchargerName = userInfo.userInfo.name
       showDialog.value = false
     })
   })

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/tasks/addEditor.vue

@@ -3,7 +3,7 @@
     <div class="flex-1 overflow-y-auto">
       <van-form ref="vanFormRef" show-error :show-error-message="false" label-align="left" input-align="right"
         class="bg-white" @submit="onSubmit">
-        <van-field v-model="vantFormVal.taskName" name="taskName" rows="2" label="任务名称" maxlength="100" required
+        <van-field v-model.trim="vantFormVal.taskName" name="taskName" rows="2" label="任务名称" maxlength="100" required
           show-word-limit type="textarea" placeholder="请输入" />
         <van-field v-model="vantFormVal.priority" name="priority" label="优先级" placeholder="请选择" is-link readonly
           required @click="showSelectionBox('priority', fixedFieldPriority)">

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

@@ -16,6 +16,7 @@
       <van-cell title="备注" :value="info.remark" />
     </div>
     <div class="bottomButton">
+      <van-button type="primary" class="w-full block" v-if="info.inchargerName"  @click="transformBusinessOpportunities()">线索转商机</van-button>
       <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>
@@ -70,6 +71,23 @@ const showDialog = ref(false);
 const showSelect = ref(false);
 const dialogSelection = ref({});
 
+function transformBusinessOpportunities() {
+  const InfoJson = routingInfos['business']
+  const formJson = fixedData.formJson[InfoJson.key] || []
+  const formList = resetListData(formJson?.list)
+  const filedObj = getListFieldKey(formList, props.info)
+  const formVal = { ...filedObj, inchargerId: '', name: props.info?.clueName, clueId: props.info?.id }
+  router.redirectTo({
+    pathName: 'addEditor',
+    success: () => {
+      router.emit('addEditorParameter', {
+        routerInfo: JSON.stringify(InfoJson),
+        filedValue: JSON.stringify(formVal)
+      })
+    }
+  })
+}
+
 function deleteRow() {
   const { name = '', searchFiled = {}, deteleFiled = '' } = routingInformation
   const row = props.info

+ 15 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/utility/customInstructions.js

@@ -1,6 +1,6 @@
 // 权限控制
 const PermissionDirective = { // 数组, 权限 code 和 布尔值,
-    updated(el, binding, vnode ) {
+    updated(el, binding, vnode) {
         const routePath = vnode.ctx.appContext.config.globalProperties.$route.path;
         const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '');
         const authorityCodes = (userInfo?.userInfo?.functionList || []).map(({ code }) => code);
@@ -22,9 +22,22 @@ const PermissionDirective = { // 数组, 权限 code 和 布尔值,
     },
 };
 
+// 去掉输入框首尾空格的指令
+const TrimWhitespaceDirective = {
+    beforeMount(el) {
+        if (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA') {
+            // 监听输入事件,去掉首尾空格
+            el.addEventListener('input', () => {
+                el.value = el.value.trim();
+            });
+        }
+    }
+};
+
 // 导出的自定义指令
 const customize = [
-    { key: 'permission', directive: PermissionDirective, name: '角色权限' }
+    { key: 'permission', directive: PermissionDirective, name: '角色权限' },
+    { key: 'trim-whitespace', directive: TrimWhitespaceDirective, name: '去除首尾空格' }
 ]
 
 export default customize;