Selaa lähdekoodia

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

Min 11 kuukautta sitten
vanhempi
commit
e92774a4ad

+ 19 - 61
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/index.vue

@@ -56,18 +56,18 @@ type PromptType = {
 };
 
 const bulletinPrompt = reactive<PromptType>({
-  permission: undefined,
-  date: undefined,
+  permission: 0,
+  date: 0,
   sliceDate: [new Date(), new Date()]
 });
 const summaryPrompt = reactive<PromptType>({
-  permission: undefined,
-  date: undefined,
+  permission: 0,
+  date: 0,
   sliceDate: [new Date(), new Date()]
 });
 const stagePrompt = reactive<PromptType>({
-  permission: undefined,
-  date: undefined,
+  permission: 0,
+  date: 0,
   sliceDate: [new Date(), new Date()]
 });
 
@@ -155,12 +155,7 @@ watchEffect(() => {
 });
 
 watchEffect(() => {
-  console.log(
-    bulletinPrompt.date,
-    '-----',
-    bulletinPrompt.sliceDate,
-    '88888888---watchEffect'
-  );
+  console.log(bulletinPrompt.date, '-----', bulletinPrompt.sliceDate, '88888888---watchEffect');
 });
 </script>
 
@@ -170,7 +165,6 @@ watchEffect(() => {
       <div class="flex gap-3 mb-4">
         <div class="w-40">
           <el-select
-            clearable
             size="small"
             :model-value="bulletinPrompt.permission"
             @change="(value) => (bulletinPrompt.permission = value)"
@@ -184,16 +178,11 @@ watchEffect(() => {
         </div>
         <div class="w-40">
           <el-select
-            clearable
             size="small"
             :model-value="bulletinPrompt.date"
             @change="(value) => (bulletinPrompt.date = value)"
           >
-            <el-option
-              v-for="date in dateOptions"
-              :label="date.label"
-              :value="date.value"
-            />
+            <el-option v-for="date in dateOptions" :label="date.label" :value="date.value" />
             <el-option label="自定义" value="ignore">
               <div class="flex gap-2 w-80">
                 <el-date-picker
@@ -233,14 +222,8 @@ watchEffect(() => {
           <TrendCard
             title="新增商机"
             unit="个"
-            :number="
-              requestData?.bulletin?.businessOpportunity
-                .businessOpportunityCount
-            "
-            :compare="
-              requestData?.bulletin?.businessOpportunity
-                .businessOpportunityPromote
-            "
+            :number="requestData?.bulletin?.businessOpportunity.businessOpportunityCount"
+            :compare="requestData?.bulletin?.businessOpportunity.businessOpportunityPromote"
           />
           <TrendCard
             title="新增销售订单"
@@ -252,21 +235,13 @@ watchEffect(() => {
             title="销售订单金额"
             unit="元"
             :number="requestData?.bulletin?.salesOrdersPrice.salesOrdersPrice"
-            :compare="
-              requestData?.bulletin?.salesOrdersPrice.salesOrderPricePromote
-            "
+            :compare="requestData?.bulletin?.salesOrdersPrice.salesOrderPricePromote"
           />
           <TrendCard
             title="商机金额"
             unit="元"
-            :number="
-              requestData?.bulletin?.businessOpportunityPrice
-                .businessOpportunityPrice
-            "
-            :compare="
-              requestData?.bulletin?.businessOpportunityPrice
-                .businessOpportunityPromote
-            "
+            :number="requestData?.bulletin?.businessOpportunityPrice.businessOpportunityPrice"
+            :compare="requestData?.bulletin?.businessOpportunityPrice.businessOpportunityPromote"
           />
           <TrendCard
             title="新增线索"
@@ -301,11 +276,7 @@ watchEffect(() => {
                 :model-value="summaryPrompt.date"
                 @change="(value) => (summaryPrompt.date = value)"
               >
-                <el-option
-                  v-for="date in dateOptions"
-                  :label="date.label"
-                  :value="date.value"
-                />
+                <el-option v-for="date in dateOptions" :label="date.label" :value="date.value" />
                 <el-option label="自定义" value="ignore">
                   <div class="flex gap-2 w-80">
                     <el-date-picker
@@ -341,31 +312,22 @@ watchEffect(() => {
             <SimpleCard
               title="新增商机"
               unit="个"
-              :number="
-                requestData.summary?.businessOpportunityDataSummary.newNum
-              "
+              :number="requestData.summary?.businessOpportunityDataSummary.newNum"
             />
             <SimpleCard
               title="赢单商机"
               unit="个"
-              :number="
-                requestData.summary?.businessOpportunityDataSummary.winning
-              "
+              :number="requestData.summary?.businessOpportunityDataSummary.winning"
             />
             <SimpleCard
               title="输单商机"
               unit="个"
-              :number="
-                requestData.summary?.businessOpportunityDataSummary.losting
-              "
+              :number="requestData.summary?.businessOpportunityDataSummary.losting"
             />
             <SimpleCard
               title="商机总金额"
               unit="元"
-              :number="
-                requestData.summary?.businessOpportunityDataSummary
-                  .allAmountOfMoney
-              "
+              :number="requestData.summary?.businessOpportunityDataSummary.allAmountOfMoney"
             />
           </div>
           <Divider title="线索汇总" />
@@ -406,11 +368,7 @@ watchEffect(() => {
                 :model-value="stagePrompt.date"
                 @change="(value) => (stagePrompt.date = value)"
               >
-                <el-option
-                  v-for="date in dateOptions"
-                  :label="date.label"
-                  :value="date.value"
-                />
+                <el-option v-for="date in dateOptions" :label="date.label" :value="date.value" />
                 <el-option label="自定义" value="ignore">
                   <div class="flex gap-2 w-80">
                     <el-date-picker

+ 19 - 28
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/corpreport/api.ts

@@ -4,7 +4,7 @@ import { dayjs } from 'element-plus';
 export type RequestProps = {
   startDate?: string;
   endDate?: string;
-  type?: 0 | 1;
+  exportType?: 0 | 1;
   userId?: number;
   departmentId?: number;
 };
@@ -25,14 +25,9 @@ export async function getStaffData(): Promise<any> {
   return await get('/user/getSimpleActiveUserList');
 }
 
-export async function exportFile(
-  payload: RequestProps,
-  type: number
-): Promise<any> {
+export async function exportFile(payload: RequestProps, type: number): Promise<any> {
   return await post(
-    type === 0
-      ? '/report/exportCustomerTotalCount'
-      : '/report/exportCustomerTransferRate',
+    type === 0 ? '/report/exportCustomerTotalCount' : '/report/exportCustomerTransferRate',
     payload
   );
 }
@@ -40,46 +35,42 @@ export async function exportFile(
 export const dateCollections = [
   {
     name: '当日',
-    start_time: dayjs().startOf('date').toISOString(),
-    end_time: dayjs().endOf('date').toISOString()
+    start_time: dayjs().startOf('date').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().endOf('date').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '昨日',
-    start_time: dayjs().startOf('date').subtract(1, 'day').toISOString(),
-    end_time: dayjs().endOf('date').subtract(1, 'day').toISOString()
+    start_time: dayjs().startOf('date').subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().endOf('date').subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '本周',
-    start_time: dayjs().startOf('week').add(1, 'day').toISOString(),
-    end_time: dayjs().endOf('week').add(1, 'day').toISOString()
+    start_time: dayjs().startOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().endOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '上周',
-    start_time: dayjs()
-      .add(-1, 'week')
-      .startOf('week')
-      .add(1, 'day')
-      .toISOString(),
-    end_time: dayjs().add(-1, 'week').endOf('week').add(1, 'day').toISOString()
+    start_time: dayjs().add(-1, 'week').startOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().add(-1, 'week').endOf('week').add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '本月',
-    start_time: dayjs().startOf('month').toISOString(),
-    end_time: dayjs().endOf('month').toISOString()
+    start_time: dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().endOf('month').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '上月',
-    start_time: dayjs().add(-1, 'month').startOf('month').toISOString(),
-    end_time: dayjs().add(-1, 'month').endOf('month').toISOString()
+    start_time: dayjs().add(-1, 'month').startOf('month').format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().add(-1, 'month').endOf('month').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '本季度',
-    start_time: dayjs().month(0).toISOString(),
-    end_time: dayjs().month(2).endOf('month').toISOString()
+    start_time: dayjs().month(0).format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().month(2).endOf('month').format('YYYY-MM-DD HH:mm:ss')
   },
   {
     name: '上季度',
-    start_time: dayjs().add(-1, 'year').month(9).toISOString(),
-    end_time: dayjs().add(-1, 'year').month(11).endOf('month').toISOString()
+    start_time: dayjs().add(-1, 'year').month(9).format('YYYY-MM-DD HH:mm:ss'),
+    end_time: dayjs().add(-1, 'year').month(11).endOf('month').format('YYYY-MM-DD HH:mm:ss')
   }
 ];

+ 20 - 29
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/corpreport/index.vue

@@ -16,7 +16,7 @@ import { downloadFile } from '@/utils/tools';
 
 const isLoading = ref(false);
 const dataSource = ref([]);
-const form = reactive({ type: undefined, date: undefined, member: undefined });
+const form = reactive({ type: 1, date: undefined, member: undefined });
 const memberOptions = ref([]);
 // 0 客户总量  1 客户转化率
 const dataType = ref<0 | 1>(0);
@@ -49,7 +49,7 @@ const onSubmit = async (isExport?: boolean) => {
   const payload = {
     startDate: form.date && dateCollections[form.date - 1].start_time,
     endDate: form.date && dateCollections[form.date - 1].end_time,
-    type: form.type,
+    exportType: form.type,
     userId: form.type === 1 ? form.member : undefined,
     departmentId: form.type === 1 ? undefined : form.member
   } as RequestProps;
@@ -70,10 +70,10 @@ const queryOverall = async (payload?: RequestProps) => {
   isLoading.value = false;
 
   dataSource.value = data.map((d) => ({
-    name: d.name,
     dealRate: d.dealRate * 100,
     customerDeal: d.customerDeal,
-    customertotal: d.customertotal
+    customertotal: d.customertotal,
+    name: form.type === 1 ? d.name : d.departmentName
   }));
 
   // @ts-ignore
@@ -85,7 +85,7 @@ const queryOverall = async (payload?: RequestProps) => {
   chartOptions.dataset.dimensions = ['name', '成交客户数', '新增客户数'];
   // @ts-ignore
   chartOptions.dataset.source = data.map((d) => ({
-    name: d.name,
+    name: form.type === 1 ? d.name : d.departmentName,
     ['成交客户数']: d.customerDeal,
     ['新增客户数']: d.customertotal
   }));
@@ -93,12 +93,13 @@ const queryOverall = async (payload?: RequestProps) => {
 };
 
 const queryConversion = async (payload?: RequestProps) => {
+  console.log(payload, '--------');
   isLoading.value = true;
   const { data = [] } = await getConversionData(payload);
   isLoading.value = false;
 
   dataSource.value = data.map((d) => ({
-    name: d.name,
+    name: form.type === 1 ? d.name : d.departmentName,
     dealRate: d.dealRate * 100
   }));
 
@@ -108,19 +109,18 @@ const queryConversion = async (payload?: RequestProps) => {
   chartOptions.dataset.dimensions = ['name', '客户转化率(%)'];
   // @ts-ignore
   chartOptions.dataset.source = data.map((d) => ({
-    name: d.name,
+    name: form.type === 1 ? d.name : d.departmentName,
     ['客户转化率(%)']: d.dealRate * 100
   }));
   chartOptions.legend = undefined;
 };
 
 watchEffect(() => {
-  dataType.value === 0 ? queryOverall() : queryConversion();
+  dataType.value === 0 ? queryOverall({ exportType: 1 }) : queryConversion({ exportType: 1 });
 });
 
 watchEffect(async () => {
-  const { data = [] } =
-    form.type === 1 ? await getStaffData() : await getDepartmentData();
+  const { data = [] } = form.type === 1 ? await getStaffData() : await getDepartmentData();
 
   memberOptions.value = data.map((d) => ({
     name: form.type === 1 ? d.name : d.departmentName,
@@ -144,11 +144,7 @@ watchEffect(async () => {
           </el-select>
         </el-form-item>
         <el-form-item class="w-28">
-          <el-select
-            clearable
-            v-model="form.type"
-            @change="form.member = undefined"
-          >
+          <el-select v-model="form.type" @change="form.member = undefined">
             <el-option label="按部门" :value="0" />
             <el-option label="按员工" :value="1" />
           </el-select>
@@ -168,13 +164,12 @@ watchEffect(async () => {
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-button
-            type="primary"
-            :loading="isLoading"
-            @click="onSubmit(false)"
-            >搜索</el-button
-          >
-          <el-button type="primary" @click="onSubmit(true)">导出</el-button>
+          <!-- :loading="isLoading" -->
+
+          <div class="flex gap-1">
+            <el-button type="primary" @click="onSubmit(false)">搜索</el-button>
+            <el-button type="primary" @click="onSubmit(true)">导出</el-button>
+          </div>
         </el-form-item>
       </el-form>
 
@@ -185,7 +180,7 @@ watchEffect(async () => {
           () => {
             form.date = undefined;
             form.member = undefined;
-            form.type = undefined;
+            form.type = 1;
             dataSource = [];
           }
         "
@@ -198,12 +193,8 @@ watchEffect(async () => {
       <Echarts :option="chartOptions"></Echarts>
     </div>
     <el-table :data="dataSource">
-      <el-table-column prop="name" label="员工姓名" />
-      <el-table-column
-        prop="dealRate"
-        label="客户转化率(%)"
-        v-if="dataType === 1"
-      />
+      <el-table-column prop="name" label="名称" />
+      <el-table-column prop="dealRate" label="客户转化率(%)" v-if="dataType === 1" />
       <template v-else>
         <el-table-column prop="customertotal" label="新增客户数" />
         <el-table-column prop="customerDeal" label="成交客户数" />