diff --git a/src/assets/daxpay/alipay.svg b/src/assets/daxpay/alipay.svg
new file mode 100644
index 000000000..a6ff5bab0
--- /dev/null
+++ b/src/assets/daxpay/alipay.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/daxpay/unionPay.svg b/src/assets/daxpay/unionPay.svg
new file mode 100644
index 000000000..461825c51
--- /dev/null
+++ b/src/assets/daxpay/unionPay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/daxpay/wechat.svg b/src/assets/daxpay/wechat.svg
new file mode 100644
index 000000000..897c246dc
--- /dev/null
+++ b/src/assets/daxpay/wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/Bootx/Query/Query.ts b/src/components/Bootx/Query/Query.ts
index a01534537..4e4fb43fe 100644
--- a/src/components/Bootx/Query/Query.ts
+++ b/src/components/Bootx/Query/Query.ts
@@ -31,12 +31,10 @@ export interface QueryField {
name?: string
// 精度
precision?: number
- // 查询列表
+ // 下拉列表内容
selectList?: LabeledValue[] | null
// 时间格式化
format?: string | null
- // 默认值 未启用
- defaultValue?: number | string
}
/**
diff --git a/src/enums/daxpay/ChannelEnum.ts b/src/enums/daxpay/ChannelEnum.ts
new file mode 100644
index 000000000..07403ff3a
--- /dev/null
+++ b/src/enums/daxpay/ChannelEnum.ts
@@ -0,0 +1,8 @@
+/**
+ * 支付通道
+ */
+export enum ChannelEnum {
+ ALI = 'ali_pay',
+ WECHAT = 'wechat_pay',
+ UNION_PAY = 'union_pay',
+}
diff --git a/src/views/baseapi/dict/DictEdit.vue b/src/views/baseapi/dict/DictEdit.vue
index d418df866..f4f5cc07d 100644
--- a/src/views/baseapi/dict/DictEdit.vue
+++ b/src/views/baseapi/dict/DictEdit.vue
@@ -13,7 +13,7 @@
ref="formRef"
:model="form"
:rules="rules"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
diff --git a/src/views/baseapi/dict/DictItemEdit.vue b/src/views/baseapi/dict/DictItemEdit.vue
index e2ba1797a..922957543 100644
--- a/src/views/baseapi/dict/DictItemEdit.vue
+++ b/src/views/baseapi/dict/DictItemEdit.vue
@@ -13,7 +13,7 @@
ref="formRef"
:model="form"
:rules="rules"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
diff --git a/src/views/baseapi/param/SystemParamEdit.vue b/src/views/baseapi/param/SystemParamEdit.vue
index f187e4146..aefbf3891 100644
--- a/src/views/baseapi/param/SystemParamEdit.vue
+++ b/src/views/baseapi/param/SystemParamEdit.vue
@@ -13,7 +13,7 @@
ref="formRef"
:model="form"
:rules="rules"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
diff --git a/src/views/daxpay/admin/merchant/app/MchApp.api.ts b/src/views/daxpay/admin/merchant/app/MchApp.api.ts
index fd6403b85..ccd7a2e24 100644
--- a/src/views/daxpay/admin/merchant/app/MchApp.api.ts
+++ b/src/views/daxpay/admin/merchant/app/MchApp.api.ts
@@ -25,7 +25,7 @@ export const get = (id) => {
*/
export const add = (obj) => {
return defHttp.post>({
- url: '/mch/app/save',
+ url: '/mch/app/add',
data: obj,
})
}
@@ -60,17 +60,17 @@ export interface MchApp extends BaseEntity {
// 应用名称
appName?: string
// 签名方式
- signType?: string
+ signType: string
// 签名秘钥
signSecret?: string
// 是否对请求进行验签
- reqSign?: boolean
+ reqSign: boolean
// 支付限额
- limitAmount?: number
+ limitAmount: number
// 订单默认超时时间(分钟)
orderTimeout: number
// 异步消息通知类型
- notifyType?: string
+ notifyType: string
// 通知地址, http/WebSocket 需要配置
notifyUrl?: string
// 状态
diff --git a/src/views/daxpay/admin/merchant/app/MchAppEdit.vue b/src/views/daxpay/admin/merchant/app/MchAppEdit.vue
index e60f45d07..e27477804 100644
--- a/src/views/daxpay/admin/merchant/app/MchAppEdit.vue
+++ b/src/views/daxpay/admin/merchant/app/MchAppEdit.vue
@@ -12,7 +12,7 @@
class="small-from-item"
:model="form"
ref="formRef"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
@@ -20,11 +20,16 @@
-
- {{ form.mchNo }}
+
+
- {{ form.appId }}
+ {{ form.appId }}
@@ -64,14 +69,15 @@
生成秘钥
-
-
+
+
+ 不启用
http
websocket
消息队列
-
+
@@ -98,7 +104,9 @@
import { FormInstance, Rule } from 'ant-design-vue/lib/form'
import { FormEditType } from '@/enums/formTypeEnum'
import { BasicDrawer } from '@/components/Drawer'
- import { buildUUID } from "@/utils/uuid";
+ import { buildUUID } from '@/utils/uuid'
+ import { dropdown as merchantDropdown } from '@/views/daxpay/admin/merchant/info/Merchant.api'
+ import { LabeledValue } from 'ant-design-vue/lib/select'
const {
initFormEditType,
@@ -115,27 +123,48 @@
// 表单
const formRef = ref()
- let form = ref({})
+ const form = ref({
+ notifyType: 'none',
+ signType: 'HMAC_SHA256',
+ limitAmount: 200.0,
+ orderTimeout: 5,
+ reqSign: true,
+ })
+ const mchNoOptions = ref([])
// 校验
const rules = reactive({
+ mchNo: [{ required: true, message: '请选择所属商户' }],
appName: [{ required: true, message: '请输入应用名称' }],
signType: [{ required: true, message: '请选择签名方式' }],
signSecret: [{ required: true, message: '请输入签名秘钥' }],
reqSign: [{ required: true, message: '请选择是否验签' }],
- limitAmount: [{ required: true, message: '请选择是否验签' }],
- orderTimeout: [{ required: true, message: '请选择是否验签' }],
- notifyType: [{ required: true, message: '请选择是否验签' }],
+ limitAmount: [{ required: true, message: '请输入支付限额(元)' }],
+ orderTimeout: [{ required: true, message: '请输入订单默认超时时间(分钟)' }],
+ notifyType: [{ required: true, message: '请选择消息通知方式' }],
} as Record)
// 事件
const emits = defineEmits(['ok'])
- // 入口
+
+ /**
+ * 入口
+ */
function init(id, editType: FormEditType) {
+ initMerchant()
initFormEditType(editType)
resetForm()
getInfo(id, editType)
}
+ /**
+ * 初始化商户列表信息
+ */
+ function initMerchant() {
+ merchantDropdown().then(({ data }) => {
+ mchNoOptions.value = data
+ })
+ }
+
/**
* 获取信息
*/
@@ -169,7 +198,7 @@
* 生成秘钥
*/
function genSignSecret() {
- form.value.signSecret = buildUUID()+buildUUID()
+ form.value.signSecret = buildUUID() + buildUUID()
}
/**
* 重置表单的校验
diff --git a/src/views/daxpay/admin/merchant/app/MchAppList.vue b/src/views/daxpay/admin/merchant/app/MchAppList.vue
index a55c3f617..1370b1fd5 100644
--- a/src/views/daxpay/admin/merchant/app/MchAppList.vue
+++ b/src/views/daxpay/admin/merchant/app/MchAppList.vue
@@ -4,6 +4,7 @@
@@ -39,15 +40,13 @@
-
+
-
- 查看
-
+ 查看
-
- 编辑
-
+ 编辑
+
+ 通道配置
删除
@@ -62,22 +61,26 @@
@page-change="handleTableChange"
/>
+
+
+
diff --git a/src/views/daxpay/admin/merchant/info/Merchant.api.ts b/src/views/daxpay/admin/merchant/info/Merchant.api.ts
index bf4fdc133..1409aa64b 100644
--- a/src/views/daxpay/admin/merchant/info/Merchant.api.ts
+++ b/src/views/daxpay/admin/merchant/info/Merchant.api.ts
@@ -1,6 +1,7 @@
import { defHttp } from '@/utils/http/axios'
import { PageResult, Result } from '#/axios'
import { BaseEntity } from '#/web'
+import { LabeledValue } from 'ant-design-vue/lib/select'
/**
* 分页
@@ -25,7 +26,7 @@ export const get = (id) => {
*/
export const add = (obj) => {
return defHttp.post>({
- url: '/merchant/save',
+ url: '/merchant/add',
data: obj,
})
}
@@ -39,6 +40,15 @@ export const update = (obj) => {
})
}
+/**
+ * 商户下拉列表
+ */
+export const dropdown = () => {
+ return defHttp.get>({
+ url: '/merchant/dropdown',
+ })
+}
+
/**
* 删除
*/
diff --git a/src/views/daxpay/admin/merchant/info/MerchantEdit.vue b/src/views/daxpay/admin/merchant/info/MerchantEdit.vue
index cee042387..b491ac57f 100644
--- a/src/views/daxpay/admin/merchant/info/MerchantEdit.vue
+++ b/src/views/daxpay/admin/merchant/info/MerchantEdit.vue
@@ -12,7 +12,7 @@
class="small-from-item"
:model="form"
ref="formRef"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
diff --git a/src/views/daxpay/admin/merchant/info/MerchantList.vue b/src/views/daxpay/admin/merchant/info/MerchantList.vue
index 597512886..18f64387a 100644
--- a/src/views/daxpay/admin/merchant/info/MerchantList.vue
+++ b/src/views/daxpay/admin/merchant/info/MerchantList.vue
@@ -65,7 +65,7 @@
import useTablePage from '@/hooks/bootx/useTablePage'
import MerchantEdit from './MerchantEdit.vue'
import BQuery from '@/components/Bootx/Query/BQuery.vue'
- import { STRING } from '@/components/Bootx/Query/Query'
+ import {QueryField, STRING} from '@/components/Bootx/Query/Query'
import { FormEditType } from '@/enums/formTypeEnum'
import { useMessage } from '@/hooks/web/useMessage'
import { VxeTableInstance, VxeToolbarInstance } from 'vxe-table'
@@ -86,9 +86,9 @@
const { dictConvert } = useDict()
// 查询条件
const fields = [
- { field: 'code', formType: STRING, name: '编码', placeholder: '请输入终端编码' },
- { field: 'name', formType: STRING, name: '名称', placeholder: '请输入终端名称' },
- ]
+ { field: 'mchName', type: STRING, name: '商户名称', placeholder: '请输入商户名称' },
+ { field: 'companyName', type: STRING, name: '公司名称', placeholder: '请输入公司名称' },
+ ] as QueryField[]
const xTable = ref()
const xToolbar = ref()
const merchantEdit: any = ref()
diff --git a/src/views/iam/client/ClientList.vue b/src/views/iam/client/ClientList.vue
index 5f919b0f5..67ed5b3ca 100644
--- a/src/views/iam/client/ClientList.vue
+++ b/src/views/iam/client/ClientList.vue
@@ -72,7 +72,7 @@
import useTablePage from '@/hooks/bootx/useTablePage'
import ClientEdit from './ClientEdit.vue'
import BQuery from '@/components/Bootx/Query/BQuery.vue'
- import { STRING } from '@/components/Bootx/Query/Query'
+ import {QueryField, STRING} from '@/components/Bootx/Query/Query'
import { FormEditType } from '@/enums/formTypeEnum'
import { useMessage } from '@/hooks/web/useMessage'
import { VxeTableInstance, VxeToolbarInstance } from 'vxe-table'
@@ -92,9 +92,9 @@
// 查询条件
const fields = [
- { field: 'code', formType: STRING, name: '编码', placeholder: '请输入终端编码' },
- { field: 'name', formType: STRING, name: '名称', placeholder: '请输入终端名称' },
- ]
+ { field: 'code', type: STRING, name: '编码', placeholder: '请输入终端编码' },
+ { field: 'name', type: STRING, name: '名称', placeholder: '请输入终端名称' },
+ ] as QueryField[]
const xTable = ref()
const xToolbar = ref()
const clientEdit: any = ref()
diff --git a/src/views/iam/perm/code/PermCodeEdit.vue b/src/views/iam/perm/code/PermCodeEdit.vue
index 75062a021..894d3f5f1 100644
--- a/src/views/iam/perm/code/PermCodeEdit.vue
+++ b/src/views/iam/perm/code/PermCodeEdit.vue
@@ -12,7 +12,7 @@
class="small-from-item"
ref="formRef"
:model="form"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
diff --git a/src/views/iam/perm/menu/MenuEdit.vue b/src/views/iam/perm/menu/MenuEdit.vue
index ab091de85..1ab4ae2b3 100644
--- a/src/views/iam/perm/menu/MenuEdit.vue
+++ b/src/views/iam/perm/menu/MenuEdit.vue
@@ -13,7 +13,7 @@
ref="formRef"
class="small-from-item"
:model="form"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:rules="rules"
:labelCol="labelCol"
:wrapperCol="wrapperCol"
diff --git a/src/views/iam/role/RoleEdit.vue b/src/views/iam/role/RoleEdit.vue
index f288c482c..4ae7bb20c 100644
--- a/src/views/iam/role/RoleEdit.vue
+++ b/src/views/iam/role/RoleEdit.vue
@@ -12,7 +12,7 @@
class="small-from-item"
:model="form"
ref="formRef"
- validate-trigger="['blur', 'change']"
+ :validate-trigger="['blur', 'change']"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"