Просмотр исходного кода

机构评分和当日订单排序

张田田 1 месяц назад
Родитель
Сommit
9df58dba30
3 измененных файлов с 32 добавлено и 5 удалено
  1. 2 0
      src/model/order.model.ts
  2. 28 4
      src/order/DispatchOrderPanel.vue
  3. 2 1
      src/request/api/order.api.ts

+ 2 - 0
src/model/order.model.ts

@@ -44,6 +44,7 @@ export interface OrderModel {
   types: string[];//订单类型 1-未派单 2-已派单但未核销 3-已核销	
   types: string[];//订单类型 1-未派单 2-已派单但未核销 3-已核销	
   pieTimeStart: string;//派单时间开始
   pieTimeStart: string;//派单时间开始
   pieTimeEnd: string;//派单时间结束
   pieTimeEnd: string;//派单时间结束
+  orderByType:number;
 }
 }
 export type OrderQuery = Partial<OrderModel>;
 export type OrderQuery = Partial<OrderModel>;
 //派单机构列表
 //派单机构列表
@@ -65,6 +66,7 @@ export interface OrderLiaisonListModel {
       deptName: string; //调理方案供应商合作机构名称
       deptName: string; //调理方案供应商合作机构名称
     }
     }
   ]; //合作机构
   ]; //合作机构
+
   onlineCPTypes: string[]; //可供应的实体商品类型
   onlineCPTypes: string[]; //可供应的实体商品类型
   offlineCPTypes: string[]; //	可供应的线下服务类型
   offlineCPTypes: string[]; //	可供应的线下服务类型
   outlineCPTypes: string[]; //可供应的线上权益类型
   outlineCPTypes: string[]; //可供应的线上权益类型

+ 28 - 4
src/order/DispatchOrderPanel.vue

@@ -144,11 +144,17 @@ function isOrderShipped(order: OrderModel): boolean {
 
 
 // 右侧机构表格配置
 // 右侧机构表格配置
 const gridRef = ref<VxeGridInstance<Institution>>();
 const gridRef = ref<VxeGridInstance<Institution>>();
+// 机构列表排序:1-评分升序 2-评分降序 3-订单数升序 4-订单数降序
+const institutionOrderByType = ref<number | undefined>(undefined);
 const gridOptions = reactive<VxeGridProps<Institution>>({
 const gridOptions = reactive<VxeGridProps<Institution>>({
   border: true,
   border: true,
   autoResize: true,
   autoResize: true,
   height: '100%',
   height: '100%',
   scrollY: { enabled: true },
   scrollY: { enabled: true },
+  sortConfig: {
+    remote: true,
+    orders: ['asc', 'desc'],
+  },
   columns: [
   columns: [
     {
     {
       field: 'action',
       field: 'action',
@@ -173,8 +179,8 @@ const gridOptions = reactive<VxeGridProps<Institution>>({
     { field: 'name', title: '机构名称' },
     { field: 'name', title: '机构名称' },
     { field: 'detailAddress', title: '地址' },
     { field: 'detailAddress', title: '地址' },
     { field: 'phone', title: '联系电话' },
     { field: 'phone', title: '联系电话' },
-    { field: 'todayOrderQuantity', title: '当日订单数' },
-    { field: 'evaluateScore', title: '机构评分' },
+    { field: 'todayOrderQuantity', title: '当日订单数', sortable: true, sortType: 'number' },
+    { field: 'evaluateScore', title: '机构评分', sortable: true, sortType: 'number' },
   ],
   ],
   data: [],
   data: [],
   pagerConfig: {
   pagerConfig: {
@@ -182,6 +188,18 @@ const gridOptions = reactive<VxeGridProps<Institution>>({
   },
   },
 });
 });
 
 
+function mapInstitutionSortToOrderByType(field: string | undefined, order: string | undefined | null) {
+  if (!field || !order) return undefined;
+  if (field === 'evaluateScore') return order === 'asc' ? 1 : 2;
+  if (field === 'todayOrderQuantity') return order === 'asc' ? 3 : 4;
+  return undefined;
+}
+
+async function handleInstitutionSortChange({ field, order }: { field?: string; order?: 'asc' | 'desc' | null }) {
+  institutionOrderByType.value = mapInstitutionSortToOrderByType(field, order);
+  await loadInstitutionList();
+}
+
 // 初始化
 // 初始化
 onMounted(async () => {
 onMounted(async () => {
   await loadOrderCounts();
   await loadOrderCounts();
@@ -462,7 +480,8 @@ async function loadInstitutionList() {
         ? { timeStart: `${selectedOrder.arrangeDate} ${selectedOrder.arrangeTime}` }
         ? { timeStart: `${selectedOrder.arrangeDate} ${selectedOrder.arrangeTime}` }
         : {}),
         : {}),
       // 线下服务 type=2,实体商品 type=1
       // 线下服务 type=2,实体商品 type=1
-      type: props.orderType === 'offline' ? 2 : 1
+      type: props.orderType === 'offline' ? 2 : 1,
+      orderByType: institutionOrderByType.value,
     };
     };
 
 
     // 获取可派单机构列表
     // 获取可派单机构列表
@@ -1224,7 +1243,12 @@ defineExpose({
       <div class="institution-panel">
       <div class="institution-panel">
         <div class="panel-title">可派单机构</div>
         <div class="panel-title">可派单机构</div>
         <div class="institution-grid-wrapper">
         <div class="institution-grid-wrapper">
-          <vxe-grid ref="gridRef" v-bind="gridOptions" :loading="institutionLoading" />
+          <vxe-grid
+            ref="gridRef"
+            v-bind="gridOptions"
+            :loading="institutionLoading"
+            @sort-change="handleInstitutionSortChange"
+          />
         </div>
         </div>
       </div>
       </div>
     </div>
     </div>

+ 2 - 1
src/request/api/order.api.ts

@@ -86,7 +86,8 @@ export function getOrderLiaisonListMethod(data: Partial<OrderModel>) {
       collaborateDeptId: data.institutionId,
       collaborateDeptId: data.institutionId,
       conditioningProgramTypes: [data.conditioningProgramType],
       conditioningProgramTypes: [data.conditioningProgramType],
       timeStart: data?.timeStart ?? '',
       timeStart: data?.timeStart ?? '',
-      type: data?.type ?? ''
+      type: data?.type ?? '',
+      orderByType:data.orderByType
     },
     },
     {
     {
       hitSource: /order$/, // 匹配失效源
       hitSource: /order$/, // 匹配失效源