feat:第三方支付接口完善
This commit is contained in:
1 parent
c8a728e286
commit
3b351cc852
4 files changed
+153
-49
No files matched your search
@@ -0,0 +1,88 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-button :style="xmlViewStyle" type="text" link @click="xmlViewVisible = true">
|
||||
<div :style="xmlViewStyle" class="xml-view">{{ xmlInline }}</div>
|
||||
</el-button>
|
||||
<el-dialog append-to-body v-model="xmlViewVisible">
|
||||
<pre class="xml-pre" v-text="xmlFormatted"></pre>
|
||||
<template #footer>
|
||||
<el-button @click="xmlViewVisible = false">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="preview-xml">
|
||||
type Props = {
|
||||
width?: number
|
||||
xml?: string
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
width: 0,
|
||||
xml: "",
|
||||
})
|
||||
|
||||
const xmlViewVisible = ref<boolean>(false)
|
||||
|
||||
const formatXml = (xml: string): string => {
|
||||
if (!xml) return ""
|
||||
const PADDING = " "
|
||||
const reg = /(>)(<)(\/*)/g
|
||||
let xmlStr = xml.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n").replace(reg, "$1\r\n$2$3")
|
||||
let pad = 0
|
||||
return xmlStr
|
||||
.split("\r\n")
|
||||
.map((node) => {
|
||||
let indent = ""
|
||||
if (!node || node.trim().length === 0) return node
|
||||
const trimmed = node.trim()
|
||||
if (/.+<\/\w[^>]*>$/.test(trimmed)) {
|
||||
indent = PADDING.repeat(pad)
|
||||
} else if (/^<\/\w/.test(trimmed)) {
|
||||
pad = Math.max(pad - 1, 0)
|
||||
indent = PADDING.repeat(pad)
|
||||
} else if (/^<\w[^>]*[^\/]>.*$/.test(trimmed)) {
|
||||
indent = PADDING.repeat(pad)
|
||||
pad += 1
|
||||
} else {
|
||||
indent = PADDING.repeat(pad)
|
||||
}
|
||||
return indent + trimmed
|
||||
})
|
||||
.join("\r\n")
|
||||
}
|
||||
|
||||
const xmlFormatted = computed(() => {
|
||||
try {
|
||||
return formatXml(props.xml || "")
|
||||
} catch {
|
||||
return props.xml || ""
|
||||
}
|
||||
})
|
||||
|
||||
const xmlInline = computed(() => {
|
||||
return props.xml || ""
|
||||
})
|
||||
|
||||
const xmlViewStyle = computed(() => {
|
||||
if (!props.width) return { width: "160px !important" }
|
||||
return { width: `${props.width}px !important` }
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.xml-view {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.xml-pre {
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
font-size: 12px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
</style>
|
||||
@@ -15,6 +15,7 @@ import TagList from "/@/components/TagList/index.vue"
|
||||
import SvgIcon from "/@/components/SvgIcon/index.vue"
|
||||
import PreviewImage from "/@/components/PreviewImage/index.vue"
|
||||
import PreviewJson from "/@/components/PreviewJson/index.vue"
|
||||
import PreviewXml from "/@/components/PreviewXml/index.vue"
|
||||
import DraggableDepTree from "/@/components/DraggableDepTree/index.vue"
|
||||
|
||||
// 业务组件
|
||||
@@ -79,6 +80,7 @@ export default {
|
||||
app.component("SvgIcon", SvgIcon)
|
||||
app.component("PreviewImage", PreviewImage)
|
||||
app.component("PreviewJson", PreviewJson)
|
||||
app.component("PreviewXml", PreviewXml)
|
||||
app.component("DraggableDepTree", DraggableDepTree)
|
||||
app.component("TreeMultipleSelect", TreeMultipleSelect)
|
||||
app.component("SelectHard", SelectHard)
|
||||
|
||||
+19
-45
@@ -2,14 +2,15 @@
|
||||
<div class="layout-padding">
|
||||
<div class="layout-padding-auto layout-padding-view">
|
||||
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
|
||||
<el-form-item style="width: 250px" label="发起方" prop="paySourceType">
|
||||
<el-form-item style="width: 250px" label="用户" prop="paySourceType">
|
||||
<dict-select v-model="state.queryForm.apiType" dict-code="third_key_type" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 250px" label="接口类型" prop="bizType">
|
||||
<dict-select v-model="state.queryForm.bizType" dict-code="third_pay_api_type" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 400px" label="请求时间" prop="createTimeList">
|
||||
<el-date-picker v-model="state.queryForm.createTimeList" value-format="YYYY-MM-DD" type="daterange" />
|
||||
<el-date-picker v-model="state.queryForm.createTimeList" value-format="YYYY-MM-DD"
|
||||
type="daterange" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button icon="Search" type="primary" @click="getDataList">
|
||||
@@ -20,38 +21,22 @@
|
||||
</el-form>
|
||||
<el-row>
|
||||
<div class="mb8" style="width: 100%">
|
||||
<el-button icon="folder-add" type="primary" class="ml10" @click="formDialogRef.openDialog()" v-auth="'third_thirdPayLog_add'">
|
||||
<el-button icon="folder-add" type="primary" class="ml10" @click="formDialogRef.openDialog()"
|
||||
v-auth="'third_thirdPayLog_add'">
|
||||
新 增
|
||||
</el-button>
|
||||
<el-button
|
||||
plain
|
||||
:disabled="multiple"
|
||||
icon="Delete"
|
||||
type="primary"
|
||||
v-auth="'third_thirdPayLog_del'"
|
||||
@click="handleDelete(selectObjs)"
|
||||
>
|
||||
<el-button plain :disabled="multiple" icon="Delete" type="primary" v-auth="'third_thirdPayLog_del'"
|
||||
@click="handleDelete(selectObjs)">
|
||||
删除
|
||||
</el-button>
|
||||
<right-toolbar
|
||||
v-model:showSearch="showSearch"
|
||||
:export="'third_thirdPayLog_export'"
|
||||
@exportExcel="exportExcel"
|
||||
class="ml10 mr20"
|
||||
style="float: right"
|
||||
@queryTable="getDataList"
|
||||
></right-toolbar>
|
||||
<right-toolbar v-model:showSearch="showSearch" :export="'third_thirdPayLog_export'"
|
||||
@exportExcel="exportExcel" class="ml10 mr20" style="float: right"
|
||||
@queryTable="getDataList"></right-toolbar>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-table
|
||||
:data="state.dataList"
|
||||
v-loading="state.loading"
|
||||
border
|
||||
:cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle"
|
||||
@selection-change="selectionChangHandle"
|
||||
@sort-change="sortChangeHandle"
|
||||
>
|
||||
<el-table :data="state.dataList" v-loading="state.loading" border :cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle" @selection-change="selectionChangHandle"
|
||||
@sort-change="sortChangeHandle">
|
||||
<el-table-column type="index" label="#" width="80" />
|
||||
<el-table-column prop="paySourceType" label="发起方" width="120">
|
||||
<template #default="{ row }">
|
||||
@@ -79,30 +64,19 @@
|
||||
<el-table-column prop="createTime" label="调用时间" width="180" />
|
||||
<el-table-column label="操作" fixed="right" width="80" v-if="false">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-if="false"
|
||||
icon="edit-pen"
|
||||
text
|
||||
type="primary"
|
||||
v-auth="'third_thirdPayLog_edit'"
|
||||
@click="formDialogRef.openDialog(scope.row.id)"
|
||||
>
|
||||
<el-button v-if="false" icon="edit-pen" text type="primary" v-auth="'third_thirdPayLog_edit'"
|
||||
@click="formDialogRef.openDialog(scope.row.id)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="false"
|
||||
icon="delete"
|
||||
text
|
||||
type="primary"
|
||||
v-auth="'third_thirdPayLog_del'"
|
||||
@click="handleDelete([scope.row.id])"
|
||||
>
|
||||
<el-button v-if="false" icon="delete" text type="primary" v-auth="'third_thirdPayLog_del'"
|
||||
@click="handleDelete([scope.row.id])">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
|
||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
|
||||
v-bind="state.pagination" />
|
||||
</div>
|
||||
|
||||
<!-- 编辑、新增 -->
|
||||
|
||||
+44
-4
@@ -1,8 +1,39 @@
|
||||
<template>
|
||||
<div class="layout-padding">
|
||||
<div class="layout-padding-auto layout-padding-view">
|
||||
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
|
||||
<el-form-item style="width: 250px" label="支付平台" prop="payPlatformType">
|
||||
<dict-select v-model="state.queryForm.payPlatformType" dict-code="mini_platform_type" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 250px" label="业务类型" prop="bizType">
|
||||
<dict-select v-model="state.queryForm.bizType" dict-code="third_pay_order_biz_type" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 250px" label="用户" prop="userId">
|
||||
<select-user v-model="state.queryForm.userId" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 450px" label="支付时间" prop="payTimeList">
|
||||
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="datetimerange" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 450px" label="退款时间" prop="refundTimeList">
|
||||
<el-date-picker v-model="state.queryForm.refundTimeList" value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="datetimerange" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button icon="Search" type="primary" @click="getDataList">
|
||||
{{ $t("common.queryBtn") }}
|
||||
</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">
|
||||
{{ $t("common.resetBtn") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row>
|
||||
|
||||
<div class="mb8" style="width: 100%">
|
||||
<!-- :export="'third_thirdPayLog_export'" -->
|
||||
<right-toolbar v-model:showSearch="showSearch" @exportExcel="exportExcel" class="ml10 mr20"
|
||||
style="float: right" @queryTable="getDataList"></right-toolbar>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-table :data="state.dataList" v-loading="state.loading" border :cell-style="tableStyle.cellStyle"
|
||||
:header-cell-style="tableStyle.headerCellStyle" @selection-change="selectionChangHandle"
|
||||
@@ -20,7 +51,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="bizId" label="支付业务id" width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="payNo" label="支付订单号" width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="userId" label="用户id" show-overflow-tooltip />
|
||||
<el-table-column prop="username" label="用户" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="userPhone" label="用户手机号" width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="userCode" label="用户第三方平台唯一编码" width="280" />
|
||||
<el-table-column prop="price" width="100" label="支付金额">
|
||||
<template #default="{ row }">
|
||||
@@ -33,10 +65,18 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="payTime" label="支付时间" width="180" />
|
||||
<el-table-column prop="payRes" label="支付返回" width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="payRes" label="支付返回" width="200">
|
||||
<template #default="{ row }">
|
||||
<preview-xml :xml="row.payRes" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="refundNo" label="退款订单号" width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="refundTime" label="退款时间" width="180" />
|
||||
<el-table-column prop="refundRes" label="退款返回" width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="refundRes" label="退款返回" width="200">
|
||||
<template #default="{ row }">
|
||||
<preview-xml :xml="row.refundRes" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user