Переглянути джерело

feat:订单页面和油站信息页的完善

huang, kai (Contractor) 3 місяців тому
батько
коміт
8dc0736df7

+ 0 - 0
src/FccWeb/admin.ui.plus-master/@/theme/tableStyle.scss


+ 4 - 2
src/FccWeb/admin.ui.plus-master/package-lock.json

@@ -16,7 +16,7 @@
         "@types/date-fns": "^2.6.0",
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^5.1.12",
-        "axios": "^1.4.0",
+        "axios": "^1.8.1",
         "clipboard": "^2.0.11",
         "countup.js": "^2.6.2",
         "cropperjs": "^1.5.13",
@@ -1367,7 +1367,9 @@
       "license": "MIT"
     },
     "node_modules/axios": {
-      "version": "1.7.7",
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz",
+      "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
       "license": "MIT",
       "dependencies": {
         "follow-redirects": "^1.15.6",

+ 1 - 1
src/FccWeb/admin.ui.plus-master/package.json

@@ -19,7 +19,7 @@
     "@types/date-fns": "^2.6.0",
     "@wangeditor/editor": "^5.1.23",
     "@wangeditor/editor-for-vue": "^5.1.12",
-    "axios": "^1.4.0",
+    "axios": "^1.8.1",
     "clipboard": "^2.0.11",
     "countup.js": "^2.6.2",
     "cropperjs": "^1.5.13",

+ 8 - 1
src/FccWeb/admin.ui.plus-master/src/api/api.ts

@@ -139,5 +139,12 @@ export const getOrderInfoPage = (data:any) => {
 	})
 }
 
-
+// 列表信息筛选
+export const getOrderFilter =(data:any)=>{
+	return request({
+		url:'/qrFueling/config/getOrderFilter',
+		method:'get',
+		params:data,
+	})
+}
 

+ 2 - 2
src/FccWeb/admin.ui.plus-master/src/views/admin/components/editOilGun.vue

@@ -26,11 +26,11 @@
                         <el-input v-model="dataList.nozzleNum" placeholder="请输入油枪号" clearable />
                     </el-form-item>
                 </el-col>
-                <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                <!-- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                     <el-form-item label="连接FCC端口" prop="port">
                         <el-input v-model="dataList.port" placeholder="请输入主板连接FCC端口" clearable />
                     </el-form-item>
-                </el-col>
+                </el-col> -->
             </el-row>
         </el-form>
         <el-row justify="end" class="submit-button">

+ 7 - 6
src/FccWeb/admin.ui.plus-master/src/views/admin/components/oilcanDetail.vue

@@ -9,7 +9,7 @@
             <Loading />
             </el-icon>
         </div>
-        <el-row v-for="(item, index) in TableData" :key="index" style="margin-bottom: 10px;height: 150px;">
+        <el-row v-for="(item, index) in TableData" :key="index" style="margin-bottom: 10px;height: 100%;">
             <el-col :span="6">
                 <el-card style="height: 100%;display: flex;align-items: center;">
                     <el-row>
@@ -30,16 +30,16 @@
                                     icon="ele-Edit" @click.stop="editStation(item.id)"> 编辑 </el-link>
                                 <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
                                     icon="ele-Delete" @click.stop="deleteDevice(item.id)">删除</el-link>
-                                <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
+                                <!-- <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
                                     icon="ele-Plus"
-                                    @click.stop="editOilGun({ 'flag': 0, 'id': item.id, 'number': item.number })">油枪</el-link>
+                                    @click.stop="editOilGun({ 'flag': 0, 'id': item.id, 'number': item.number })">油枪</el-link> -->
                             </div>
                         </el-col>
                     </el-row>
                 </el-card>
             </el-col>
             <el-col :span="18" style="width: 100%;height: 100%;background-color: #ebebeb;">
-                <el-row>
+                <el-row style="display: flex;flex-wrap: wrap;">
                     <el-col :span="7" v-for="itemm in item.associatedNozzles" :key="itemm"
                         style="text-align: center;padding: 10px;background-color: #fff; margin: 10px; border-radius: 5px; display: flex;align-items: center;">
                         <img :src="url" style="width: 30px;height:30px;">
@@ -49,9 +49,9 @@
                         </div>
                         <div style="margin-left: 1em;">
                             <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
-                                icon="ele-Edit"
+                                icon="ele-Search"
                                 @click.stop="editOilGun({ 'flag': 1, 'number': item.number, 'nozzleId': itemm.nozzleId })">
-                                编辑
+                                查看
                             </el-link>
                             <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
                                 icon="ele-Delete" @click.stop="deleteOilGun(itemm.nozzleId)">删除</el-link>
@@ -189,4 +189,5 @@ defineExpose({
   font-size: 24px; /* 设置加载图标大小 */
   color: #409eff; /* 设置加载图标颜色 */
 }
+
 </style>

+ 195 - 74
src/FccWeb/admin.ui.plus-master/src/views/admin/order/index.vue

@@ -1,45 +1,45 @@
 <template>
     <div class="layout-pd">
+        <!-- 操作 -->
         <el-row>
-            <!--操作-->
             <el-col :xs="24">
                 <el-card class="mt8" shadow="hover">
                     <el-form :model="Data.Filter" @submit.stop.prevent>
                         <el-form-item prop="name" style="width: 100%">
                             <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                                 <el-form-item label="油枪">
-                                    <el-input v-model="Data.Filter.nozzleNum" placeholder="请输入油枪"
-                                        clearable></el-input>
+                                    <el-input v-model="Data.Filter.nozzleNum" placeholder="请输入油枪" clearable></el-input>
                                 </el-form-item>
                             </el-col>
                             <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                                 <el-form-item label="油品">
-                                    <el-input v-model="Data.Filter.oilName" placeholder="请输入油品" clearable></el-input>
-                                </el-form-item>
-                            </el-col>
-                            <!-- <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
-                                <el-form-item label="状态">
-                                    <el-select v-model="Data.Filter.StationName" placeholder="请选择状态">
-                                        <el-option v-for="(value, key) in selectList.Online" :key="key" :label="value"
-                                            :value="value" />
-                                    </el-select>
+                                    <el-input v-model="Data.Filter.oilName" placeholder="请输入集合编号" clearable></el-input>
                                 </el-form-item>
                             </el-col>
                             <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                                 <el-form-item label="支付方式">
-                                    <el-select v-model="Data.Filter.onlineStatus" placeholder="请选择支付方式">
-                                        <el-option v-for="(value, key) in selectList.Online" :key="key" :label="value"
-                                            :value="value" />
+                                    <el-select v-model="Data.selectedPayment" placeholder="请选择支付方式">
+                                 <el-option v-for="payment in Data.paymentOptions" :key="payment.id" :label="payment.paymentName" :value="payment.id + ''" />
+                                </el-select>
+                                </el-form-item>
+                            </el-col> 
+                            <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                                <el-form-item label="油站">
+                                    <el-select v-model="Data.Filter.StationName" placeholder="全部">
+                                        <el-option v-for="(value, key) in selectList.station" :key="key" :label="value" :value="value" />
                                     </el-select>
                                 </el-form-item>
-                            </el-col> -->
+                            </el-col> 
                             <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                                 <el-form-item label="加油时间">
-                                    <el-date-picker v-model="Data.time1" type="datetimerange"
-                                        value-format="YYYY-MM-DD HH:mm:ss" range-separator="To"
-                                        start-placeholder="Start date" end-placeholder="End date" />
+                                    <el-date-picker v-model="Data.time1" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss" range-separator="To" start-placeholder="开始日期" end-placeholder="结束日期" />
                                 </el-form-item>
-                            </el-col>
+                            </el-col>   
+                            <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                                <el-form-item label="支付用户">
+                                    <el-input v-model="Data.Filter.phoneNumberOruserName" placeholder="请输入用户名称和手机号" clearable></el-input>
+                                </el-form-item>
+                            </el-col> 
                         </el-form-item>
                     </el-form>
 
@@ -61,32 +61,44 @@
                         row-key="id" style="width: 100%">
                         <el-table-column v-for="column in Data.dynamicColumns" :key="column.prop" :prop="column.prop"
                             :label="column.label" />
-                        <!-- 操作 -->
+                        <!-- 操作
                         <el-table-column label="操作" fixed="right" align="center" header-align="center"
                             class="right-operation" width="140">
                             <template #default="scope">
                                 <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
                                     icon="ele-Tickets" @click.stop="toView(scope.row.id)">查看</el-link>
                             </template>
-                        </el-table-column>
+                        </el-table-column> -->
                     </el-table>
+                    <!-- 暂无数据提示 -->
+                    <div v-if="currentPageData.length === 0 &&!Data.loading"></div>
+                    <!-- 页码 -->
                     <div class="my-flex my-flex-end" style="margin-top: 20px">
-                        <el-pagination v-model:currentPage="Data.pageInput.page"
-                            v-model:page-size="Data.pageInput.pageSize" :total="Data.total"
-                            :page-sizes="[5, 10, 20, 50, 100]" small background @size-change="onSizeChange"
-                            @current-change="onCurrentChange" layout="total, sizes, prev, pager, next, jumper" />
+                        <el-pagination 
+                            v-model:currentPage="Data.pageInput.page"
+                            v-model:page-size="Data.pageInput.pageSize" 
+                            :total="Data.total"
+                            :default-page-size="10" 
+                            :page-sizes="[10,20,50,100]" 
+                            small 
+                            background 
+                            @size-change="onSizeChange" 
+                            @current-change="onCurrentChange" 
+                            :page-count="pageCount"
+                            layout="total, sizes, prev, pager, next, jumper" 
+                        />
                     </div>
                 </el-card>
             </el-col>
         </el-row>
     </div>
-
 </template>
 
 <script setup lang="ts" name="partsManagement/oilGun">
-import { onMounted, reactive, watch } from "vue";
-import { getOrderInfoPage } from "/@/api/api";
+import { onMounted, reactive, watch, computed } from "vue";
+import { getOrderInfoPage,getOrderFilter } from "/@/api/api";
 import { OrderInfoFilter } from "/@/api/admin/orderDto/QRBookDto";
+import { nextTick } from 'vue';
 
 /**页面对象 */
 const Data = reactive({
@@ -99,96 +111,157 @@ const Data = reactive({
         nozzleNum: null,
         /**油品 */
         oilName: null,
-        // /**支付方式 */
-        // CompanyName: "",
-        // /**状态 */
-        // onlineStatus: "",
+        /**支付方式 */
+        onlineStatus: null,
         /**加油开始的时间 */
         startCheckTime: null,
         /**加油结束的时间 */
         endCheckTime: null,
+        /**油站 */
+        StationName: null,
+        // 支付方式类型
+        paymentType:null,
+        // 用户手机号码or用户名称
+        phoneNumberOruserName:null
     } as OrderInfoFilter,
     /**表格信息 */
     tableModel: [],
     /**动态表头 */
     dynamicColumns: [
         { prop: 'ttc', label: '流水号' },
+        { prop: 'stationName', label: '油站' }, 
+        { prop: 'machineName', label: '油机号' },
         { prop: 'nozzleAndOil', label: '油枪|油品' },
         { prop: 'priceAndVolume', label: '单价|升数' },
         { prop: 'amount', label: '金额' },
-        { prop: 'endTime', label: '挂枪时间' },
-        // { prop: 'fuelId', label: '支付状态' },
-    ],
+        { prop: 'paymentTime', label: '挂枪时间' },
+        { prop: 'endTime', label: '交易时间' },
+        { prop: 'paymentName', label: '支付方式' },
+        { prop: 'fuelId', label: '支付状态' },
+        { prop: 'phoneNumber', label: '支付用户' } 
+    ], 
     /**分页总数 */
     total: 0,
     /**分页标识 */
     pageInput: {
         page: 1,
         pageSize: 10,
-    },
+    },  
+  selectedPayment:'', //储存ID
+  paymentOptions:[] //储存支付方式
 })
 
 /** 选择框列表 */
 const selectList = reactive({
     Online: ["在线", "离线"],
-    Device: [
+    Device: [   
         "启用",
         "备案",
         "维修",
         "出厂注册"],
-    Level: [1, 2, 3, 4, 5]
-})
+    Level: [1, 2, 3, 4, 5],
+    station:[
+        '全部'
+    ]
+})  
+
+// 计算当前页的数据
+const currentPageData = computed(() => {
+    console.log('Data.tableModel', Data.tableModel); // 添加调试语句,查看数据是否正确更新
+    const start = (Data.pageInput.page - 1) * Data.pageInput.pageSize;
+    const end = start + Data.pageInput.pageSize;
+    return Data.tableModel.slice(start, end);
+});
+
+// 计算显示的页码数量
+const pageCount = computed(() => {
+    const totalPages = Math.ceil(Data.total / Data.pageInput.pageSize);
+    return totalPages < 5? 5 : totalPages;
+});
 
 /** 查询订单 */
-const onQuery = (async () => {
+const onQuery = async () => {
     Data.loading = true;
+    try {
+        let filterParams = {
+            page: Data.pageInput.page,
+            pageSize: Data.pageInput.pageSize,
+           ...Data.Filter
+        };
+        // 根据选中的支付方式设置筛选参数
+        if (Data.selectedPayment && Data.selectedPayment!== '0') {
+            filterParams.paymentType = parseInt(Data.selectedPayment);
+        } else {
+            // 如果选择“全部”,不传递paymentType参数
+            filterParams.paymentType = null; 
+        }
+    
+        // if(Data.Filter.payUserName=order.userName||order.phoneNumber){
+        //     filterParams.phoneNumberOruserName = Data.Filter.payUserName
+        // }
+
+        const orders = await getOrderInfoPage(filterParams);
+        console.log('后端返回的原始数据:', orders);
+        console.log('后端返回的总记录数:', orders.total);
+        console.log('后端返回的当前页数据列表长度:', orders.list.length);
+
+        Data.total = orders.total;
+        Data.tableModel = orders.list.map(order => {
+            return {
+               'stationName': order.stationName,
+                'ttc': order.ttc,
+                'nozzleAndOil': order.nozzleNum + "|" + order.oilName,
+                'priceAndVolume': order.price + "|" + order.volume + 'L',
+                'amount': order.amount,
+                'paymentTime': order.authorizationTime,
+                'endTime': order.endTime,
+                'fuelId': order.paymentStatus === 0? "未支付" : order.paymentStatus === 1? "已支付" : "未知状态",
+                'phoneNumber': order.userName,
+                'paymentName': order.payType === 1? "微信支付" : order.payType === 2? "支付宝" : "未知状态",
+                "machineName": order.machineName
+            };
+        });
+        console.log('处理后的数据列表长度:', Data.tableModel.length);
+    } catch (error) {
+        console.error('查询订单数据时出错:', error);
+    } finally {
+        Data.loading = false;
+        await nextTick();
+    }
+};
+
 
-    var orders = await getOrderInfoPage({
-        ...Data.pageInput,
-        ...Data.Filter
-    });
-    console.log(orders)
-    Data.total = orders.total;
-    Data.tableModel =  orders.list.map(order => {
-         return {
-            'ttc': order.ttc,
-            'nozzleAndOil': order.nozzleNum + "|" + order.oilName,
-            'priceAndVolume': order.price + "|" + order.volume,
-            'amount': order.amount,
-            'endTime': order.endTime,
-         }
-    })
-
-    Data.loading = false;
-})
 
 /** 重置查询条件 */
 const onReset = () => {
     Data.Filter = {
-        /**油枪号 */
         nozzleNum: null,
-        /**油品 */
         oilName: null,
-        // /**支付方式 */
-        // CompanyName: "",
-        // /**状态 */
-        // onlineStatus: "",
-        /**加油开始的时间 */
+        onlineStatus: null,
         startCheckTime: null,
-        /**加油结束的时间 */
         endCheckTime: null,
-    }
-    Data.time1 = ""
-}
+        StationName: null,
+        payUserName: null,
+        paymentType: null,
+        phoneNumberOruseName: null
+    };
+    Data.time1 = "";
+    // 重置时选择“全部”
+    Data.selectedPayment = '0'; 
+    onQuery();
+};
 
 /** 页数修改 */
 const onSizeChange = (pageSize) => {
-    Data.pageInput.pageSize = pageSize
+    Data.pageInput.pageSize = pageSize;
+    Data.pageInput.page = 1; 
+    onQuery();
 }
 
 /** 页码修改 */
 const onCurrentChange = (page) => {
-    Data.pageInput.page = page
+    Data.pageInput.page = page;
+    onQuery();
 }
 
 /** 操作 */
@@ -198,8 +271,21 @@ const toView = ((data: any) => {
 
 // 挂载时
 onMounted(async () => {
-    await onQuery()
-})
+    const response = await getOrderFilter();
+    console.log("支付方式请求结果", response);
+    // 确保response.payments是一个数组
+    if (Array.isArray(response.payments)) {
+        const allOption = { id: 0, paymentName: '全部' };
+        Data.paymentOptions = [allOption, ...response.payments];
+    } else {
+        console.error("支付方式数据格式错误,response.payments不是一个数组");
+        Data.paymentOptions = [allOption];
+    }
+    console.log('支付方式筛选:', Data.paymentOptions);
+    // 初始化选择“全部”
+    Data.selectedPayment = '0'; 
+    await onQuery();
+});
 
 /** 过滤条件监听——枪号 */
 watch(() => Data.Filter.nozzleNum,(val) => {
@@ -225,6 +311,33 @@ watch(() => Data.time1,(val) => {
     Data.Filter.startCheckTime = new Date(val?.[0].toString());
     Data.Filter.endCheckTime = new Date(val?.[1].toString());
 })
+
+/** 过滤条件监听——支付方式 */
+watch(() => Data.Filter.onlineStatus,(val) => {
+    if(val) {
+        Data.Filter.onlineStatus = val
+    } else {
+        Data.Filter.onlineStatus = null
+    }
+})
+
+/** 过滤条件监听——支付方式类型 */
+watch(() => Data.Filter.paymentType,(val) => {
+    if(val) {
+        Data.Filter.paymentType = val
+    } else {
+        Data.Filter.paymentType = null
+    }
+})
+
+/** 过滤条件监听——用户手机号码or用户名称 */
+watch(() => Data.Filter.phoneNumberOruseName,(val) => {
+    if(val) {
+        Data.Filter.phoneNumberOruseName = val
+    } else {
+        Data.Filter.phoneNumberOruseName = null
+    }
+})
 </script>
 
 <style scoped lang="scss">
@@ -244,4 +357,12 @@ watch(() => Data.time1,(val) => {
 ::v-deep .el-table th.el-table__cell {
     background-color: #F6F6F6;
 }
+
+.mb21{
+    margin-left: 68px;
+}
+
+.mb22{
+    width: 2000px;
+}
 </style>

+ 2 - 2
src/FccWeb/admin.ui.plus-master/src/views/admin/station/station.vue

@@ -32,8 +32,8 @@
                                     icon="ele-Plus" @click.stop="addDetails(scope.row.id)">设备</el-link>
                                 <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
                                     icon="ele-Edit" @click.stop="uploadStation(scope.row)">编辑</el-link>
-                                <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
-                                    icon="ele-Delete" @click.stop="deleteData(scope.row.id)">删除</el-link>
+                                <!-- <el-link class="my-el-link mr12 ml12" type="primary" :underline="false" target="_blank"
+                                    icon="ele-Delete" @click.stop="deleteData(scope.row.id)">删除</el-link> -->
                             </template>
                         </el-table-column>
                     </el-table>

+ 1 - 1
src/FccWeb/admin.ui.plus-master/vite.config.ts

@@ -43,7 +43,7 @@ const viteConfig = defineConfig(({ mode, command }: ConfigEnv) => {
           rewrite: (path) => path.replace(/^\/gitee/, ''),
         },
         '/api': {
-          target: 'http://localhost:9999/',
+          target: 'http://192.168.0.53:9999/',
           ws: true,
           changeOrigin: true,
           rewrite: (path) => path.replace(/^\/api/, ''),