Browse Source

feat(system): 优化时间查询功能

- 在 API 用户、核销记录和订单页面中,将单个时间选择器替换为时间范围选择器
- 新增开始时间和结束时间字段,以支持时间范围查询
- 更新查询逻辑,以处理新的时间范围参数
- 在相关类型定义中添加新的时间范围字段
fugui001 4 months ago
parent
commit
4497b1a2c3

+ 9 - 1
src/api/system/business/apiUsers/types.ts

@@ -361,11 +361,19 @@ export interface UserQuery extends PageQuery {
    * 上一次登录ip
    */
   lastLoginIp?: string;
-
+  beginTime?: string;
+  endTime?: string;
   /**
    * 日期范围参数
    */
   params?: any;
+  loginTimeRange?: string;
+  loginBeginTime?: string;
+  loginEndTime?: string;
+
+  registerTimeRange?: string;
+  registerBeginTime?: string;
+  registerEndTime?: string;
 }
 export interface GrantForm extends BaseEntity {
   itemId?: number;

+ 5 - 0
src/api/system/business/checkRecord/types.ts

@@ -80,6 +80,8 @@ export interface CheckRecordForm extends BaseEntity {
    * 创建人名称
    */
   createUserName?: string;
+  beginTime?: string;
+  endTime?: string;
 }
 
 export interface CheckRecordQuery extends PageQuery {
@@ -127,6 +129,9 @@ export interface CheckRecordQuery extends PageQuery {
    * 用户名 手机号
    */
   userIds?: string;
+  loginTimeRange?: string;
+  beginTime?: string;
+  endTime?: string;
 }
 
 export interface UserItemVO {

+ 4 - 0
src/api/system/business/order/types.ts

@@ -292,4 +292,8 @@ export interface OrderQuery extends PageQuery {
    * 手机号 或者 用户名
    */
   userIds?: string;
+
+  loginTimeRange?: string;
+  beginTime?: string;
+  endTime?: string;
 }

+ 33 - 7
src/views/system/business/apiUsers/index.vue

@@ -12,21 +12,31 @@
               <el-input v-model="queryParams.phone" placeholder="请输入手机号" clearable @keyup.enter="handleQuery" />
             </el-form-item>
 
-            <el-form-item label="注册时间" prop="createAt">
-              <el-date-picker clearable v-model="queryParams.createAt" type="date" value-format="YYYY-MM-DD HH:MM:SS" placeholder="请选择创建时间" />
+            <el-form-item label="注册时间">
+              <el-date-picker
+                v-model="data.queryParams.registerTimeRange"
+                type="datetimerange"
+                range-separator="至"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                format="YYYY-MM-DD HH:mm:ss"
+              />
             </el-form-item>
 
-            <el-form-item label="登录时间" prop="lastLoginTime">
+            <el-form-item label="登录时间">
               <el-date-picker
-                clearable
-                v-model="queryParams.lastLoginTime"
-                type="datetime"
+                v-model="data.queryParams.loginTimeRange"
+                type="datetimerange"
+                range-separator="至"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
                 value-format="YYYY-MM-DD HH:mm:ss"
-                placeholder="请选择上一次登录时间"
                 format="YYYY-MM-DD HH:mm:ss"
               />
             </el-form-item>
 
+
             <el-form-item>
               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
               <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -387,6 +397,22 @@ const reset = () => {
 /** 搜索按钮操作 */
 const handleQuery = () => {
   queryParams.value.pageNum = 1;
+  const timeRange = data.queryParams.loginTimeRange;
+  if (timeRange && timeRange.length === 2) {
+    data.queryParams.loginBeginTime = timeRange[0];
+    data.queryParams.loginEndTime = timeRange[1];
+  } else {
+    data.queryParams.loginBeginTime = null;
+    data.queryParams.loginEndTime = null;
+  }
+  const timeRange2 = data.queryParams.registerTimeRange;
+  if (timeRange2 && timeRange2.length === 2) {
+    data.queryParams.registerBeginTime = timeRange2[0];
+    data.queryParams.registerEndTime = timeRange2[1];
+  } else {
+    data.queryParams.registerBeginTime = null;
+    data.queryParams.registerEndTime = null;
+  }
   getList();
 };
 

+ 18 - 2
src/views/system/business/checkRecord/index.vue

@@ -54,8 +54,16 @@
                 <el-form-item label="" prop="userId">
                   <el-input v-model="data.queryParams.userIds" placeholder="请输入用户名/手机号" clearable @keyup.enter="handleQuery" />
                 </el-form-item>
-                <el-form-item label="核销时间" prop="createdAt">
-                  <el-date-picker clearable v-model="data.queryParams.createdAt" type="date" value-format="YYYY-MM-DD" placeholder="请选择创建时间" />
+                <el-form-item label="核销时间">
+                  <el-date-picker
+                    v-model="data.queryParams.loginTimeRange"
+                    type="datetimerange"
+                    range-separator="至"
+                    start-placeholder="开始时间"
+                    end-placeholder="结束时间"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    format="YYYY-MM-DD HH:mm:ss"
+                  />
                 </el-form-item>
                 <el-form-item>
                   <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -187,6 +195,14 @@ const reset = () => {
 /** 搜索按钮操作 */
 const handleQuery = () => {
   queryParams.value.pageNum = 1;
+  const timeRange = data.queryParams.loginTimeRange;
+  if (timeRange && timeRange.length === 2) {
+    data.queryParams.beginTime = timeRange[0];
+    data.queryParams.endTime = timeRange[1];
+  } else {
+    data.queryParams.beginTime = null;
+    data.queryParams.endTime = null;
+  }
   getList();
 };
 

+ 19 - 2
src/views/system/business/order/index.vue

@@ -16,8 +16,16 @@
             <!--            <el-form-item label="支付宝交易号" prop="tradeNo">
               <el-input v-model="queryParams.tradeNo" placeholder="请输入支付宝交易号" clearable @keyup.enter="handleQuery" />
             </el-form-item>-->
-            <el-form-item label="支付时间" prop="payTime">
-              <el-date-picker clearable v-model="queryParams.payTime" type="date" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择支付时间" />
+            <el-form-item label="支付时间">
+              <el-date-picker
+                v-model="data.queryParams.loginTimeRange"
+                type="datetimerange"
+                range-separator="至"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                format="YYYY-MM-DD HH:mm:ss"
+              />
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -78,6 +86,7 @@
             <span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
           </template>
         </el-table-column>
+
         <!--        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
@@ -255,6 +264,14 @@ const reset = () => {
 /** 搜索按钮操作 */
 const handleQuery = () => {
   queryParams.value.pageNum = 1;
+  const timeRange = data.queryParams.loginTimeRange;
+  if (timeRange && timeRange.length === 2) {
+    data.queryParams.beginTime = timeRange[0];
+    data.queryParams.endTime = timeRange[1];
+  } else {
+    data.queryParams.beginTime = null;
+    data.queryParams.endTime = null;
+  }
   getList();
 };