瀏覽代碼

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Min 10 月之前
父節點
當前提交
4d14102937
共有 21 個文件被更改,包括 153 次插入76 次删除
  1. 4 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/attachment.vue
  2. 9 2
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/products.vue
  3. 19 12
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/index.vue
  4. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/relatedBusiness.vue
  5. 4 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/attachment.vue
  6. 10 2
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedBusiness.vue
  7. 16 3
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedContacts.vue
  8. 8 3
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedOrders.vue
  9. 3 3
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/index.vue
  10. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/api.ts
  11. 4 4
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/operationRecord.vue
  12. 5 4
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/products.vue
  13. 34 27
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/detail/index.vue
  14. 3 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/index.vue
  15. 4 3
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/detail/index.vue
  16. 4 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/attachment.vue
  17. 4 3
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java
  18. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java
  19. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ClueServiceImpl.java
  20. 17 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/CustomServiceImpl.java
  21. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/CustomMapper.xml

+ 4 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/attachment.vue

@@ -62,6 +62,7 @@ const attachmenttable = ref([])
 const information = ref<any>({})
 const renameDialogVisible = ref(false)
 const renameVal = ref('')
+const transitionVal = ref<any>({})
 const uploadRef = ref<any>()
 
 // 下载文件
@@ -86,7 +87,8 @@ function saveEditClue() {
         globalPopup?.showWarning('请输入文件名称')
         return
     }
-    const bussinessId = information.value.id
+    // const bussinessId = information.value.id
+    const bussinessId = transitionVal.value.id
     post(REFIENAMEFILE, { name: renameVal.value, id: bussinessId }).then((res) => {
         renameDialogVisible.value = false
         globalPopup?.showSuccess(res.msg || '')
@@ -97,6 +99,7 @@ function saveEditClue() {
 // 显示弹窗
 function showVisible(item: any) {
     renameVal.value = JSON.parse(JSON.stringify(item.name))
+    transitionVal.value = JSON.parse(JSON.stringify(item))
     renameDialogVisible.value = true
 }
 

+ 9 - 2
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/products.vue

@@ -15,7 +15,7 @@
                 </el-table-column>
                 <el-table-column prop="productName" label="产品名称">
                     <template #default="scope">
-                        <el-button link type="primary" size="large">{{
+                        <el-button link type="primary" size="large" @click="toDetali(scope.row)">{{
                             scope.row.productName
                         }}</el-button>
                     </template>
@@ -54,7 +54,7 @@
 import { ref, reactive, onMounted, onUnmounted, defineExpose, inject, watchEffect } from 'vue'
 import { GETTABLELIST } from '@/pages/product/api';
 import { post } from '@/utils/request';
-
+import router from '@/router';
 import RelatedProducts from '@/components/relatedProducts/relatedProducts.vue'
 import { UPDATEINSET } from '../api';
 import { all } from 'axios';
@@ -77,6 +77,13 @@ const allLoading = reactive({
     editProductLoading: false
 })
 
+function toDetali(row: any) {
+  router.push({
+    path: `/product/detail`,
+    query: { id: row.productId }
+  })
+}
+
 function editProduct() {
     let productTableListData = relatedProductsRef?.value?.returnData()
     const { id, name, customerId, contactsId, amountOfMoney, expectedTransactionDate, stageId, inchargerId, remark } = information.value

+ 19 - 12
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/index.vue

@@ -52,9 +52,11 @@
             @click="editNewBusiness(false)">新建商机</el-button>
           <el-button type="primary" @click="showVisible('batchTransferVisible')"
             :disabled="batchTableData.length <= 0">批量转移</el-button>
-          <el-button type="primary" v-permission="['businessDelete']" @click="batchDeteleItem()" :disabled="batchTableData.length <= 0">批量删除</el-button>
+          <el-button type="primary" v-permission="['businessDelete']" @click="batchDeteleItem()"
+            :disabled="batchTableData.length <= 0">批量删除</el-button>
           <el-button type="primary" @click="showVisible('stageSetVisible')">阶段设置</el-button>
-          <el-button type="primary" v-permission="['businessRecycle']" @click="showVisible('deteleBusinessVisible')">回收站</el-button>
+          <el-button type="primary" v-permission="['businessRecycle']"
+            @click="showVisible('deteleBusinessVisible')">回收站</el-button>
           <el-button v-permission="['businessImport']" type="primary"
             @click="showVisible('importVisible')">导入</el-button>
           <el-button v-permission="['businessExport']" type="primary" @click="exportBusinessTableList()"
@@ -68,11 +70,13 @@
             <el-table-column v-for="(item, index) in tableColumn" :prop="item.prop" :label="item.label" :key="index"
               :width="item.width">
               <template #default="scope">
-                <div class="table-text-textnowrap" v-if="item.eventName" @click="dealWithTableColumn(scope.row, item.eventName)">{{ scope.row[item.prop] }}</div>
+                <div class="table-text-textnowrap" v-if="item.eventName"
+                  @click="dealWithTableColumn(scope.row, item.eventName)">{{ scope.row[item.prop] }}</div>
                 <template v-else>{{ scope.row[item.prop] }}</template>
               </template>
             </el-table-column>
-            <el-table-column label="操作" fixed="right" width="200" v-permission="['businessAddAnEdit', 'tasksAdd', 'businessDelete']">
+            <el-table-column label="操作" fixed="right" width="200"
+              v-permission="['businessAddAnEdit', 'tasksAdd', 'businessDelete']">
               <template #default="scope">
                 <el-button link type="primary" size="large" @click="editNewBusiness(scope.row)"
                   v-permission="['businessAddAnEdit']">编辑</el-button>
@@ -99,7 +103,8 @@
           <h4 :id="titleId">{{ allText.newBusinessisibleText }}</h4>
           <div>
             <el-button type="primary" :loading="allLoading.newBusinessSaveLading"
-              :disabled="allLoading.businessSaveLading" @click="editBusiness(true)" v-if="!businessTemplateValue.id">保存并新建</el-button>
+              :disabled="allLoading.businessSaveLading" @click="editBusiness(true)"
+              v-if="!businessTemplateValue.id">保存并新建</el-button>
             <el-button type="primary" @click="editBusiness(false)" :loading="allLoading.businessSaveLading"
               :disabled="allLoading.newBusinessSaveLading">保存</el-button>
             <el-button @click="closeVisible('newBusinessisible')">取消</el-button>
@@ -271,13 +276,15 @@ function editBusiness(visibles: boolean) {
       businessItemProductList: productTableListData ? JSON.stringify(productTableListData) : []
     }
     allLoading.businessSaveLading = true
-    post(UPDATEINSET, { ...businessTemplateValue.value, ...newForm }).then((_res) => {
-      allVisible.newBusinessisible = visibles
-      globalPopup?.showSuccess('保存成功')
-      getBusinessTableList()
-    }).finally(() => {
-      allLoading.businessSaveLading = false
-    })
+    setTimeout(() => {
+      post(UPDATEINSET, { ...businessTemplateValue.value, ...newForm }).then((_res) => {
+        allVisible.newBusinessisible = visibles
+        globalPopup?.showSuccess('保存成功')
+        getBusinessTableList()
+      }).finally(() => {
+        allLoading.businessSaveLading = false
+      })
+    }, 1500)
   }).catch((_err: any) => {
     console.log(_err)
     globalPopup?.showError('请填写完整')

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/relatedBusiness.vue

@@ -143,7 +143,7 @@ function closeVisible(type: keyof typeof allVisible) {
 watchEffect(() => {
     const { data } = props
     information.value = data
-    relatedTaskstable.value = data.businessOpportunityList.map((item: any) => {
+    relatedTaskstable.value = (data.businessOpportunityList || []).map((item: any) => {
         return {
             ...item,
             expectedTransactionDate: item.expectedTransactionDate ? formatDate(new Date(item.expectedTransactionDate)) : ''

+ 4 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/attachment.vue

@@ -61,6 +61,7 @@ const attachmenttable = ref([])
 const information = ref<any>({})
 const uploadRef = <any>ref()
 const renameDialogVisible = ref(false)
+const transitionVal = ref<any>({})
 const renameVal = ref('')
 
 // 下载文件
@@ -85,7 +86,8 @@ function saveEditClue() {
         globalPopup?.showWarning('请输入文件名称')
         return
     }
-    const id = information.value.id
+    // const id = information.value.id
+    const id = transitionVal.value.id
     post(URL_REFFILENAME, { name: renameVal.value, id: id }).then((res) => {
         renameDialogVisible.value = false
         globalPopup?.showSuccess(res.msg || '')
@@ -114,6 +116,7 @@ async function httpUploadFile(param: UploadRequestOptions) {
 // 显示弹窗
 function showVisible(item: any) {
     renameVal.value = JSON.parse(JSON.stringify(item.name))
+    transitionVal.value = JSON.parse(JSON.stringify(item))
     renameDialogVisible.value = true
 }
 

+ 10 - 2
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedBusiness.vue

@@ -8,9 +8,9 @@
         </div>
         <div class="flex-1 overflow-auto pt-3">
             <el-table :data="relatedTaskstable" border style="width: 100%;height: 300px;">
-                <el-table-column prop="taskName" label="name">
+                <el-table-column prop="taskName" label="商机名称">
                     <template #default="scope">
-                        <el-button link type="primary" size="large">{{
+                        <el-button link type="primary" size="large" @click="toDetail(scope.row)">{{
                             scope.row.name
                             }}</el-button>
                     </template>
@@ -55,6 +55,7 @@ import { GETTABLELIST } from '@/pages/product/api';
 import { GETGENERATEFOEM, UPDATEINSET } from '@/pages/business/api';
 import { judgmentaAmounteEqual, setTemplateDataDisable } from '@/utils/tools';
 import { formatDateTime } from '@/utils/times';
+import router from '@/router';
 
 const emits = defineEmits(['refreshData']);
 const globalPopup = inject<GlobalPopup>('globalPopup')
@@ -83,6 +84,13 @@ const allLoading = reactive({
     businessSaveLading: false
 })
 
+function toDetail(row: any) {
+    router.push({
+        path: `/business/detail`,
+        query: { id: row.id }
+    })
+}
+
 function editBusiness(visibles: boolean) {
     businessTemplateRef.value?.getData().then((res: any) => {
         let productTableListData = relatedProductsRef?.value?.returnData()

+ 16 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedContacts.vue

@@ -15,15 +15,20 @@
                 </el-table-column>
                 <el-table-column prop="name" label="联系人姓名">
                     <template #default="scope">
-                        <el-button link type="primary" size="large">{{
+                        <el-button link type="primary" size="large" @click="toPath(scope.row)">{{
                             scope.row.name
-                        }}</el-button>
+                            }}</el-button>
                     </template>
                 </el-table-column>
                 <el-table-column prop="phone" label="电话号码" width="130" />
                 <el-table-column prop="email" label="邮箱" width="130" />
                 <el-table-column prop="position" label="职务" width="130" />
-                <el-table-column prop="sexValue" label="性别" width="130" />
+                <el-table-column prop="sex" label="性别" width="130">
+                    <template #default="scope">
+                        <template v-if="scope.row.sex == 1">男</template>
+                        <template v-if="scope.row.sex == 0">女</template>
+                    </template>
+                </el-table-column>
                 <el-table-column prop="ownerName" label="负责人" width="130" />
                 <el-table-column prop="creatorName" label="创建人" width="130" />
                 <el-table-column prop="createTime" label="创建时间" width="130" />
@@ -56,6 +61,7 @@ import { GETGENERATEFOEM, URL_ADD } from '@/pages/contacts/api';
 import { get, post } from '@/utils/request';
 import { setTemplateDataDisable } from '@/utils/tools';
 import { GenerateForm } from '@zmjs/form-design';
+import router from '@/router';
 import { ref, reactive, onMounted, onUnmounted, defineExpose, inject, watchEffect } from 'vue'
 
 const emits = defineEmits(['refreshData']);
@@ -104,6 +110,13 @@ function editContacts(data: any) {
     }, 1000);
 }
 
+function toPath(row: any) {
+    router.push({
+        path: `/contacts/detail`,
+        query: { id: row.id }
+    })
+}
+
 const allLoading = reactive({
     contactsTemplateRefLoading: false,
     editContactsSaveLoading: false

+ 8 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedOrders.vue

@@ -11,7 +11,7 @@
                 <el-table-column prop="orderCode" label="订单编号" width="130" />
                 <el-table-column prop="orderName" label="订单名称" min-width="200">
                     <template #default="scope">
-                        <el-button link type="primary" size="large">{{
+                        <el-button link type="primary" size="large" @click="toPath(scope.row)">{{
                             scope.row.orderName
                             }}</el-button>
                     </template>
@@ -55,7 +55,7 @@ import { ref, reactive, onMounted, onUnmounted, defineExpose, inject, watchEffec
 import { setTemplateDataDisable } from '@/utils/tools';
 import { GenerateForm } from '@zmjs/form-design';
 import { get, post } from '@/utils/request';
-
+import router from '@/router';
 import RelatedProducts from '@/components/relatedProducts/relatedProducts.vue'
 import { GETGENERATEFOEM, GETTABLELIST, URL_OEDERUPDATE } from '@/pages/order/api';
 import { formatDate } from '@/utils/times';
@@ -86,7 +86,12 @@ const allLoading = reactive({
     orderTemplateLoadinng: false,
 })
 
-
+function toPath(row: any) {
+    router.push({
+        path: `/order/detail`,
+        query: { id: row.id }
+    })
+}
 
 function saveOrder(flag: boolean) {
     orderTemplateRef.value?.getData().then((res: any) => {

+ 3 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/index.vue

@@ -13,7 +13,7 @@
               </el-select>
             </el-form-item>
             <el-form-item label="公司号码">
-              <el-input v-model="customerCriteriaForm.telPhone" clearable placeholder="请输入"></el-input>
+              <el-input v-model="customerCriteriaForm.companyPhone" clearable placeholder="请输入"></el-input>
             </el-form-item>
             <el-form-item label="邮箱">
               <el-input v-model="customerCriteriaForm.email" clearable placeholder="请输入"></el-input>
@@ -208,7 +208,7 @@ interface personnelInterface {
 interface customerCriteriaFormType { // 线索筛选条件类型
   customName: string,
   customSourceId: string | number,
-  telPhone: string,
+  companyPhone: string,
   email: string,
   customerIndustryId: string | number,
   customerLevelId: string | number,
@@ -226,7 +226,7 @@ const globalPopup = inject<GlobalPopup>('globalPopup')
 const customerCriteriaForm = reactive<customerCriteriaFormType>({ // 筛选条件form
   customName: '',
   customSourceId: '',
-  telPhone: '',
+  companyPhone: '',
   email: '',
   customerIndustryId: '',
   customerLevelId: '',

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/api.ts

@@ -30,7 +30,7 @@ export const tableColumns: TableColumn[] = [
     { prop: 'price', label: '订单金额(¥)', width: '120' },
     { prop: 'receivedPayment', label: '已回款(¥)', width: '100' },
     { prop: 'unReceivedPayment', label: '未回款(¥)', width: '100' },
-    { prop: 'statusValue', label: '回款状态', width: '100' },
+    { prop: 'receivedStatus', label: '回款状态', width: '100' },
     { prop: 'typeName', label: '订单类型', width: '200' },
     { prop: 'placeTime', label: '下单时间', width: '200' },
     { prop: 'orderStartDate', label: '订单开始时间', width: '200' },

+ 4 - 4
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/operationRecord.vue

@@ -5,9 +5,9 @@
         </div>
         <div class="flex-1 overflow-auto pt-5">
             <el-table :data="operationRecordtable" border style="width: 100%;height: 278px;">
-                <el-table-column prop="operateDate" label="操作时间" width="150" />
-                <el-table-column prop="operateName" label="操作人" width="120" />
-                <el-table-column prop="msg" label="操作内容" />
+                <el-table-column prop="auditTime" label="操作时间" width="150" />
+                <el-table-column prop="auditorName" label="操作人" width="120" />
+                <el-table-column prop="auditorContent" label="操作内容" />
             </el-table>
         </div>
     </div>
@@ -22,7 +22,7 @@ const operationRecordtable = ref([])
 
 watchEffect(() => {
     const { data } = props
-    operationRecordtable.value = data.contactsLogList || []
+    operationRecordtable.value = data || []
 });
 // 生命周期钩子
 onMounted(() => {

+ 5 - 4
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/products.vue

@@ -96,7 +96,7 @@ function saveOrder() {
         ...items,
         orderEndDate: items.orderEndDate ? items.orderEndDate : '',
         orderStartDate: items.orderStartDate ? items.orderStartDate : '',
-        placeTime: items.placeTime ? formatDate(items.placeTime) : '',
+        placeTime: items.placeTime ? formatDate(new Date(items.placeTime)) : '',
         orderProductDetailString: produt
     }
     if((formVal.price || 0) < (formVal.receivedPayment || 0)) {
@@ -104,7 +104,7 @@ function saveOrder() {
       return
     }
     allLoading.editSaveLading = true
-    console.log(formVal, '<==== 将要传的值')
+    console.log(formVal, '<==== 将要传的值', items)
     post(URL_OEDERUPDATE, formVal).then(() => {
         globalPopup?.showSuccess('操作成功')
         allLoading.editSaveLading = false
@@ -160,8 +160,8 @@ async function getSystemField() {
     setInfoValue(info.value)
 }
 
-function setInfoValue(item: any) {
-    const templateKey = getTemplateKey(orderTemplate.value.list)
+async function setInfoValue(item: any) {
+    const templateKey = await getTemplateKey(orderTemplate.value.list)
     let formVal: templateKey = { id: item.id }
     for (let i = 0; i < templateKey.length; i++) {
         const key = templateKey[i]
@@ -174,6 +174,7 @@ watchEffect(() => {
     const { data, information } = props
     relatedTaskstable.value = data || []
     info.value = information || {}
+    setInfoValue(info.value)
 });
 
 // 生命周期钩子

+ 34 - 27
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/detail/index.vue

@@ -25,8 +25,8 @@
 
             <div class="w-full h-auto flex justify-between mt-2">
                 <div class="bg-white shadow-md rounded-md" style="width: 65%;">
-                    <Detailcompinents :data="relatedTasks" :information="information" :formTaskType="2" :filed="'orderId'"
-                        :disabled-list="['taskType', 'orderId']" @refreshData="refreshData" />
+                    <Detailcompinents :data="relatedTasks" :information="information" :formTaskType="2"
+                        :filed="'orderId'" :disabled-list="['taskType', 'orderId']" @refreshData="refreshData" />
                 </div>
                 <div class="bg-white ml-2 shadow-md rounded-md flex-1">
                     <OperationRecord :data="operationRecord" />
@@ -140,33 +140,40 @@ function getRelatedProducts() {
 
 type allTypeStr = 'getDetail' | 'getFileList' | 'getRelatedTasks' | 'getOperationRecord' | 'getRelatedProducts' | 'getPaymentCollectionList' | ''
 
-async function getAll(event: allTypeStr) {
+async function getAll(_event: allTypeStr) {
     try {
         pageLoading.value = true
-        if (!event) {
-            await Promise.all([
-                getDetail(),
-                getFileList(),
-                getRelatedTasks(),
-                getOperationRecord(),
-                getRelatedProducts(),
-                getPaymentCollectionList()
-            ])
-        } else if (event == 'getDetail') {
-            await getDetail()
-        } else if (event == 'getFileList') {
-            await getFileList()
-        } else if (event == 'getRelatedTasks') {
-            await getRelatedTasks()
-        } else if (event == 'getOperationRecord') {
-            await getOperationRecord()
-        } else if (event == 'getRelatedProducts') {
-            await getRelatedProducts()
-        } else if (event == 'getPaymentCollectionList') {
-            await getDetail()
-            await getPaymentCollectionList()
-        }
-
+        // if (!event) {
+        //     await Promise.all([
+        //         getDetail(),
+        //         getFileList(),
+        //         getRelatedTasks(),
+        //         getOperationRecord(),
+        //         getRelatedProducts(),
+        //         getPaymentCollectionList()
+        //     ])
+        // } else if (event == 'getDetail') {
+        //     await getDetail()
+        // } else if (event == 'getFileList') {
+        //     await getFileList()
+        // } else if (event == 'getRelatedTasks') {
+        //     await getRelatedTasks()
+        // } else if (event == 'getOperationRecord') {
+        //     await getOperationRecord()
+        // } else if (event == 'getRelatedProducts') {
+        //     await getRelatedProducts()
+        // } else if (event == 'getPaymentCollectionList') {
+        //     await getDetail()
+        //     await getPaymentCollectionList()
+        // }
+        await Promise.all([
+            getDetail(),
+            getFileList(),
+            getRelatedTasks(),
+            getOperationRecord(),
+            getRelatedProducts(),
+            getPaymentCollectionList()
+        ])
         pageLoading.value = false
     } catch {
         pageLoading.value = false

+ 3 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/index.vue

@@ -56,6 +56,9 @@
                   }}</el-button> -->
                   <div class="table-text-textnowrap" @click.prevent="toDetali(scope.row)">{{ scope.row[column.prop] }}</div>
                 </template>
+                <template v-if="column.prop === 'receivedStatus'">
+                  <div>{{ selectData.RemittanceStatus[scope.row.receivedStatus].name }}</div>
+                </template>
               </template>
             </el-table-column>
             <el-table-column :label="'操作'" :width="'200px'" fixed="right" v-permission="['orderEdit']">

+ 4 - 3
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/detail/index.vue

@@ -19,7 +19,7 @@
           <Information :data="information" @getInformationData="getInformationData" />
         </div>
         <div class="bg-white ml-2 shadow-md rounded-md flex-1">
-          <Attachment :data="attachment" :information="information" @getFileList="getFileList" />
+          <Attachment :data="attachment" :information="information" @getFileList="getDetail" />
         </div>
       </div>
 
@@ -85,9 +85,10 @@ function getFileList(val: any = false) {
   })
 }
 
-async function getDetail(flag: boolean) {
+async function getDetail(_flag: boolean) {
   try {
-    const id = flag ? addressParameters.value : value.value
+    // const id = flag ? addressParameters.value : value.value
+    const id = addressParameters.value
     pageLoading.value = true
 
     await Promise.all([

+ 4 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/attachment.vue

@@ -54,6 +54,7 @@ import { DETELEFILE, DOWNFILE, REFIENAME, UPLOADFILE } from '../../constant';
 const globalPopup = inject<GlobalPopup>('globalPopup')
 const emits = defineEmits(['refreshData']);
 const attachmenttable = ref([])
+const transitionVal = ref<any>({})
 const information: any = ref({})
 const renameDialogVisible = ref(false)
 const renameVal = ref('')
@@ -84,7 +85,8 @@ function saveEditClue() {
         globalPopup?.showWarning('请输入文件名称')
         return
     }
-    const clueId = information.value.id
+    // const clueId = information.value.id
+    const clueId = transitionVal.value.id
     post(REFIENAME, { name: renameVal.value, id: clueId }).then((res) => {
         if (res.code == 'ok') {
             renameDialogVisible.value = false
@@ -97,6 +99,7 @@ function saveEditClue() {
 // 显示弹窗
 function showVisible(item: any) {
     renameVal.value = JSON.parse(JSON.stringify(item.name))
+    transitionVal.value = JSON.parse(JSON.stringify(item))
     renameDialogVisible.value = true
 }
 

+ 4 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java

@@ -88,7 +88,7 @@ public class BusinessOpportunityController {
     @RequestMapping("/exportData")
     public HttpRespMsg exportData(BusinessOpportunity bo ,HttpServletRequest request) throws Exception {
         User user = userMapper.selectById(request.getHeader("token"));
-        SysForm sysForm = sysFormMapper.selectOne(new LambdaQueryWrapper<SysForm>().eq(SysForm::getCompanyId, user.getCompanyId()).eq(SysForm::getCode, "Thread").eq(SysForm::getIsCurrent, 1));
+        SysForm sysForm = sysFormMapper.selectOne(new LambdaQueryWrapper<SysForm>().eq(SysForm::getCompanyId, user.getCompanyId()).eq(SysForm::getCode, "business").eq(SysForm::getIsCurrent, 1));
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
         String config = sysForm.getConfig();
         JSONObject configOb = JSON.parseObject(config);
@@ -102,7 +102,7 @@ public class BusinessOpportunityController {
         dataList.add(titleList);
         HttpRespMsg msg = list(bo, request);
         Map<String, Object> msgData = (Map<String, Object>) msg.getData();
-        List<BusinessOpportunity> bos = (List<BusinessOpportunity>) msgData.get("record");
+        List<BusinessOpportunity> bos = (List<BusinessOpportunity>) msgData.get("data");
         for (BusinessOpportunity bo1 : bos) {
             List<String> item=new ArrayList<>();
             for (int i = 0; i < configObJSONArray.size(); i++) {
@@ -132,7 +132,8 @@ public class BusinessOpportunityController {
                     String model = target.getString("model");
                     String targetName = model.substring(0, 1).toUpperCase() + model.substring(1);
                     Class<? extends BusinessOpportunity> aClass = bo1.getClass();
-                    String value = String.valueOf(aClass.getMethod("get" + targetName).invoke(bo1)==null?"":aClass.getMethod("get" + targetName).invoke(bo1));
+                    Object o = aClass.getMethod("get" + targetName).invoke(bo1) == null ? "" : aClass.getMethod("get" + targetName).invoke(bo1);
+                    String value = String.valueOf(o);
                     if(model.equals("inchargerId")){
                         if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                             value = "$userName"+String.valueOf(aClass.getMethod("getInchargerName").invoke(bo1))+"$";

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java

@@ -392,7 +392,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
 
     @Override
     public Object reFileName(UploadFile uploadFile, HttpServletRequest request) {
-        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("item_id", uploadFile.getId()).eq("code", "business").set("name", uploadFile.getName()));
+        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("id", uploadFile.getId()).eq("code", "business").set("name", uploadFile.getName()));
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         httpRespMsg.setMsg("操作成功");
         return httpRespMsg;

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ClueServiceImpl.java

@@ -366,7 +366,7 @@ public class ClueServiceImpl extends ServiceImpl<ClueMapper, Clue> implements Cl
 
     @Override
     public Object reFileName(UploadFile uploadFile, HttpServletRequest request) {
-        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("item_id", uploadFile.getId()).eq("code", "clue").set("name", uploadFile.getName()));
+        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("id", uploadFile.getId()).eq("code", "clue").set("name", uploadFile.getName()));
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         httpRespMsg.setMsg("操作成功");
         return httpRespMsg;

+ 17 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/CustomServiceImpl.java

@@ -299,7 +299,22 @@ public class CustomServiceImpl extends ServiceImpl<CustomMapper, Custom> impleme
         custom1.setTasks(tasks);
         custom1.setActionLogs(actionLogs);
         //联系人
-        custom1.setContacts(contactsMapper.selectList((new QueryWrapper<Contacts>().eq("custom_id", custom1.getId()))));
+        List<Contacts> contacts = contactsMapper.selectList((new QueryWrapper<Contacts>().eq("custom_id", custom1.getId())));
+        if (contacts.size() > 0){
+            List<String> ids = contacts.stream()
+                    .flatMap(contact -> Stream.of(contact.getOwnerId(), contact.getCreatorId()))
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            List<User> users = userMapper.selectList(new QueryWrapper<User>().in("id", ids));
+            Map<String, String> map = users.stream()
+                    .collect(Collectors.toMap(User::getId,User::getName));
+            for (Contacts contact : contacts) {
+                contact.setOwnerName(map.get(contact.getOwnerId()));
+                contact.setCreatorName(map.get(contact.getCreatorId()));
+            }
+        }
+        custom1.setContacts(contacts);
         //订单
         List<SalesOrder> orders = salesOrderMapper.selectList((new QueryWrapper<SalesOrder>().eq("custom_id", custom1.getId())));
         if (orders.size() > 0 ){
@@ -494,7 +509,7 @@ public class CustomServiceImpl extends ServiceImpl<CustomMapper, Custom> impleme
 
     @Override
     public Object reFileName(UploadFile uploadFile, HttpServletRequest request) {
-        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("item_id", uploadFile.getId()).eq("code", "custom").set("name", uploadFile.getName()));
+        uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("id", uploadFile.getId()).eq("code", "custom").set("name", uploadFile.getName()));
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         httpRespMsg.setMsg("操作成功");
         return httpRespMsg;

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/CustomMapper.xml

@@ -81,7 +81,7 @@
         <if test="email != null and email != '' ">
             and c.email LIKE CONCAT('%', #{email}, '%')
         </if>
-        <if test="companyPhone != null ">
+        <if test="companyPhone != null and companyPhone != '' ">
             and c.company_phone = #{companyPhone}
         </if>
         <if test="customerLevelId != null ">