diff --git a/index.html b/index.html index 4ad6edd..85901d7 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ ;(() => { const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') const darkMode = mediaQuery.matches ? 'light' : 'light' - const { appTheme = '#5d9dfe' } = + const { appTheme = '#f8d03b' } = JSON.parse(window.localStorage.getItem('DESIGN-SETTING')) || {} let htmlRoot = document.getElementById('htmlRoot') diff --git a/src/router/daxpay.ts b/src/router/daxpay.ts index 9bb5d37..fdcd5fc 100644 --- a/src/router/daxpay.ts +++ b/src/router/daxpay.ts @@ -218,6 +218,14 @@ export const DaxPayAgentMiniRoute: RouteRecordRaw = { title: '结算信息', }, }, + { + path: '/mini/agent/wallet/cashouts', + name: 'AgentCashoutsApply', + component: () => import('@/views/daxpay/miniapp/agent/wallet/cashouts/CashoutsApply.vue'), + meta: { + title: '提现申请', + }, + }, ], } diff --git a/src/settings/designSetting.ts b/src/settings/designSetting.ts index 87779cf..bb92f01 100644 --- a/src/settings/designSetting.ts +++ b/src/settings/designSetting.ts @@ -35,7 +35,7 @@ export const appThemeList: string[] = [ const setting: DesignSettingState = { // 系统主题色 - appTheme: '#5d9dfe', + appTheme: '#f2d15a', // 系统内置主题色列表 appThemeList, // 是否开启路由动画 diff --git a/src/styles/vant.less b/src/styles/vant.less index 7f36ed6..2621d2a 100644 --- a/src/styles/vant.less +++ b/src/styles/vant.less @@ -4,6 +4,9 @@ // 详情:https: //vant-contrib.gitee.io/vant/v4/#/zh-CN/config-provider#bian-liang-lie-biao body { --van-primary-color: @primaryColor; + --van-button-default-color: #777777; + --van-button-primary-color: #777777; + --van-button-normal-font-size: 14px; } .van-action-sheet__cancel { @@ -16,3 +19,6 @@ body { justify-content: center; height: 100%; } +.van-button__text{ + //color: #777777; +} diff --git a/src/styles/var.less b/src/styles/var.less index 59743ee..69e3850 100644 --- a/src/styles/var.less +++ b/src/styles/var.less @@ -1,4 +1,4 @@ // 这里定义全局变量 -@primaryColor: #5d9dfe; +@primaryColor: #f8d03b; @header-height: 46px; @footer-height: 50px; diff --git a/src/views/daxpay/h5/onboarded/hkrt/HkrtApply.vue b/src/views/daxpay/h5/onboarded/hkrt/HkrtApply.vue index 0338ad4..d51aa6d 100644 --- a/src/views/daxpay/h5/onboarded/hkrt/HkrtApply.vue +++ b/src/views/daxpay/h5/onboarded/hkrt/HkrtApply.vue @@ -777,7 +777,7 @@
- + 暂存
@@ -904,16 +904,16 @@ function initData() { pca.value = data }) - // 获取权限配置和费率配置 - Promise.all([ - getAgentPermConfig(), - getConfig(), - ]).then(([permRes, rateRes]) => { - agentPerm.value = permRes.data - agentRate.value = rateRes.data - }).catch(() => { - showNotify({ type: 'danger', message: '获取权限或费率配置失败' }) - }) + // 只有在dax-pay-agent客户端才获取权限配置和费率配置 + if (clientCode === 'dax-pay-agent') { + Promise.all([ + getAgentPermConfig(), + getConfig(), + ]).then(([permRes, rateRes]) => { + agentPerm.value = permRes.data + agentRate.value = rateRes.data + }) + } } /** @@ -1154,7 +1154,7 @@ async function readMchData() { font-weight: 600; letter-spacing: 2px; .current { - color: #448ef7; + color: #ff8a00; } } .formBox { @@ -1171,7 +1171,7 @@ async function readMchData() { align-items: center; padding: 0 1.25rem; background-color: #f7f7f7; - color: #448ef7; + color: #5C4B37; letter-spacing: 1px; position: relative; font-weight: 600; @@ -1183,7 +1183,7 @@ async function readMchData() { content: ''; width: 0.3125rem; height: 1.25rem; - background-color: #448ef7; + background-color: #ff8a00; } } } diff --git a/src/views/daxpay/h5/onboarded/leshua/LeshuaApply.vue b/src/views/daxpay/h5/onboarded/leshua/LeshuaApply.vue index c8650f6..1f5ef67 100644 --- a/src/views/daxpay/h5/onboarded/leshua/LeshuaApply.vue +++ b/src/views/daxpay/h5/onboarded/leshua/LeshuaApply.vue @@ -631,7 +631,7 @@
- + 暂存
@@ -970,7 +970,7 @@ async function readMchData() { font-weight: 600; letter-spacing: 2px; .current { - color: #448ef7; + color: #ff8a00; } } .formBox { @@ -987,7 +987,7 @@ async function readMchData() { align-items: center; padding: 0 1.25rem; background-color: #f7f7f7; - color: #448ef7; + color: #5C4B37; letter-spacing: 1px; position: relative; font-weight: 600; @@ -999,7 +999,7 @@ async function readMchData() { content: ''; width: 0.3125rem; height: 1.25rem; - background-color: #448ef7; + background-color: #ff8a00; } } } diff --git a/src/views/daxpay/h5/onboarded/sand/SandApply.vue b/src/views/daxpay/h5/onboarded/sand/SandApply.vue index 2d65a29..3052d43 100644 --- a/src/views/daxpay/h5/onboarded/sand/SandApply.vue +++ b/src/views/daxpay/h5/onboarded/sand/SandApply.vue @@ -507,7 +507,7 @@
- + 暂存
@@ -813,7 +813,7 @@ async function readMchData() { font-weight: 600; letter-spacing: 2px; .current { - color: #448ef7; + color: #ff8a00; } } .formBox { @@ -830,7 +830,7 @@ async function readMchData() { align-items: center; padding: 0 1.25rem; background-color: #f7f7f7; - color: #448ef7; + color: #5C4B37; letter-spacing: 1px; position: relative; font-weight: 600; @@ -842,7 +842,7 @@ async function readMchData() { content: ''; width: 0.3125rem; height: 1.25rem; - background-color: #448ef7; + background-color: #ff8a00; } } } diff --git a/src/views/daxpay/h5/onboarded/vbill/VbillApply.vue b/src/views/daxpay/h5/onboarded/vbill/VbillApply.vue index be6eba4..c400f08 100644 --- a/src/views/daxpay/h5/onboarded/vbill/VbillApply.vue +++ b/src/views/daxpay/h5/onboarded/vbill/VbillApply.vue @@ -951,7 +951,7 @@
- + 暂存
@@ -1356,7 +1356,7 @@ async function readMchData() { font-weight: 600; letter-spacing: 2px; .current { - color: #448ef7; + color: #ff8a00; } } .formBox { @@ -1373,7 +1373,7 @@ async function readMchData() { align-items: center; padding: 0 1.25rem; background-color: #f7f7f7; - color: #448ef7; + color: #5C4B37; letter-spacing: 1px; position: relative; font-weight: 600; @@ -1385,7 +1385,7 @@ async function readMchData() { content: ''; width: 0.3125rem; height: 1.25rem; - background-color: #448ef7; + background-color: #ff8a00; } } } diff --git a/src/views/daxpay/miniapp/agent/merchant/profile/MchMainBody.vue b/src/views/daxpay/miniapp/agent/merchant/profile/MchMainBody.vue index 0ee090a..e471b54 100644 --- a/src/views/daxpay/miniapp/agent/merchant/profile/MchMainBody.vue +++ b/src/views/daxpay/miniapp/agent/merchant/profile/MchMainBody.vue @@ -653,11 +653,11 @@ onMounted(() => { } .form-content { + /* 主体内容滚动 */ flex: 1; - overflow-y: scroll; + overflow-y: auto; -webkit-overflow-scrolling: touch; - padding: 20px 0; - padding-bottom: 80px; /* 为底部按钮留出空间 */ + padding-bottom: 12px; } .loading-wrapper { @@ -672,44 +672,26 @@ onMounted(() => { /* 卡片样式 */ .status-card, .info-card { - margin-bottom: 16px; - background: #fff; - border-radius: 0; + margin: 12px 8px; + border-radius: 8px; overflow: hidden; - box-shadow: none; + background: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); } .card-header { - height: 50px; - width: 100%; display: flex; align-items: center; - padding: 0 20px; - background-color: #f7f7f7; - color: #448ef7; - letter-spacing: 1px; - position: relative; - font-weight: 600; - border-bottom: none; - - &::before { - position: absolute; - top: 50%; - left: 5px; - transform: translateY(-50%); - content: ''; - width: 5px; - height: 20px; - background-color: #448ef7; - } + height: 34px; + padding: 0 14px; + background-color: #fff4c5; } .card-title { - display: flex; - align-items: center; - gap: 8px; font-size: 14px; - color: #448ef7; + font-weight: 500; + color: #5c4b37; + line-height: 1.2; } /* 认证状态样式优化 */ @@ -758,10 +740,6 @@ onMounted(() => { } .bottom-btn { - position: fixed; - bottom: 0; - left: 0; - right: 0; background: white; padding: 15px 20px; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); diff --git a/src/views/daxpay/miniapp/agent/merchant/profile/MchSettleInfo.vue b/src/views/daxpay/miniapp/agent/merchant/profile/MchSettleInfo.vue index 2ecec56..29b1b10 100644 --- a/src/views/daxpay/miniapp/agent/merchant/profile/MchSettleInfo.vue +++ b/src/views/daxpay/miniapp/agent/merchant/profile/MchSettleInfo.vue @@ -318,14 +318,16 @@ onMounted(() => { .card-header { display: flex; align-items: center; - height: 40px; + height: 34px; padding: 0 14px; - background-color: #ecf5ff; + background-color: #fff4c5; } .card-title { - font-size: 16px; - color: #409eff; + font-size: 14px; + font-weight: 500; + color: #5c4b37; + line-height: 1.2; } /* 让内嵌面板去掉默认边距,卡片白底由容器负责 */ diff --git a/src/views/daxpay/miniapp/agent/merchant/profile/MchShopInfo.vue b/src/views/daxpay/miniapp/agent/merchant/profile/MchShopInfo.vue index e0f4d07..f6735e9 100644 --- a/src/views/daxpay/miniapp/agent/merchant/profile/MchShopInfo.vue +++ b/src/views/daxpay/miniapp/agent/merchant/profile/MchShopInfo.vue @@ -242,14 +242,14 @@ onMounted(() => { .card-header { display: flex; align-items: center; - height: 40px; + height: 34px; padding: 0 14px; - background-color: #ecf5ff; + background-color: #fff4c5; } .card-title { - font-size: 16px; - color: #409eff; + font-size: 14px; + color: #5c4b37; } .bottom-btn { diff --git a/src/views/daxpay/miniapp/agent/wallet/cashouts/Cashouts.api.ts b/src/views/daxpay/miniapp/agent/wallet/cashouts/Cashouts.api.ts new file mode 100644 index 0000000..eb96009 --- /dev/null +++ b/src/views/daxpay/miniapp/agent/wallet/cashouts/Cashouts.api.ts @@ -0,0 +1,160 @@ +import { http } from '@/utils/http/axios' +import type { MchEntity, Result } from '#/axios' + +/** + * 查询钱包 + */ +export function getWallet() { + return http.request>({ + method: 'get', + url: '/agent/wallet/get', + }) +} + +/** + * 创建提现申请 + */ +export function createApply(params: AgentCashouts) { + return http.request>({ + method: 'post', + url: '/agent/cashouts/create', + data: params, + }) +} + +/** + * 获取提现配置 + */ +export function getConfig() { + return http.request>({ + method: 'get', + url: '/agent/cashouts/config/get', + }) +} + +/** + * 提现手续费金额计算 + */ +export function calcCashoutsFee(cashoutsAmount: number) { + return http.request>({ + method: 'get', + url: '/agent/cashouts/calcCashoutsFee', + params: { cashoutsAmount }, + }) +} + +/** + * 提现申请分页 + */ +export function pageCashouts(params: any) { + return http.request>({ + method: 'get', + url: '/agent/cashouts/page', + params, + }) +} + +/** + * 提现申请详情 + */ +export function getCashouts(id: number) { + return http.request>({ + method: 'get', + url: '/agent/cashouts/findById', + params: { id }, + }) +} + +/** + * 修改提现申请 + */ +export function updateCashouts(params: AgentCashouts) { + return http.request>({ + method: 'post', + url: '/agent/cashouts/update', + data: params, + }) +} + +/** + * 关闭提现申请 + */ +export function closeCashouts(id: number) { + return http.request>({ + method: 'post', + url: '/agent/cashouts/close', + params: { id }, + }) +} + +/** + * 钱包 + */ +export interface AgentWallet extends MchEntity { + /** 余额 */ + balance?: number + /** 可用余额 */ + availableBalance?: number + /** 冻结金额 */ + freezeBalance?: number + /** 提现中金额 */ + withdrawBalance?: number + /** 在途金额 */ + onWayBalance?: number +} + +/** + * 提现申请 + */ +export interface AgentCashouts extends MchEntity { + /** 申请名称 */ + name?: string + /** 提现方式 */ + type?: string + /** 提现金额 */ + amount?: number + /** 到账金额 */ + arriveAmount?: number + /** 提现手续费 */ + feeAmount?: number + /** 收款人 */ + receiver?: string + /** 收款方手机号 */ + receiverMobile?: string + /** 提现备注 */ + reason?: string + /** 申请资料 */ + applyDataUrl?: string + /** 对公账户名称 */ + companyName?: string + /** 对公账户号码 */ + companyAccount?: string + /** 开户银行 */ + bankName?: string + /** 开户行支行编码 */ + bankBranchNo?: string + /** 状态 */ + status?: string + /** 外部状态 */ + outStatus?: string +} + +/** + * 提现配置 + */ +export interface AgentCashoutsConfig extends MchEntity { + /** 起提金额 */ + startAmount?: number + /** 单笔限额 */ + singleLimit?: number + /** 每日限额 */ + dailyLimit?: number + /** 费率 */ + feeRate?: number + /** 固定费用 */ + fixedFee?: number + /** 到账金额 */ + arriveAmount?: number + /** 提现手续费 */ + feeAmount?: number +} diff --git a/src/views/daxpay/miniapp/agent/wallet/cashouts/CashoutsApply.vue b/src/views/daxpay/miniapp/agent/wallet/cashouts/CashoutsApply.vue new file mode 100644 index 0000000..93942e8 --- /dev/null +++ b/src/views/daxpay/miniapp/agent/wallet/cashouts/CashoutsApply.vue @@ -0,0 +1,429 @@ + + + + + diff --git a/src/views/daxpay/miniapp/merchant/profile/MchMainBody.vue b/src/views/daxpay/miniapp/merchant/profile/MchMainBody.vue index 9dec306..23e2c26 100644 --- a/src/views/daxpay/miniapp/merchant/profile/MchMainBody.vue +++ b/src/views/daxpay/miniapp/merchant/profile/MchMainBody.vue @@ -647,11 +647,11 @@ onMounted(() => { } .form-content { + /* 主体内容滚动 */ flex: 1; - overflow-y: scroll; + overflow-y: auto; -webkit-overflow-scrolling: touch; - padding: 20px 0; - padding-bottom: 80px; /* 为底部按钮留出空间 */ + padding-bottom: 12px; } .loading-wrapper { @@ -666,44 +666,26 @@ onMounted(() => { /* 卡片样式 */ .status-card, .info-card { - margin-bottom: 16px; - background: #fff; - border-radius: 0; + margin: 12px 8px; + border-radius: 8px; overflow: hidden; - box-shadow: none; + background: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); } .card-header { - height: 50px; - width: 100%; display: flex; align-items: center; - padding: 0 20px; - background-color: #f7f7f7; - color: #448ef7; - letter-spacing: 1px; - position: relative; - font-weight: 600; - border-bottom: none; - - &::before { - position: absolute; - top: 50%; - left: 5px; - transform: translateY(-50%); - content: ''; - width: 5px; - height: 20px; - background-color: #448ef7; - } + height: 34px; + padding: 0 14px; + background-color: #fff4c5; } .card-title { - display: flex; - align-items: center; - gap: 8px; font-size: 14px; - color: #448ef7; + font-weight: 500; + color: #5c4b37; + line-height: 1.2; } /* 认证状态样式优化 */ @@ -752,10 +734,6 @@ onMounted(() => { } .bottom-btn { - position: fixed; - bottom: 0; - left: 0; - right: 0; background: white; padding: 15px 20px; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); diff --git a/src/views/daxpay/miniapp/merchant/profile/MchSettleInfo.vue b/src/views/daxpay/miniapp/merchant/profile/MchSettleInfo.vue index 8e9948f..3b8948f 100644 --- a/src/views/daxpay/miniapp/merchant/profile/MchSettleInfo.vue +++ b/src/views/daxpay/miniapp/merchant/profile/MchSettleInfo.vue @@ -314,14 +314,16 @@ onMounted(() => { .card-header { display: flex; align-items: center; - height: 40px; + height: 34px; padding: 0 14px; - background-color: #ecf5ff; + background-color: #fff4c5; } .card-title { - font-size: 16px; - color: #409eff; + font-size: 14px; + font-weight: 500; + color: #5c4b37; + line-height: 1.2; } /* 让内嵌面板去掉默认边距,卡片白底由容器负责 */ diff --git a/src/views/daxpay/miniapp/merchant/profile/MchShopInfo.vue b/src/views/daxpay/miniapp/merchant/profile/MchShopInfo.vue index b0a5aea..840de67 100644 --- a/src/views/daxpay/miniapp/merchant/profile/MchShopInfo.vue +++ b/src/views/daxpay/miniapp/merchant/profile/MchShopInfo.vue @@ -237,14 +237,14 @@ onMounted(() => { .card-header { display: flex; align-items: center; - height: 40px; + height: 34px; padding: 0 14px; - background-color: #ecf5ff; + background-color: #fff4c5; } .card-title { - font-size: 16px; - color: #409eff; + font-size: 14px; + color: #5c4b37; } .bottom-btn {