Эх сурвалжийг харах

数据报表-人员数据-渠道数据 电销数据列表详情接口对接

祁鹏飞 1 сар өмнө
parent
commit
c7c3dbd8f9

+ 76 - 42
src/views/consoleManage/personDataManage/channelPersonData/channelPersonDataDetail.vue

@@ -1,33 +1,33 @@
 <template>
   <div class="log">
     <PageMain class="vh100">
-    <div class='btn-box'>
-      <el-button type="primary" plain class='query-btn'
-        @click='dialogShow'>{{selectedKeys.length?`已选${selectedKeys.length}项`:'筛选条件'}}</el-button>
-      <div class='query-btn'>
-        <DowButton @endAnim='downloadFile'></DowButton>
+      <div class='btn-box'>
+        <el-button type="primary" plain class='query-btn'
+          @click='dialogShow'>{{ selectedKeys.length ? `已选${selectedKeys.length}项` : '筛选条件' }}</el-button>
+        <div class='query-btn'>
+          <DowButton @endAnim='downloadFile'></DowButton>
+        </div>
       </div>
-    </div>
-    <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
+      <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
 
-    <!-- 表格 -->
-    <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
-      :columnwidth="120" :pageInfo="pageInfo" @getList="getList" :showOperation='false'>
-      <template v-slot:search="scope">
-        <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
-          @update:sort="handleSortUpdate"></Sort>
-      </template>
-    </ComplexTable>
+      <!-- 表格 -->
+      <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
+        :columnwidth="120" :pageInfo="pageInfo" @getList="getList" :showOperation='false'>
+        <template v-slot:search="scope">
+          <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
+            @update:sort="handleSortUpdate"></Sort>
+        </template>
+      </ComplexTable>
 
-    <FilterDialog :show='isShow' @close='isShow=false' @sure='filterSure' ref='filterDialogRef' @selectedKeys='selected'
-      routerKey='routerKey'>
-    </FilterDialog>
+      <FilterDialog :show='isShow' @close='isShow = false' @sure='filterSure' ref='filterDialogRef'
+        @selectedKeys='selected' routerKey='routerKey'>
+      </FilterDialog>
     </PageMain>
   </div>
 </template>
 
 <script setup lang="ts">
-import { useRouter } from "vue-router";
+import { useRoute } from "vue-router";
 import api from "@/api";
 import QueryForm from "../../components/queryForm.vue";
 import FilterDialog from "../../components/filterDialog.vue";
@@ -37,7 +37,7 @@ import useUserStore from "@/store/modules/message";
 import PageInfo from "@/api/types/agreementTypes";
 import { ElMessage } from "element-plus";
 
-const router = useRouter();
+const route = useRoute();
 const userStore = useUserStore();
 const isShow = ref(false);
 
@@ -49,18 +49,18 @@ const pageInfo = ref({
   total: 0,
 });
 const listOption = reactive({
-  rowKey: "channelPersonDelId",
+  rowKey: "salesmanReportDetId",
   //查询
   queryFormFields: [],
   // 表格列
   columns: [
     {
-      prop: "salesmanName",
+      prop: "name",
       label: "业务员",
-      width: "100",
+      width: "120",
     },
     {
-      prop: "salesmanPhone",
+      prop: "mobile",
       label: "手机号",
       width: "120",
     },
@@ -70,7 +70,7 @@ const listOption = reactive({
       width: "120",
     },
     {
-      prop: "partnerCompanyName",
+      prop: "partnerCompany",
       label: "合作保险公司",
       width: "300",
     },
@@ -85,24 +85,24 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "orderTypeName",
+      prop: "entryStatus",
       label: "订单类型",
       width: "180",
     },
     {
-      prop: "riskName",
+      prop: "productName",
       label: "险种",
       width: "180",
     },
     {
-      prop: "sumPremium",
+      prop: "premium",
       label: "保费",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "orderCommissionPremium",
+      prop: "commission",
       label: "出单佣金",
       width: "180",
       align: "right",
@@ -114,15 +114,15 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "recordTime",
+      prop: "signTime",
       label: "签单时间",
       width: "180",
     },
-    {
-      prop: "manegerName",
-      label: "管理人",
-      width: "180",
-    },
+    // {
+    //   prop: "manegerName",
+    //   label: "管理人",
+    //   width: "180",
+    // },
   ],
 });
 
@@ -139,20 +139,46 @@ const queryFormRes = ref();
 const routerKey = ref("channelPersonDataDetail");
 const defaultList = ref();
 const pageHiddenList = ref([]); //页面不显示的数据
+const isFilterFrom = ref(); //主页面查询条件且在过滤中不存在
+
 const initDefaultList = async () => {
   const { data } = await api.manageApi.getSearchDefaultList({
     routerKey: routerKey.value,
     userId: phone,
   });
-  listOption.queryFormFields = data.filter((e) => e.showFlag);
 
-  pageHiddenList.value = data.filter((e) => !e.showFlag);
-  defaultList.value = data.map((e) => e.id);
+  const queryParamsMap = route.query;
+  const processedData = data.map((item) => {
+    if (queryParamsMap.hasOwnProperty(item.key)) {
+      let defaultValue = queryParamsMap[item.key]
+      return { ...item, defaultValue };
+    }
+    return item;
+  });
+
+  let filterFrom = {};
+  processedData.map((item) => {
+    filterFrom[item.key] = item.defaultValue;
+  });
+  isFilterFrom.value = getUniqueProperties(queryParamsMap, filterFrom);
+
+  listOption.queryFormFields = processedData.filter((e) => e.showFlag);
+  pageHiddenList.value = processedData.filter((e) => !e.showFlag);
+  defaultList.value = processedData.map((e) => e.id);
   selectedKeys.value = defaultList.value;
   queryFormRes.value = queryFormRef.value?.initDefaultSaveForm();
   queryList();
 };
 
+const getUniqueProperties = (obj1, obj2) => {
+  const uniqueProps = {};
+  Object.keys(obj1).forEach((key) => {
+    if (!(key in obj2) || obj2[key] == undefined) {
+      uniqueProps[key] = obj1[key];
+    }
+  });
+  return uniqueProps;
+};
 //删除
 const filterDialogRef = ref();
 const delSelect = (id) => {
@@ -216,16 +242,19 @@ const query = (item) => {
 //数据查询
 const tableData = ref([]);
 const queryList = async () => {
-  let query = { ...queryFormRes.value };
-  const { data } = await api.manageApi.channelPersonDataDetailPageList({
+  let query = { ...queryFormRes.value, ...isFilterFrom.value };
+  const { data } = await api.manageApi.salesmanReportDetailPageList({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
   });
   tableData.value = data.records;
   pageInfo.value.pageNum = data.current;
@@ -242,16 +271,19 @@ function getList(item: PageInfo) {
 
 //导出
 const downloadFile = async () => {
-  let query = { ...queryFormRes.value };
-  const { data, msg } = await api.manageApi.channelPersonDataDetailToTask({
+  let query = { ...queryFormRes.value, ...isFilterFrom.value };
+  const { data, msg } = await api.manageApi.salesmanReportDetailToTask({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
   });
   ElMessage({
     message: msg,
@@ -270,6 +302,7 @@ onMounted(() => {
   .query-btn {
     margin-left: 20px;
   }
+
   .btn-box {
     padding-bottom: 15px;
     margin-bottom: 24px;
@@ -278,6 +311,7 @@ onMounted(() => {
     justify-content: flex-end;
   }
 }
+
 :deep(.caret-wrapper) {
   display: none !important;
 }

+ 64 - 53
src/views/consoleManage/personDataManage/channelPersonData/index.vue

@@ -1,37 +1,37 @@
 <template>
   <div class="log">
     <PageMain class="vh100">
-    <div class='btn-box'>
-      <el-button type="primary" plain class='query-btn'
-        @click='dialogShow'>{{selectedKeys.length?`已选${selectedKeys.length}项`:'筛选条件'}}</el-button>
-      <div class='query-btn'>
-        <DowButton @endAnim='downloadFile'></DowButton>
+      <div class='btn-box'>
+        <el-button type="primary" plain class='query-btn'
+          @click='dialogShow'>{{ selectedKeys.length ? `已选${selectedKeys.length}项` : '筛选条件' }}</el-button>
+        <div class='query-btn'>
+          <DowButton @endAnim='downloadFile'></DowButton>
+        </div>
       </div>
-    </div>
-    <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
+      <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
 
-    <!-- 表格 -->
-    <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
-      :columnwidth="120" :pageInfo="pageInfo" @getList="getList">
-      <template v-slot:operation="scope">
-        <el-button type="primary" link @click='agreementEdit(scope.operationData.id)'>明细</el-button>
-      </template>
+      <!-- 表格 -->
+      <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
+        :columnwidth="120" :pageInfo="pageInfo" @getList="getList">
+        <template v-slot:operation="scope">
+          <el-button type="primary" link @click='agreementEdit(scope.operationData.mobile)'>明细</el-button>
+        </template>
 
-      <template v-slot:search="scope">
-        <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
-          @update:sort="handleSortUpdate"></Sort>
-      </template>
+        <template v-slot:search="scope">
+          <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
+            @update:sort="handleSortUpdate"></Sort>
+        </template>
 
-      <template #customSlot="{  bodyCell: { scope, column } }">
-        <template v-if="column.prop == 'underwriteOrderNum'">
-          {{ scope.row.underwriteOrderNum }} 笔
+        <template #customSlot="{ bodyCell: { scope, column } }">
+          <template v-if="column.prop == 'totalOrder'">
+            {{ scope.row.totalOrder }} 笔
+          </template>
         </template>
-      </template>
-    </ComplexTable>
+      </ComplexTable>
 
-    <FilterDialog :show='isShow' @close='isShow=false' @sure='filterSure' ref='filterDialogRef' @selectedKeys='selected'
-      routerKey='routerKey'>
-    </FilterDialog>
+      <FilterDialog :show='isShow' @close='isShow = false' @sure='filterSure' ref='filterDialogRef'
+        @selectedKeys='selected' routerKey='routerKey'>
+      </FilterDialog>
     </PageMain>
   </div>
 </template>
@@ -59,18 +59,18 @@ const pageInfo = ref({
   total: 0,
 });
 const listOption = reactive({
-  rowKey: "channelPersonId",
+  rowKey: "salesmanReportId",
   //查询
   queryFormFields: [],
   // 表格列
   columns: [
     {
-      prop: "salesmanName",
+      prop: "name",
       label: "姓名",
       width: "100",
     },
     {
-      prop: "salesmanPhone",
+      prop: "mobile",
       label: "手机号",
       width: "120",
     },
@@ -80,12 +80,12 @@ const listOption = reactive({
       width: "300",
     },
     {
-      prop: "areaName",
+      prop: "area",
       label: "所在地区",
       width: "180",
     },
     {
-      prop: "underwriteOrderNum",
+      prop: "totalOrder",
       label: "承保订单",
       width: "180",
       align: "right",
@@ -93,21 +93,21 @@ const listOption = reactive({
       component: "customSlot",
     },
     {
-      prop: "sumPremium",
+      prop: "totalAmount",
       label: "保费",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "orderCommissionPremium",
+      prop: "totalBrokerage",
       label: "出单佣金",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "avgOrderNumPremium",
+      prop: "averagePremium",
       label: "单均保费",
       width: "180",
       align: "right",
@@ -119,25 +119,25 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "lastRecordTime",
+      prop: "lastSigningTime",
       label: "上次签单",
       width: "180",
     },
-    {
-      prop: "manegerName",
-      label: "管理人",
-      width: "180",
-    },
-    {
-      prop: "personStatus",
-      label: "人员状态",
-      width: "180",
-    },
-    {
-      prop: "accountStatus",
-      label: "账号状态",
-      width: "180",
-    },
+    // {
+    //   prop: "manegrName",
+    //   label: "管理人",
+    //   width: "180",
+    // },
+    // {
+    //   prop: "personStatus",
+    //   label: "人员状态",
+    //   width: "180",
+    // },
+    // {
+    //   prop: "accountStatus",
+    //   label: "账号状态",
+    //   width: "180",
+    // },
   ],
 });
 
@@ -232,15 +232,19 @@ const query = (item) => {
 const tableData = ref([]);
 const queryList = async () => {
   let query = { ...queryFormRes.value };
-  const { data } = await api.manageApi.channelPersonDataPageList({
+  const { data } = await api.manageApi.salesmanReportPageList({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
+    salesmanTypes: ['7'],
   });
   tableData.value = data.records;
   pageInfo.value.pageNum = data.current;
@@ -258,15 +262,19 @@ function getList(item: PageInfo) {
 //导出
 const downloadFile = async () => {
   let query = { ...queryFormRes.value };
-  const { data, msg } = await api.manageApi.channelPersonDataToTask({
+  const { data, msg } = await api.manageApi.salesmanReportToTask({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
+    salesmanTypes: ['7'],
   });
   ElMessage({
     message: msg,
@@ -275,11 +283,12 @@ const downloadFile = async () => {
   userStore.count++;
 };
 
-const agreementEdit = (id) => {
+const agreementEdit = (mobile) => {
   router.push({
     name: "channelPersonDataDetail",
     query: {
-      id: id,
+      mobile: mobile,
+      ...queryFormRes.value
     },
   });
 };
@@ -294,6 +303,7 @@ onMounted(() => {
   .query-btn {
     margin-left: 20px;
   }
+
   .btn-box {
     padding-bottom: 15px;
     margin-bottom: 24px;
@@ -302,6 +312,7 @@ onMounted(() => {
     justify-content: flex-end;
   }
 }
+
 :deep(.caret-wrapper) {
   display: none !important;
 }

+ 64 - 53
src/views/consoleManage/personDataManage/telemarketingPersonData/index.vue

@@ -1,37 +1,37 @@
 <template>
   <div class="log">
     <PageMain class="vh100">
-    <div class='btn-box'>
-      <el-button type="primary" plain class='query-btn'
-        @click='dialogShow'>{{selectedKeys.length?`已选${selectedKeys.length}项`:'筛选条件'}}</el-button>
-      <div class='query-btn'>
-        <DowButton @endAnim='downloadFile'></DowButton>
+      <div class='btn-box'>
+        <el-button type="primary" plain class='query-btn'
+          @click='dialogShow'>{{ selectedKeys.length ? `已选${selectedKeys.length}项` : '筛选条件' }}</el-button>
+        <div class='query-btn'>
+          <DowButton @endAnim='downloadFile'></DowButton>
+        </div>
       </div>
-    </div>
-    <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
+      <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
 
-    <!-- 表格 -->
-    <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
-      :columnwidth="120" :pageInfo="pageInfo" @getList="getList">
-      <template v-slot:operation="scope">
-        <el-button type="primary" link @click='agreementEdit(scope.operationData.id)'>明细</el-button>
-      </template>
+      <!-- 表格 -->
+      <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
+        :columnwidth="120" :pageInfo="pageInfo" @getList="getList">
+        <template v-slot:operation="scope">
+          <el-button type="primary" link @click='agreementEdit(scope.operationData.mobile)'>明细</el-button>
+        </template>
 
-      <template v-slot:search="scope">
-        <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
-          @update:sort="handleSortUpdate"></Sort>
-      </template>
+        <template v-slot:search="scope">
+          <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
+            @update:sort="handleSortUpdate"></Sort>
+        </template>
 
-      <template #customSlot="{  bodyCell: { scope, column } }">
-       <template v-if="column.prop == 'underwriteOrderNum'">
-          {{ scope.row.underwriteOrderNum }} 笔
+        <template #customSlot="{ bodyCell: { scope, column } }">
+          <template v-if="column.prop == 'totalOrder'">
+            {{ scope.row.totalOrder }} 笔
+          </template>
         </template>
-      </template>
-    </ComplexTable>
+      </ComplexTable>
 
-    <FilterDialog :show='isShow' @close='isShow=false' @sure='filterSure' ref='filterDialogRef' @selectedKeys='selected'
-      routerKey='routerKey'>
-    </FilterDialog>
+      <FilterDialog :show='isShow' @close='isShow = false' @sure='filterSure' ref='filterDialogRef'
+        @selectedKeys='selected' routerKey='routerKey'>
+      </FilterDialog>
     </PageMain>
   </div>
 </template>
@@ -59,18 +59,18 @@ const pageInfo = ref({
   total: 0,
 });
 const listOption = reactive({
-  rowKey: "telemarketingId",
+  rowKey: "salesmanReportId",
   //查询
   queryFormFields: [],
   // 表格列
   columns: [
     {
-      prop: "salesmanName",
+      prop: "name",
       label: "姓名",
       width: "100",
     },
     {
-      prop: "salesmanPhone",
+      prop: "mobile",
       label: "手机号",
       width: "120",
     },
@@ -80,12 +80,12 @@ const listOption = reactive({
       width: "300",
     },
     {
-      prop: "areaName",
+      prop: "area",
       label: "所在地区",
       width: "180",
     },
     {
-      prop: "underwriteOrderNum",
+      prop: "totalOrder",
       label: "承保订单",
       width: "180",
       align: "right",
@@ -93,21 +93,21 @@ const listOption = reactive({
       component: "customSlot",
     },
     {
-      prop: "sumPremium",
+      prop: "totalAmount",
       label: "保费",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "orderCommissionPremium",
+      prop: "totalBrokerage",
       label: "出单佣金",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "avgOrderNumPremium",
+      prop: "averagePremium",
       label: "单均保费",
       width: "180",
       align: "right",
@@ -119,25 +119,25 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "lastRecordTime",
+      prop: "lastSigningTime",
       label: "上次签单",
       width: "180",
     },
-    {
-      prop: "manegerName",
-      label: "管理人",
-      width: "180",
-    },
-    {
-      prop: "personStatus",
-      label: "人员状态",
-      width: "180",
-    },
-    {
-      prop: "accountStatus",
-      label: "账号状态",
-      width: "180",
-    },
+    // {
+    //   prop: "manegrName",
+    //   label: "管理人",
+    //   width: "180",
+    // },
+    // {
+    //   prop: "personStatus",
+    //   label: "人员状态",
+    //   width: "180",
+    // },
+    // {
+    //   prop: "accountStatus",
+    //   label: "账号状态",
+    //   width: "180",
+    // },
   ],
 });
 
@@ -232,15 +232,19 @@ const query = (item) => {
 const tableData = ref([]);
 const queryList = async () => {
   let query = { ...queryFormRes.value };
-  const { data } = await api.manageApi.telemarketingPersonDataPageList({
+  const { data } = await api.manageApi.salesmanReportPageList({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
+    salesmanTypes: ['8'],
   });
   tableData.value = data.records;
   pageInfo.value.pageNum = data.current;
@@ -258,15 +262,19 @@ function getList(item: PageInfo) {
 //导出
 const downloadFile = async () => {
   let query = { ...queryFormRes.value };
-  const { data, msg } = await api.manageApi.telemarketingPersonDataToTask({
+  const { data, msg } = await api.manageApi.salesmanReportToTask({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
+    salesmanTypes: ['8'],
   });
   ElMessage({
     message: msg,
@@ -275,11 +283,12 @@ const downloadFile = async () => {
   userStore.count++;
 };
 
-const agreementEdit = (id) => {
+const agreementEdit = (mobile) => {
   router.push({
     name: "telemarketingPersonDataDetail",
     query: {
-      id: id,
+      mobile: mobile,
+      ...queryFormRes.value
     },
   });
 };
@@ -294,6 +303,7 @@ onMounted(() => {
   .query-btn {
     margin-left: 20px;
   }
+
   .btn-box {
     padding-bottom: 15px;
     margin-bottom: 24px;
@@ -302,6 +312,7 @@ onMounted(() => {
     justify-content: flex-end;
   }
 }
+
 :deep(.caret-wrapper) {
   display: none !important;
 }

+ 77 - 43
src/views/consoleManage/personDataManage/telemarketingPersonData/telemarketingPersonDataDetail.vue

@@ -1,33 +1,33 @@
 <template>
   <div class="log">
     <PageMain class="vh100">
-    <div class='btn-box'>
-      <el-button type="primary" plain class='query-btn'
-        @click='dialogShow'>{{selectedKeys.length?`已选${selectedKeys.length}项`:'筛选条件'}}</el-button>
-      <div class='query-btn'>
-        <DowButton @endAnim='downloadFile'></DowButton>
+      <div class='btn-box'>
+        <el-button type="primary" plain class='query-btn'
+          @click='dialogShow'>{{ selectedKeys.length ? `已选${selectedKeys.length}项` : '筛选条件' }}</el-button>
+        <div class='query-btn'>
+          <DowButton @endAnim='downloadFile'></DowButton>
+        </div>
       </div>
-    </div>
-    <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
+      <QueryForm :option="listOption" @query='query' @delSelect='delSelect' ref='queryFormRef'></QueryForm>
 
-    <!-- 表格 -->
-    <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
-      :columnwidth="120" :pageInfo="pageInfo" @getList="getList" :showOperation='false'>
-      <template v-slot:search="scope">
-        <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
-          @update:sort="handleSortUpdate"></Sort>
-      </template>
-    </ComplexTable>
+      <!-- 表格 -->
+      <ComplexTable :tableData="tableData" :showSelect='false' :columns="listOption.columns" :showIndex="false"
+        :columnwidth="120" :pageInfo="pageInfo" @getList="getList" :showOperation='false'>
+        <template v-slot:search="scope">
+          <Sort :scope="scope.slotData" :globalSortKey="globalSortKey" :globalSortOrder="globalSortOrder"
+            @update:sort="handleSortUpdate"></Sort>
+        </template>
+      </ComplexTable>
 
-    <FilterDialog :show='isShow' @close='isShow=false' @sure='filterSure' ref='filterDialogRef' @selectedKeys='selected'
-      routerKey='routerKey'>
-    </FilterDialog>
+      <FilterDialog :show='isShow' @close='isShow = false' @sure='filterSure' ref='filterDialogRef'
+        @selectedKeys='selected' routerKey='routerKey'>
+      </FilterDialog>
     </PageMain>
   </div>
 </template>
 
 <script setup lang="ts">
-import { useRouter } from "vue-router";
+import { useRoute } from "vue-router";
 import api from "@/api";
 import QueryForm from "../../components/queryForm.vue";
 import FilterDialog from "../../components/filterDialog.vue";
@@ -37,7 +37,7 @@ import useUserStore from "@/store/modules/message";
 import PageInfo from "@/api/types/agreementTypes";
 import { ElMessage } from "element-plus";
 
-const router = useRouter();
+const route = useRoute();
 const userStore = useUserStore();
 const isShow = ref(false);
 
@@ -49,18 +49,18 @@ const pageInfo = ref({
   total: 0,
 });
 const listOption = reactive({
-  rowKey: "telemarketingDelId",
+  rowKey: "salesmanReportDetId",
   //查询
   queryFormFields: [],
   // 表格列
-   columns: [
+  columns: [
     {
-      prop: "salesmanName",
+      prop: "name",
       label: "业务员",
-      width: "100",
+      width: "120",
     },
     {
-      prop: "salesmanPhone",
+      prop: "mobile",
       label: "手机号",
       width: "120",
     },
@@ -70,7 +70,7 @@ const listOption = reactive({
       width: "120",
     },
     {
-      prop: "partnerCompanyName",
+      prop: "partnerCompany",
       label: "合作保险公司",
       width: "300",
     },
@@ -85,24 +85,24 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "orderTypeName",
+      prop: "entryStatus",
       label: "订单类型",
       width: "180",
     },
     {
-      prop: "riskName",
+      prop: "productName",
       label: "险种",
       width: "180",
     },
     {
-      prop: "sumPremium",
+      prop: "premium",
       label: "保费",
       width: "180",
       align: "right",
       sortable: true,
     },
     {
-      prop: "orderCommissionPremium",
+      prop: "commission",
       label: "出单佣金",
       width: "180",
       align: "right",
@@ -114,15 +114,15 @@ const listOption = reactive({
       width: "180",
     },
     {
-      prop: "recordTime",
+      prop: "signTime",
       label: "签单时间",
       width: "180",
     },
-    {
-      prop: "manegerName",
-      label: "管理人",
-      width: "180",
-    },
+    // {
+    //   prop: "manegerName",
+    //   label: "管理人",
+    //   width: "180",
+    // },
   ],
 });
 
@@ -139,20 +139,46 @@ const queryFormRes = ref();
 const routerKey = ref("telemarketingPersonDataDetail");
 const defaultList = ref();
 const pageHiddenList = ref([]); //页面不显示的数据
+const isFilterFrom = ref(); //主页面查询条件且在过滤中不存在
+
 const initDefaultList = async () => {
   const { data } = await api.manageApi.getSearchDefaultList({
     routerKey: routerKey.value,
     userId: phone,
   });
-  listOption.queryFormFields = data.filter((e) => e.showFlag);
 
-  pageHiddenList.value = data.filter((e) => !e.showFlag);
-  defaultList.value = data.map((e) => e.id);
+  const queryParamsMap = route.query;
+  const processedData = data.map((item) => {
+    if (queryParamsMap.hasOwnProperty(item.key)) {
+      let defaultValue = queryParamsMap[item.key]
+      return { ...item, defaultValue };
+    }
+    return item;
+  });
+
+  let filterFrom = {};
+  processedData.map((item) => {
+    filterFrom[item.key] = item.defaultValue;
+  });
+  isFilterFrom.value = getUniqueProperties(queryParamsMap, filterFrom);
+
+  listOption.queryFormFields = processedData.filter((e) => e.showFlag);
+  pageHiddenList.value = processedData.filter((e) => !e.showFlag);
+  defaultList.value = processedData.map((e) => e.id);
   selectedKeys.value = defaultList.value;
   queryFormRes.value = queryFormRef.value?.initDefaultSaveForm();
   queryList();
 };
 
+const getUniqueProperties = (obj1, obj2) => {
+  const uniqueProps = {};
+  Object.keys(obj1).forEach((key) => {
+    if (!(key in obj2) || obj2[key] == undefined) {
+      uniqueProps[key] = obj1[key];
+    }
+  });
+  return uniqueProps;
+};
 //删除
 const filterDialogRef = ref();
 const delSelect = (id) => {
@@ -216,16 +242,19 @@ const query = (item) => {
 //数据查询
 const tableData = ref([]);
 const queryList = async () => {
-  let query = { ...queryFormRes.value };
-  const { data } = await api.manageApi.telemarketingPersonDataDetailPageList({
+  let query = { ...queryFormRes.value, ...isFilterFrom.value };
+  const { data } = await api.manageApi.salesmanReportDetailPageList({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
   });
   tableData.value = data.records;
   pageInfo.value.pageNum = data.current;
@@ -242,16 +271,19 @@ function getList(item: PageInfo) {
 
 //导出
 const downloadFile = async () => {
-  let query = { ...queryFormRes.value };
-  const { data, msg } = await api.manageApi.telemarketingPersonDataDetailToTask({
+  let query = { ...queryFormRes.value, ...isFilterFrom.value };
+  const { data, msg } = await api.manageApi.salesmanReportDetailToTask({
     pageNo: pageInfo.value.pageNum,
     pageSize: pageInfo.value.pageSize,
     routerKey: routerKey.value,
+    systemCode: localStorage.getItem('login_system'),
     userId: phone,
     orderType: globalSortKey.value
       ? globalSortKey.value + " " + globalSortOrder.value
       : "",
     ...query,
+    signTimeBegin: query.signTime[0] ?? '',
+    signTimeEnd: query.signTime[1] ?? '',
   });
   ElMessage({
     message: msg,
@@ -270,6 +302,7 @@ onMounted(() => {
   .query-btn {
     margin-left: 20px;
   }
+
   .btn-box {
     padding-bottom: 15px;
     margin-bottom: 24px;
@@ -278,6 +311,7 @@ onMounted(() => {
     justify-content: flex-end;
   }
 }
+
 :deep(.caret-wrapper) {
   display: none !important;
 }