Procházet zdrojové kódy

新增管理后台页面站点用户、分账记录

zuypeng před 1 rokem
rodič
revize
c05f64ab80

+ 1 - 1
admin-web/src/components/form/ExtDLabel.vue

@@ -170,7 +170,7 @@ const setupLabel = ()=>{
 
     if (dict) {
       state.text = dict.name||dict.label;
-      state.style = setupColorStyle(state.colorList[dict.value.length%8]);
+      state.style = setupColorStyle(state.colorList[dict.value%8||dict.value.length%8]);
     }else{
       return "-"
     }

+ 1 - 5
admin-web/src/components/form/ExtQueryForm.vue

@@ -150,13 +150,9 @@
       </el-form>
 
 
-      <el-row class="flex-warp mt5">
+      <el-row class="flex-warp">
         <div>
-          <el-button-group>
-
-
             <slot name="extraLeft"></slot>
-          </el-button-group>
         </div>
         <div class="flex flex-auto" style="justify-content: flex-end">
           <slot name="extraRight"></slot>

+ 2 - 1
admin-web/src/components/form/ExtSelect.vue

@@ -134,7 +134,8 @@ const loadData = () => {
         }else{
           dataList = list
         }
-        state.list = dataList.map((k: any) => {
+        console.log(list,props.dataKey)
+        state.list = dataList?.map((k: any) => {
           return {value: k[props.valueKey], label: k[props.labelKey]}
         })
         //console.log(state.list)

+ 33 - 63
admin-web/src/router/route.ts

@@ -102,28 +102,13 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     // perm:'admin'
                 }
             },
-            // {
-            //     path: '/kanban',
-            //     name: 'adminKanban',
-            //     component: () => import('/@/views/admin/kanban/index.vue'),
-            //     meta: {
-            //         title: '数据看板',
-            //         isLink: '',
-            //         isHide: false,
-            //         isKeepAlive: true,
-            //         isAffix: false,
-            //         isIframe: false,
-            //         icon: 'ele-PictureRounded',
-            //         perm:"kanban.list",
-            //     }
-            // },
             {
                 path: '/station',
                 name: 'adminStation',
                 component: () => import('/@/layout/routerView/parent.vue'),
                 redirect: '/station/list',
                 meta: {
-                    title: '洗车站',
+                    title: '站点管理',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,
@@ -138,7 +123,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                         name: 'adminStationList',
                         component: () => import('/@/views/admin/station/list/index.vue'),
                         meta: {
-                            title: '点清单',
+                            title: '点清单',
                             isLink: '',
                             isHide: false,
                             isKeepAlive: true,
@@ -153,7 +138,22 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                         name: 'adminStationDevice',
                         component: () => import('/@/views/admin/station/device/index.vue'),
                         meta: {
-                            title: '洗车机',
+                            title: '设备清单',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            perm:"equipment.list",
+                            icon: 'ele-User',
+                        },
+                    },
+                    {
+                        path: '/station/account',
+                        name: 'adminStationAccount',
+                        component: () => import('/@/views/admin/station/account/index.vue'),
+                        meta: {
+                            title: '站点用户',
                             isLink: '',
                             isHide: false,
                             isKeepAlive: true,
@@ -163,53 +163,8 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             icon: 'ele-User',
                         },
                     },
-                    // {
-                    //     path: '/station/statMonth',
-                    //     name: 'adminStationStatMonth',
-                    //     component: () => import('/@/views/admin/station/stat/index.vue'),
-                    //     meta: {
-                    //         title: '站点月表',
-                    //         isLink: '',
-                    //         isHide: false,
-                    //         isKeepAlive: true,
-                    //         isAffix: false,
-                    //         isIframe: false,
-                    //         perm:"stationStatMonth.list",
-                    //         icon: 'ele-Histogram',
-                    //     },
-                    // },
-                    // {
-                    //     path: '/station/statement',
-                    //     name: 'adminStatement',
-                    //     component: () => import('/@/views/admin/station/statment/index.vue'),
-                    //     meta: {
-                    //         title: '对账单',
-                    //         isLink: '',
-                    //         isHide: false,
-                    //         isKeepAlive: true,
-                    //         isAffix: false,
-                    //         isIframe: false,
-                    //         perm:"statement.list",
-                    //         icon: 'ele-CreditCard',
-                    //     },
-                    // },
                 ]
             },
-            // {
-            //     path: '/investor',
-            //     name: 'adminInvestor',
-            //     component: () => import('/@/views/admin/investor/index.vue'),
-            //     meta: {
-            //         title: '投资者/物业',
-            //         isLink: '',
-            //         isHide: false,
-            //         isKeepAlive: true,
-            //         isAffix: false,
-            //         isIframe: false,
-            //         icon: 'ele-Avatar',
-            //         perm:"investor.list",
-            //     }
-            // },
             {
                 path: '/banner',
                 name: 'adminBanner',
@@ -270,6 +225,21 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     perm:"recharge.list",
                 },
             },
+            {
+                path: '/financeSR',
+                name: 'adminSplitRecord',
+                component: () => import('/@/views/admin/finance/splitRecord.vue'),
+                meta: {
+                    title: '分账记录',
+                    isLink: '',
+                    isHide: false,
+                    isKeepAlive: true,
+                    isAffix: false,
+                    isIframe: false,
+                    icon: 'ele-Wallet',
+                    perm:"recharge.list",
+                },
+            },
             {
                 path: '/org',
                 name: 'adminOrg',

+ 1 - 0
admin-web/src/views/admin/finance/index.vue

@@ -117,6 +117,7 @@
       </el-table>
 
       <ext-page class="page-pager" v-model:value="state.pageQuery" @change="loadData(false)"/>
+
     </el-card>
   </div>
 </template>

+ 271 - 0
admin-web/src/views/admin/finance/splitRecord.vue

@@ -0,0 +1,271 @@
+<style scoped lang="scss">
+.system-container {
+
+  :deep(.el-card__body) {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    flex: 1;
+    overflow: auto;
+
+    .el-table {
+      flex: 1;
+    }
+
+  }
+}
+
+.page-content {
+  margin-bottom: 20px;
+}
+
+.page-pager {
+  background-color: #fff;
+  height: 24px;
+}
+</style>
+<template>
+  <div class="system-container layout-padding">
+    <el-card shadow="hover" class="layout-padding-auto">
+
+      <el-form
+          :model="state.formQuery"
+          ref="queryRef"
+          size="default" label-width="0px" class="mt5 mb5">
+        <ext-select
+            v-model="state.formQuery.fromStationId"
+            placeholder="入账站点"
+            url="washStation/list"
+            url-method="post"
+            label-key="stationName"
+            value-key="stationId"
+            data-key="list"
+            clearable
+            class="wd200 ml10">
+        </ext-select>
+
+        <ext-select
+            v-model="state.formQuery.toStationId"
+            placeholder="出账站点"
+            url="washStation/list"
+            url-method="post"
+            label-key="stationName"
+            value-key="stationId"
+            data-key="list"
+            clearable
+            class="wd200 ml10">
+        </ext-select>
+
+        <el-input
+            v-model="state.formQuery.tradeNo"
+            placeholder="交易流水号"
+            clearable
+            @blur="loadData(true)"
+            class="wd200 ml10">
+        </el-input>
+
+        <ext-d-select
+            v-model="state.formQuery.type"
+            placeholder="分账类型"
+            type="SplitRecord.type"
+            clearable
+            @on-change="loadData(true)"
+            class="wd200 ml10"/>
+
+        <el-button class="ml10" plain size="default" type="success" @click="loadData(true)">
+          <SvgIcon name="ele-Search"/>
+          查询
+        </el-button>
+      </el-form>
+
+      <el-table
+          border
+          stripe="stripe"
+          :height="state.tableData.height"
+          highlight-current-row
+          current-row-key="id"
+          row-key="id"
+          @on-row-click="handleRowClick('view',$event)"
+          :data="state.tableData.data"
+          v-loading="state.tableData.loading">
+        <template #empty>
+          <el-empty></el-empty>
+        </template>
+        <el-table-column
+            v-for="field in state.columns"
+            :key="field.prop"
+            :type="field.type"
+            :label="field.label"
+            :column-key="field.prop"
+            :width="field.width"
+            :min-width="field.minWidth"
+            :fixed="field.fixed"
+            :sortable="field.sortable"
+            :show-overflow-tooltip="!field.fixed&&field.width>150">
+
+          <template #default="{row}">
+            <template v-if="field.type==='expand'">
+              <div class="order-detail">
+                <el-table
+                    border
+                    :data="row.detail"
+                    stripe="stripe">
+                  <el-table-column width="120" label="服务项目" prop="name"></el-table-column>
+                </el-table>
+              </div>
+            </template>
+            <template v-else-if="field.prop==='status'">
+              <ext-d-label type="SplitRecord.status" :model-value="row[field.prop]"/>
+            </template>
+            <template v-else-if="field.prop==='type'">
+              <ext-d-label type="SplitRecord.type" :model-value="row[field.prop]"/>
+            </template>
+            <template v-else-if="['prepayMoney','amount','amountReceivable','amountReceived','cardBalance','coinMoney','discountAmount','discountMoney'].includes(field.prop)">
+              {{ u.fmt.fmtMoney(row[field.prop]) }}
+            </template>
+            <template v-else-if="field.prop==='idleRemainTime'||field.prop==='operationRemainTime'">
+              {{ u.fmt.fmtDuration(row[field.prop]) }}
+            </template>
+            <template v-else-if="['createTime','udpateTime'].includes(field.prop)">
+              {{ u.fmt.fmtDateTime(row[field.prop]) }}
+            </template>
+            <template v-else>
+              <div>{{ row[field.prop] }}</div>
+            </template>
+
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <ext-page class="page-pager" v-model:value="state.pageQuery" @change="loadData(false)"/>
+    </el-card>
+  </div>
+</template>
+
+<script setup lang="ts" name="adminSplitRecord">
+import {defineAsyncComponent, reactive, onMounted, onBeforeMount, ref, getCurrentInstance, nextTick, onBeforeUnmount} from 'vue';
+import {$body, $get} from "/@/utils/request";
+import u from '/@/utils/u'
+import {Msg} from "/@/utils/message";
+import {Session} from "/@/utils/storage";
+
+const {proxy}: any = getCurrentInstance();
+
+import ExtPage from '/@/components/form/ExtPage.vue'
+import ExtQueryForm from "/@/components/form/ExtQueryForm.vue";
+import ExtTable from "/@/components/form/ExtTable.vue";
+
+import mittBus from '/@/utils/mitt';
+
+import {ElButton} from 'element-plus'
+import ExtSelect from "/@/components/form/ExtSelect.vue";
+import ExtDSelect from "/@/components/form/ExtDSelect.vue";
+import ExtDLabel from "/@/components/form/ExtDLabel.vue";
+
+
+
+//定义引用
+const queryRef = ref();
+
+//定义变量
+const state = reactive({
+  formQuery: {},
+  pageQuery: {
+    pageNum: 1,
+    pageSize: 10,
+    total: 0
+  },
+  tableData: {
+    height: 500,
+    data: [] as Array<any>,
+    loading: false
+  },
+  importConfig: {},
+  exportConfig: {},
+  columns: [
+    // {type: 'selection', width: 60, align: 'center', fixed: 'left'},
+    {label: '入账站点ID', width: 180, prop: 'toStationId', query: true, type: 'text', resizable: true, fixed: 'left'},
+    {label: '出账站点ID', width: 180, prop: 'fromStationId', query: true, type: 'text', resizable: true, fixed: 'left'},
+    {label: '状态', prop: 'status', sortable: 'custom', align: 'center', query: true, width: 120, conf: {dict: 'SplitRecord.status'}},
+    {label: '分账交易金额(分)', width: 180, prop: 'amount', query: true, type: '', resizable: true},
+    {label: '分账交易流水号', width: 280, prop: 'tradeNo', query: true, type: 'text', resizable: true},
+    {label: '交易类型', width: 180, prop: 'type', query: true, type: '', resizable: true},
+    {label: '创建时间', width: 180, prop: 'createTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
+    {label: '更新时间', width: 180, prop: 'updateTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
+  ],
+})
+
+
+// 监听双向绑定 modelValue 的变化
+// watch(
+//         () => state.pageIndex,
+//         () => {
+//
+//         }
+// );
+
+//生命周期钩子
+onBeforeMount(() => {
+
+})
+
+onMounted(() => {
+  loadData();
+
+  nextTick(() => {
+    let bodyHeight = document.body.clientHeight;
+    let queryHeight = queryRef.value.$el.clientHeight;
+    state.tableData.height = bodyHeight - queryHeight - 320
+  })
+
+  mittBus.on("splitRecord.refresh", () => {
+    loadData();
+  })
+});
+
+onBeforeUnmount(() => {
+  mittBus.off("splitRecord.refresh")
+})
+
+
+//region 方法区
+// 初始化表格数据
+const loadData = (refresh: boolean = false) => {
+  if (refresh) {
+    state.pageQuery.pageIndex = 1;
+  }
+  state.tableData.loading = true;
+  $body(`/finance/splitRecords`, {...state.formQuery, ...state.pageQuery}).then((res: any) => {
+    let {list, total} = res;
+    state.tableData.data = list;
+    state.pageQuery.total = total;
+    state.tableData.loading = false;
+  }).catch(e => {
+    console.error(e)
+    state.tableData.loading = false;
+  })
+};
+
+// 打开详情页弹窗
+const handleRowClick = (type: string, row: any) => {
+  // splitRecordDialogRef.value.open(type, row);
+};
+// 删除点击
+const handleRowDelete = (row: any) => {
+  Msg.confirm(`此操作将永久删除:『${row.name}』,是否继续?`).then(() => {
+    $get(`/splitRecord/delete/${row.id}`).then(() => {
+      Msg.message("删除成功", 'success')
+    }).catch(() => {
+      Msg.message("删除失败", 'error')
+    })
+  });
+};
+
+//endregion
+
+
+// 暴露变量
+// defineExpose({
+//     loadData,
+// });
+</script>

+ 257 - 0
admin-web/src/views/admin/station/account/index.vue

@@ -0,0 +1,257 @@
+<style scoped lang="scss">
+.system-container {
+
+  :deep(.el-card__body) {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    flex: 1;
+    overflow: auto;
+
+    .el-table {
+      flex: 1;
+    }
+
+  }
+}
+
+.page-content {
+  margin-bottom: 20px;
+}
+
+.page-pager {
+  background-color: #fff;
+  height: 24px;
+}
+</style>
+<template>
+  <div class="system-container layout-padding">
+    <el-card shadow="hover" class="layout-padding-auto">
+      <el-form
+          :model="state.formQuery"
+          ref="queryRef"
+          size="default" label-width="0px" class="mt5 mb5">
+        <ext-select
+            v-model="state.formQuery.stationId"
+            placeholder="站点"
+            url="washStation/list"
+            url-method="post"
+            label-key="stationName"
+            value-key="stationId"
+            data-key="list"
+            clearable
+            class="wd200 ml10"/>
+
+        <el-button class="ml10" plain size="default" type="success" @click="loadData(true)">
+          <SvgIcon name="ele-Search"/>
+          查询
+        </el-button>
+      </el-form>
+
+      <el-table
+          border
+          stripe="stripe"
+          :height="state.tableData.height"
+          highlight-current-row
+          current-row-key="id"
+          row-key="id"
+          @on-row-click="handleRowClick('view',$event)"
+          :data="state.tableData.data"
+          v-loading="state.tableData.loading">
+        <template #empty>
+          <el-empty></el-empty>
+        </template>
+        <el-table-column
+            v-for="field in state.columns"
+            :key="field.prop"
+            :type="field.type"
+            :label="field.label"
+            :column-key="field.prop"
+            :width="field.width"
+            :min-width="field.minWidth"
+            :fixed="field.fixed"
+            :sortable="field.sortable"
+            :show-overflow-tooltip="!field.fixed&&field.width>150">
+
+          <template #default="{row}">
+            <template v-if="field.type==='expand'">
+              <div class="order-detail">
+                <el-table
+                    border
+                    :data="row.detail"
+                    stripe="stripe">
+                  <el-table-column width="120" label="服务项目" prop="name"></el-table-column>
+                </el-table>
+              </div>
+            </template>
+            <template v-else-if="field.prop==='type'">
+              <ext-d-label type="Object.type" :model-value="row[field.prop]"></ext-d-label>
+            </template>
+            <template v-else-if="['prepayMoney','amount','amountReceivable','amountReceived','cardBalance','coinMoney','discountAmount','discountMoney'].includes(field.prop)">
+              {{ u.fmt.fmtMoney(row[field.prop]) }}
+            </template>
+            <template v-else-if="field.prop==='idleRemainTime'||field.prop==='operationRemainTime'">
+              {{ u.fmt.fmtDuration(row[field.prop]) }}
+            </template>
+            <template v-else-if="['createTime','udpateTime'].includes(field.prop)">
+              {{ u.fmt.fmtDateTime(row[field.prop]) }}
+            </template>
+            <template v-else>
+              <div>{{ row[field.prop] }}</div>
+            </template>
+
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <ext-page class="page-pager" v-model:value="state.pageQuery" @change="loadData(false)"/>
+    </el-card>
+  </div>
+</template>
+
+<script setup lang="ts" name="adminStationAccount">
+import {defineAsyncComponent, reactive, onMounted, onBeforeMount, ref, getCurrentInstance,nextTick,onBeforeUnmount} from 'vue';
+import {$body,$get} from "/@/utils/request";
+import u from '/@/utils/u'
+import {Msg} from "/@/utils/message";
+
+const {proxy}: any = getCurrentInstance();
+
+import ExtPage from '/@/components/form/ExtPage.vue'
+import ExtQueryForm from "/@/components/form/ExtQueryForm.vue";
+
+import mittBus from '/@/utils/mitt';
+
+import {ElButton} from 'element-plus'
+import ExtSelect from "/@/components/form/ExtSelect.vue";
+
+
+
+//定义引用
+const queryRef = ref();
+
+//定义变量
+const state = reactive({
+  formQuery: {},
+  pageQuery: {
+    pageNum: 1,
+    pageSize: 10,
+    total: 0
+  },
+  tableData: {
+    height:500,
+    data: [] as Array < any >,
+    loading: false
+  },
+  importConfig: {},
+  exportConfig: {},
+  columns: [
+    // {type: 'selection', width: 60, align: 'center', fixed: 'left'},
+    {label: '站点id', width: 180,prop: 'stationId', query: true, type: 'text', resizable: true},
+    {label: '总余额(分)', width: 180,prop: 'balance', query: true, type: '', resizable: true},
+    {label: '冻结金额(分)', width: 180,prop: 'frozenAmount', query: true, type: '', resizable: true},
+    {label: '创建时间', width: 180,prop: 'createTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
+    {label: '更新时间', width: 180,prop: 'updateTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
+    // {                label: '操作', prop: 'action', type: 'render', width: 180, align: 'center', fixed: 'right',
+    //   render: (h: any, row: any) => {
+    //     return (
+    //         h('div', null, [
+    //           proxy.$auth('stationAccount.modify') ?
+    //               h(ElButton, {
+    //                 type: 'warning',
+    //                 text: true,
+    //                 size: 'small',
+    //                 onClick: () => {
+    //                   handleRowClick('edit', row)
+    //                 }
+    //               }, () => '编辑') : '',
+    //           proxy.$auth('stationAccount.remove') ?
+    //               h(ElButton, {
+    //                 type: 'danger',
+    //                 text: true,
+    //                 size: 'small',
+    //                 onClick: () => {
+    //                   handleRowDelete(row)
+    //                 }
+    //               }, () => '删除') : '',
+    //         ])
+    //     )
+    //   }
+    // }
+  ],
+})
+
+
+// 监听双向绑定 modelValue 的变化
+// watch(
+//         () => state.pageIndex,
+//         () => {
+//
+//         }
+// );
+
+//生命周期钩子
+onBeforeMount(() => {
+
+})
+
+onMounted(() => {
+  loadData();
+
+  nextTick(()=>{
+    let bodyHeight = document.body.clientHeight;
+    let queryHeight = queryRef.value.$el.clientHeight;
+    state.tableData.height = bodyHeight - queryHeight - 320
+  })
+
+  mittBus.on("stationAccount.refresh",()=>{
+    loadData();
+  })
+});
+
+onBeforeUnmount(()=>{
+  mittBus.off("stationAccount.refresh")
+})
+
+
+//region 方法区
+// 初始化表格数据
+const loadData = (refresh: boolean = false) => {
+  if (refresh) {
+    state.pageQuery.pageIndex = 1;
+  }
+  state.tableData.loading = true;
+  $body(`/finance/stationAccounts`, {...state.formQuery, ...state.pageQuery}).then((res: any) => {
+    let {list, count} = res;
+    state.tableData.data = list;
+    state.pageQuery.total = count;
+    state.tableData.loading = false;
+  }).catch(e => {
+    console.error(e)
+    state.tableData.loading = false;
+  })
+};
+
+// 打开详情页弹窗
+const handleRowClick = (type: string, row: any) => {
+  // stationAccountDialogRef.value.open(type, row);
+};
+// 删除点击
+const handleRowDelete = (row: any) => {
+  Msg.confirm(`此操作将永久删除:『${row.name}』,是否继续?`).then(() => {
+    $get(`/stationAccount/delete/${row.id}`).then(() => {
+      Msg.message("删除成功", 'success')
+    }).catch(() => {
+      Msg.message("删除失败", 'error')
+    })
+  });
+};
+
+//endregion
+
+
+// 暴露变量
+// defineExpose({
+//     loadData,
+// });
+</script>

+ 17 - 1
admin-web/src/views/admin/user/dialog.vue

@@ -79,7 +79,7 @@
           </el-input>
         </el-form-item>
 
-        <el-card header="角色">
+        <el-card header="角色" shadow="hover" >
           <el-checkbox-group
               v-model="state.checkRoleIdList"
               @change="handleCheckedRoleChange"
@@ -87,6 +87,21 @@
             <el-checkbox v-for="role in state.roleList" :key="role.id" :label="role.id">{{ role.roleName }}</el-checkbox>
           </el-checkbox-group>
         </el-card>
+
+
+        <el-card header="管理站点" class="mt10"  shadow="hover" >
+          <ext-select
+              v-model="state.ruleForm.stationIdList"
+              multiple
+              placeholder="选择站点"
+              url="washStation/list"
+              url-method="post"
+              label-key="stationName"
+              value-key="stationId"
+              data-key="list"
+              clearable
+              class="w100 ml10"/>
+        </el-card>
       </el-form>
 
       <template #footer>
@@ -107,6 +122,7 @@ import u from '/@/utils/u'
 import type {FormInstance, FormRules} from 'element-plus';
 import ExtDSelect from "/@/components/form/ExtDSelect.vue";
 import ExtUpload from "/@/components/form/ExtUpload.vue";
+import ExtSelect from "/@/components/form/ExtSelect.vue";
 
 // 引入组件
 

+ 3 - 2
car-wash-service/src/main/java/com/kym/service/impl/SplitRecordServiceImpl.java

@@ -27,12 +27,13 @@ public class SplitRecordServiceImpl extends MyBaseServiceImpl<SplitRecordMapper,
     public PageBean<SplitRecord> listSplitRecords(SplitRecordQueryParams params) {
         // 站点数据权限
         var adminStationIds = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong());
-        if (CommUtil.isEmptyOrNull(params.getStationId()) && KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()) != null) {
+        if (CommUtil.isEmptyOrNull(params.getStationId()) &&
+                CommUtil.isNotEmptyAndNull(KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()))) {
             params.setStationId(adminStationIds.get(0));
         }
         PageHelper.startPage(params.getPageNum(), params.getPageSize());
         var res = lambdaQuery()
-                .eq(CommUtil.isNotEmptyAndNull(params.getTradeNo()), SplitRecord::getTradeNo, params.getTradeNo())
+                .like(CommUtil.isNotEmptyAndNull(params.getTradeNo()), SplitRecord::getTradeNo, params.getTradeNo())
                 .eq(CommUtil.isNotEmptyAndNull(params.getType()), SplitRecord::getType, params.getType())
                 .eq(CommUtil.isNotEmptyAndNull(params.getStationId()), SplitRecord::getFromStationId, params.getStationId())
                 .or()