Bläddra i källkod

Merge remote-tracking branch 'origin/master'

ysm 10 månader sedan
förälder
incheckning
cb5bc45665
29 ändrade filer med 268 tillägg och 141 borttagningar
  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. 32 27
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ProductController.java
  19. 40 27
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/SalesOrderController.java
  20. 2 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/AuditLogCenter.java
  21. 2 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Product.java
  22. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java
  23. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ClueServiceImpl.java
  24. 17 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/CustomServiceImpl.java
  25. 3 3
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  26. 33 3
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java
  27. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/CustomMapper.xml
  28. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  29. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.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))+"$";

+ 32 - 27
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ProductController.java

@@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -99,13 +100,18 @@ public class ProductController {
             msg.setError("产品编码为["+product.getProductCode()+"]的产品已存在");
             return msg;
         }
+        Integer id = product.getId();
+        if(!productService.saveOrUpdate(product)){
+            msg.setError("验证失败");
+            return msg;
+        }
         //todo:生成操作记录
         AuditLogCenter auditLogCenter =new AuditLogCenter();
         auditLogCenter.setAuditorId(user.getId());
         auditLogCenter.setAuditorName(user.getName());
         auditLogCenter.setModuleId(product.getId());
         auditLogCenter.setModuleCode("Product");
-        if(product.getId()==null){
+        if(id==null){
             auditLogCenter.setAuditorContent("创建了产品");
             auditLogCenterService.save(auditLogCenter);
         }else {
@@ -119,10 +125,6 @@ public class ProductController {
             }
 
         }
-        if(!productService.saveOrUpdate(product)){
-            msg.setError("验证失败");
-            return msg;
-        }
         return msg;
     }
 
@@ -155,6 +157,7 @@ public class ProductController {
                 List<Product> productList = productService.list(new LambdaQueryWrapper<Product>().in(Product::getId, idList));
                 productList.forEach(p->{
                     p.setIsDelete(1);
+                    p.setUpdateTime(LocalDateTime.now());
                 });
                 if(!productService.updateBatchById(productList)){
                     msg.setError("验证失败");
@@ -316,6 +319,7 @@ public class ProductController {
         List<SalesOrder> orderList = salesOrderService.list(new LambdaQueryWrapper<SalesOrder>().in(SalesOrder::getId, orderIds));
         List<SysDict> orderTypeList = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "OrderType"));
         List<Integer> businessOpportunityIds = orderList.stream().map(SalesOrder::getBusinessOpportunityId).distinct().collect(Collectors.toList());
+        businessOpportunityIds.add(-1);
         List<BusinessOpportunity> businessOpportunityList = businessOpportunityService.list(new LambdaQueryWrapper<BusinessOpportunity>().in(BusinessOpportunity::getId, businessOpportunityIds));
         orderList.forEach(o->{
             Optional<Custom> custom = customList.stream().filter(ct -> ct.getId().equals(o.getCustomId())).findFirst();
@@ -379,29 +383,30 @@ public class ProductController {
             String[] idsSplit = ids.split(",");
             List<String> splitList = Arrays.asList(idsSplit);
             List<Integer> idList = splitList.stream().map(i -> Integer.valueOf(i)).collect(Collectors.toList());
-            idList.add(-1);
-            List<Product> productList = productService.list(new LambdaQueryWrapper<Product>().in(Product::getId, idList));
-            if(productList.size()>0){
-                productList.forEach(p->{
-                    p.setIsDelete(0);
-                });
-                productService.updateBatchById(productList);
-            }
-            List<AuditLogCenter> auditLogCenters =new ArrayList<>();
             if(idList.size()>0){
-                idList.forEach(i->{
-                    //todo: 生成操作记录
-                    AuditLogCenter auditLogCenter =new AuditLogCenter();
-                    auditLogCenter.setAuditorContent("恢复了产品");
-                    auditLogCenter.setAuditorId(user.getId());
-                    auditLogCenter.setAuditorName(user.getName());
-                    auditLogCenter.setModuleId(Integer.valueOf(i));
-                    auditLogCenter.setModuleCode("Product");
-                    auditLogCenters.add(auditLogCenter);
-                });
-            }
-            if(auditLogCenters.size()>0){
-                auditLogCenterService.saveBatch(auditLogCenters);
+                List<Product> productList = productService.list(new LambdaQueryWrapper<Product>().in(Product::getId, idList));
+                if(productList.size()>0){
+                    productList.forEach(p->{
+                        p.setIsDelete(0);
+                    });
+                    productService.updateBatchById(productList);
+                }
+                List<AuditLogCenter> auditLogCenters =new ArrayList<>();
+                if(idList.size()>0){
+                    idList.forEach(i->{
+                        //todo: 生成操作记录
+                        AuditLogCenter auditLogCenter =new AuditLogCenter();
+                        auditLogCenter.setAuditorContent("恢复了产品");
+                        auditLogCenter.setAuditorId(user.getId());
+                        auditLogCenter.setAuditorName(user.getName());
+                        auditLogCenter.setModuleId(Integer.valueOf(i));
+                        auditLogCenter.setModuleCode("Product");
+                        auditLogCenters.add(auditLogCenter);
+                    });
+                }
+                if(auditLogCenters.size()>0){
+                    auditLogCenterService.saveBatch(auditLogCenters);
+                }
             }
         }
         return msg;

+ 40 - 27
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/SalesOrderController.java

@@ -20,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -89,7 +90,15 @@ public class SalesOrderController {
         Integer companyId = user.getCompanyId();
         order.setCompanyId(companyId);
         order.setCreatorId(user.getId());
-        if(order.getPrice()!=null){
+        if(order.getReceivedPayment()!=null){
+            BigDecimal price = order.getPrice();
+            if(order.getPrice().doubleValue()!=order.getReceivedPayment().doubleValue()){
+                order.setReceivedStatus(1);
+            }else {
+                order.setReceivedStatus(2);
+            }
+            order.setUnReceivedPayment(price.subtract(order.getReceivedPayment()));
+        }else {
             order.setUnReceivedPayment(order.getPrice());
         }
         int countCode;
@@ -109,13 +118,18 @@ public class SalesOrderController {
             msg.setError("订单名称为["+order.getOrderName()+"]的订单已存在");
             return msg;
         }
+        Integer id = order.getId();
+        if(!salesOrderService.saveOrUpdate(order)){
+            msg.setError("验证失败");
+            return msg;
+        }
         //todo:生成操作记录
         AuditLogCenter auditLogCenter =new AuditLogCenter();
         auditLogCenter.setAuditorId(user.getId());
         auditLogCenter.setAuditorName(user.getName());
         auditLogCenter.setModuleId(order.getId());
         auditLogCenter.setModuleCode("SalesOrder");;
-        if(order.getId()==null){
+        if(id==null){
             auditLogCenter.setAuditorContent("创建了订单");
             auditLogCenterService.save(auditLogCenter);
         }else {
@@ -129,10 +143,6 @@ public class SalesOrderController {
             }
 
         }
-        if(!salesOrderService.saveOrUpdate(order)){
-            msg.setError("验证失败");
-            return msg;
-        }
         //处理订单下的产品数据
         if(!StringUtils.isEmpty(order.getOrderProductDetailString())){
             String orderProductDetailString = order.getOrderProductDetailString();
@@ -209,6 +219,7 @@ public class SalesOrderController {
             }
             orderList.forEach(o->{
                 o.setIsDelete(1);
+                o.setUpdateTime(LocalDateTime.now());
             });
             if(!salesOrderService.updateBatchById(orderList)){
                 msg.setError("验证失败");
@@ -266,29 +277,31 @@ public class SalesOrderController {
             String[] idSplit = ids.split(",");
             List<String> splitList = Arrays.asList(idSplit);
             List<Integer> idList = splitList.stream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
-            List<SalesOrder> orderList = salesOrderService.list(new LambdaQueryWrapper<SalesOrder>().in(SalesOrder::getId, idList));
-            orderList.forEach(o->{
-                o.setIsDelete(0);
-            });
-            if(!salesOrderService.updateBatchById(orderList)){
-                msg.setError("验证失败");
-                return msg;
-            }
-            List<AuditLogCenter> auditLogCenters =new ArrayList<>();
             if(idList.size()>0){
-                idList.forEach(i->{
-                    //todo: 生成操作记录
-                    AuditLogCenter auditLogCenter =new AuditLogCenter();
-                    auditLogCenter.setAuditorContent("恢复了订单");
-                    auditLogCenter.setAuditorId(user.getId());
-                    auditLogCenter.setAuditorName(user.getName());
-                    auditLogCenter.setModuleId(Integer.valueOf(i));
-                    auditLogCenter.setModuleCode("SalesOrder");
-                    auditLogCenters.add(auditLogCenter);
+                List<SalesOrder> orderList = salesOrderService.list(new LambdaQueryWrapper<SalesOrder>().in(SalesOrder::getId, idList));
+                orderList.forEach(o->{
+                    o.setIsDelete(0);
                 });
-            }
-            if(auditLogCenters.size()>0){
-                auditLogCenterService.saveBatch(auditLogCenters);
+                if(!salesOrderService.updateBatchById(orderList)){
+                    msg.setError("验证失败");
+                    return msg;
+                }
+                List<AuditLogCenter> auditLogCenters =new ArrayList<>();
+                if(idList.size()>0){
+                    idList.forEach(i->{
+                        //todo: 生成操作记录
+                        AuditLogCenter auditLogCenter =new AuditLogCenter();
+                        auditLogCenter.setAuditorContent("恢复了订单");
+                        auditLogCenter.setAuditorId(user.getId());
+                        auditLogCenter.setAuditorName(user.getName());
+                        auditLogCenter.setModuleId(Integer.valueOf(i));
+                        auditLogCenter.setModuleCode("SalesOrder");
+                        auditLogCenters.add(auditLogCenter);
+                    });
+                }
+                if(auditLogCenters.size()>0){
+                    auditLogCenterService.saveBatch(auditLogCenters);
+                }
             }
         }
         return msg;

+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/AuditLogCenter.java

@@ -47,8 +47,8 @@ public class AuditLogCenter extends Model<AuditLogCenter> {
      * 操作时间
      */
     @TableField("audit_time")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
     private LocalDateTime auditTime;
 
     /**

+ 2 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Product.java

@@ -150,6 +150,8 @@ public class Product extends Model<Product> {
     private Integer isDelete;
 
     @TableField("update_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
     @TableField(exist = false)

+ 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;

+ 3 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -389,20 +389,20 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
             if(importProductList.size()>0){
                if(!saveOrUpdateBatch(importProductList)){
-                   msg.setError("验证失败");
+                   msg.setError("验证失败,请检验数据格式是否正确");
                    return msg;
                }
             }
         } catch (IOException | NoSuchMethodException e) {
             e.printStackTrace();
-            msg.setError("验证失败");
+            msg.setError("验证失败,请检验数据格式是否正确");
         } catch (IllegalAccessException e) {
             e.printStackTrace();
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
-            msg.setError("验证失败");
+            msg.setError("验证失败,请检验数据格式是否正确");
             return msg;
         }
         return msg;

+ 33 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java

@@ -560,20 +560,20 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
             }
             if(importOrderList.size()>0){
                 if(!saveOrUpdateBatch(importOrderList)){
-                    msg.setError("验证失败");
+                    msg.setError("验证失败,请检验数据格式是否正确");
                     return msg;
                 }
             }
         } catch (IOException | NoSuchMethodException e) {
             e.printStackTrace();
-            msg.setError("验证失败");
+            msg.setError("验证失败,请检验数据格式是否正确");
         } catch (IllegalAccessException e) {
             e.printStackTrace();
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
-            msg.setError("验证失败");
+            msg.setError("验证失败,请检验数据格式是否正确");
         }
         return msg;
     }
@@ -630,6 +630,21 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
                                     value = String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder));
                                 }
                             }
+                            if(model.equals("customId")){
+                                value = String.valueOf(aClass.getMethod("getCustomName").invoke(salesOrder));
+                            }
+                            if(model.equals("businessOpportunityId")){
+                                value = String.valueOf(aClass.getMethod("getBusinessOpportunityName").invoke(salesOrder));
+                            }
+                            if(model.equals("customSigner")){
+                                value = String.valueOf(aClass.getMethod("getCustomSignerName").invoke(salesOrder)==null?"":aClass.getMethod("getCustomSignerName").invoke(salesOrder));
+                            }
+                            if(model.equals("companySigner")){
+                                value = String.valueOf(aClass.getMethod("getCompanySignerName").invoke(salesOrder)==null?"":aClass.getMethod("getCompanySignerName").invoke(salesOrder));
+                            }
+                            if(model.equals("type")){
+                                value = String.valueOf(aClass.getMethod("getTypeName").invoke(salesOrder));
+                            }
                             item.add(value);
                         }
                     }
@@ -645,6 +660,21 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
                             value = String.valueOf(aClass.getMethod("getInchargerName").invoke(salesOrder));
                         }
                     }
+                    if(model.equals("customId")){
+                        value = String.valueOf(aClass.getMethod("getCustomName").invoke(salesOrder));
+                    }
+                    if(model.equals("businessOpportunityId")){
+                        value = String.valueOf(aClass.getMethod("getBusinessOpportunityName").invoke(salesOrder));
+                    }
+                    if(model.equals("customSigner")){
+                        value = String.valueOf(aClass.getMethod("getCustomSignerName").invoke(salesOrder)==null?"":aClass.getMethod("getCustomSignerName").invoke(salesOrder));
+                    }
+                    if(model.equals("companySigner")){
+                        value = String.valueOf(aClass.getMethod("getCompanySignerName").invoke(salesOrder)==null?"":aClass.getMethod("getCompanySignerName").invoke(salesOrder));
+                    }
+                    if(model.equals("type")){
+                        value = String.valueOf(aClass.getMethod("getTypeName").invoke(salesOrder));
+                    }
                     item.add(value);
                 }
             }

+ 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 ">

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -189,7 +189,7 @@ public class TaskController {
             if(user.getCompanyId()==3092){
                 Project project = projectService.getById(task.getProjectId());
                 //除了报价项目  售后报价项目和研发项目不管控  其它项目都管控
-                if(task.getGroupId()!=null&&(project.getCategory()!=null && !(project.getCategory()==644 || project.getCategory()==647 || project.getCategory()==697))){
+                if(task.getGroupId()!=null&&(project.getCategory()!=null && !(project.getCategory()==644 || project.getCategory()==647 || project.getCategory()==697 ||project.getCategory()==804 ))){
                     TaskGroup taskGroup = taskGroupService.getById(task.getGroupId());
                     if(taskGroup.getManDay()==null){
                         msg.setError("创建失败,请先分配任务分组的预估工时");

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1921,7 +1921,7 @@
         left join task t on t.id=te.task_id
         left join project p on p.id=t.project_id
         left join project_category pc on pc.id=p.category
-        where u.company_id=#{companyId} and te.project_id is not null  and pc.name not in ('报价项目','售后报价项目','研发项目')
+        where u.company_id=#{companyId} and te.project_id is not null  and pc.name not in ('报价项目','售后报价项目','研发项目','运维项目')
         <if test="projectId!=null">
             and p.id=#{projectId}
         </if>
@@ -1952,7 +1952,7 @@
         left join task t on t.id=te.task_id
         left join project p on p.id=t.project_id
         left join project_category pc on pc.id=p.category
-        where u.company_id=#{companyId} and te.project_id is not null  and pc.name not in ('报价项目','售后报价项目','研发项目')
+        where u.company_id=#{companyId} and te.project_id is not null  and pc.name not in ('报价项目','售后报价项目','研发项目','运维项目')
         <if test="projectId!=null">
             and p.id=#{projectId}
         </if>