|
|
@@ -1,13 +1,253 @@
|
|
|
+<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">
|
|
|
+ <el-input
|
|
|
+ v-model="state.formQuery.mobilePhone"
|
|
|
+ placeholder="用户手机号"
|
|
|
+ clearable
|
|
|
+ @blur="loadData(true)"
|
|
|
+ class="wd150 mr10">
|
|
|
+ </el-input>
|
|
|
+ <el-input
|
|
|
+ v-model="state.formQuery.outTradeNo"
|
|
|
+ placeholder="商户订单号"
|
|
|
+ clearable
|
|
|
+ @blur="loadData(true)"
|
|
|
+ class="wd150 mr10">
|
|
|
+ </el-input>
|
|
|
+ <el-input
|
|
|
+ v-model="state.formQuery.transactionId"
|
|
|
+ placeholder="微信订单号"
|
|
|
+ clearable
|
|
|
+ @blur="loadData(true)"
|
|
|
+ class="wd150 mr10">
|
|
|
+ </el-input>
|
|
|
+<!-- <el-input
|
|
|
+ v-model="state.formQuery.tradeType"
|
|
|
+ placeholder="交易类型,枚举值:JSAPI:公众号支付 NATIVE:扫码支付 APP:APP支付 MICROPAY:付款码支付 MWEB:H5支付 FACEPAY:刷脸支付"
|
|
|
+ clearable
|
|
|
+ @blur="loadData(true)"
|
|
|
+ class="wd150 mr10">
|
|
|
+ </el-input>-->
|
|
|
+<!-- <el-input
|
|
|
+ v-model="state.formQuery.tradeState"
|
|
|
+ placeholder="交易状态,枚举值:SUCCESS:支付成功REFUND:转入退款NOTPAY:未支付CLOSED:已关闭REVOKED:已撤销(付款码支付)USERPAYING:用户支付中(付款码支付)PAYERROR:支付失败(其他原因,如银行返回失败)"
|
|
|
+ clearable
|
|
|
+ @blur="loadData(true)"
|
|
|
+ class="wd150 mr10">
|
|
|
+ </el-input>-->
|
|
|
|
|
|
+
|
|
|
+ <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"
|
|
|
+ :data="state.tableData.data"
|
|
|
+ v-loading="state.tableData.loading"
|
|
|
+ @selection-change="handleTableSelectionChange"
|
|
|
+ @sort-change="handleTableSortChange">
|
|
|
+ <template #empty>
|
|
|
+ <el-empty></el-empty>
|
|
|
+ </template>
|
|
|
+ <el-table-column
|
|
|
+ v-for="field in state.tableData.columns"
|
|
|
+ :key="field.prop"
|
|
|
+ :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.prop==='expand'">
|
|
|
+ <p style="padding-left: 2em;" v-html="row[field.prop]"></p>
|
|
|
+ </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>
|
|
|
-export default {
|
|
|
- name: "index"
|
|
|
+<script setup lang="ts" name="PayLogList">
|
|
|
+import {defineAsyncComponent, reactive, onMounted, onBeforeMount, ref, getCurrentInstance, nextTick, onBeforeUnmount} from 'vue';
|
|
|
+import {$body,$get} from "/@/utils/request";
|
|
|
+import {Msg} from "/@/utils/message";
|
|
|
+
|
|
|
+import {useRoute} from "vue-router";
|
|
|
+
|
|
|
+const route = useRoute();
|
|
|
+import ExtPage from '/@/components/form/ExtPage.vue'
|
|
|
+
|
|
|
+import mittBus from '/@/utils/mitt';
|
|
|
+
|
|
|
+
|
|
|
+//定义引用
|
|
|
+const queryRef = ref();
|
|
|
+const payLogDialogRef = ref();
|
|
|
+
|
|
|
+//定义变量
|
|
|
+const state = reactive({
|
|
|
+ formQuery: {},
|
|
|
+ pageQuery: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ tableData: {
|
|
|
+ height: 500,
|
|
|
+ data: [] as Array < any >,
|
|
|
+ loading: false,
|
|
|
+ columns: [
|
|
|
+ {label: '用户手机号', prop: 'mobilePhone',width:150, resizable: true,fixed:'left'},
|
|
|
+ {label: '商户订单号', prop: 'outTradeNo', width:250,resizable: true},
|
|
|
+ {label: '微信订单号', prop: 'transactionId', width:250,resizable: true},
|
|
|
+ {label: '交易类型', prop: 'tradeType', width:150,resizable: true},
|
|
|
+ // {label: '交易状态', prop: 'tradeState', resizable: true},
|
|
|
+ {label: '订单总金额', prop: 'rechargeAmount', resizable: true,width:130},
|
|
|
+ {label: '用户支付币种', prop: 'currency', width:150,resizable: true},
|
|
|
+ {label: '支付完成时间', prop: 'transactionTime', sortable: 'custom', resizable: true,width:200,fixed:'right'},
|
|
|
+ ],
|
|
|
+ },
|
|
|
+})
|
|
|
+
|
|
|
+
|
|
|
+// 监听双向绑定 modelValue 的变化
|
|
|
+// watch(
|
|
|
+// () => state.pageIndex,
|
|
|
+// () => {
|
|
|
+//
|
|
|
+// }
|
|
|
+// );
|
|
|
+
|
|
|
+//生命周期钩子
|
|
|
+onBeforeMount(() => {
|
|
|
+})
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ var query = route.query;
|
|
|
+ console.log(route.params, route.query)
|
|
|
+ if(query.mobilePhone){
|
|
|
+ state.formQuery.mobilePhone = query.mobilePhone;
|
|
|
+ }
|
|
|
+
|
|
|
+ loadData();
|
|
|
+
|
|
|
+ nextTick(() => {
|
|
|
+ let bodyHeight = document.body.clientHeight;
|
|
|
+ let queryHeight = queryRef.value.$el.clientHeight;
|
|
|
+ state.tableData.height = bodyHeight - queryHeight - 320
|
|
|
+ })
|
|
|
+
|
|
|
+ mittBus.on("payLog.refresh", () => {
|
|
|
+ loadData();
|
|
|
+ })
|
|
|
+});
|
|
|
+
|
|
|
+onBeforeUnmount(() => {
|
|
|
+ mittBus.off("payLog.refresh")
|
|
|
+})
|
|
|
+
|
|
|
+
|
|
|
+//region 方法区
|
|
|
+// 初始化表格数据
|
|
|
+const loadData = (refresh: boolean = false) => {
|
|
|
+ if (refresh) {
|
|
|
+ state.pageQuery.pageNum = 1;
|
|
|
+ }
|
|
|
+ state.tableData.loading = true;
|
|
|
+ $get(`/custom/listRecharge`, {...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 onRowClick = (type: string, row: any) => {
|
|
|
+ payLogDialogRef.value.open(type, row);
|
|
|
+};
|
|
|
+
|
|
|
+// 删除用户
|
|
|
+const onRowDel = (row: any) => {
|
|
|
+ Msg.confirm(`此操作将永久删除:『${row.name}』,是否继续?`).then(() => {
|
|
|
+ $get(`/payLog/delete/${row.id}`).then(() => {
|
|
|
+ Msg.message("删除成功", 'success')
|
|
|
+ }).catch(() => {
|
|
|
+ Msg.message("删除失败", 'error')
|
|
|
+ })
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const handleTableSelectionChange = (selection: any) => {
|
|
|
+ console.log("handleTableSelectionChange>>", selection)
|
|
|
+ // emit("on-check-change", selection)
|
|
|
}
|
|
|
-</script>
|
|
|
|
|
|
-<style scoped>
|
|
|
+const handleTableSortChange = (column, prop, order) => {
|
|
|
+ console.log("handleTableSortChange>>", column, prop, order)
|
|
|
+ // emit("on-sort-change", column)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//endregion
|
|
|
+
|
|
|
|
|
|
-</style>
|
|
|
+// 暴露变量
|
|
|
+// defineExpose({
|
|
|
+// loadData,
|
|
|
+// });
|
|
|
+</script>
|