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"