fix: formate code and test money
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m8s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m8s
This commit is contained in:
@@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
### Requirement: 旧资产操作审计日志入口
|
### Requirement: 旧资产操作审计日志入口
|
||||||
|
|
||||||
**Reason**: 旧资产操作审计日志交互已由当前审计调查能力替代,页面不再提供重复入口。
|
**Reason**: 旧资产操作审计日志交互已由当前审计调查能力替代,页面不再提供重复入口。 **Migration**: 需要审计调查的用户通过当前审计中心和资源审计时间线访问记录。
|
||||||
**Migration**: 需要审计调查的用户通过当前审计中心和资源审计时间线访问记录。
|
|
||||||
|
|
||||||
#### Scenario: 查看 IoT 卡、设备或资产信息
|
#### Scenario: 查看 IoT 卡、设备或资产信息
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
- Rationale: 创建导出任务属于来源业务列表能力,不应因为拥有某个导出任务管理页面权限就获得业务列表导出入口。
|
- Rationale: 创建导出任务属于来源业务列表能力,不应因为拥有某个导出任务管理页面权限就获得业务列表导出入口。
|
||||||
|
|
||||||
| 入口 | 创建导出任务权限 | scene |
|
| 入口 | 创建导出任务权限 | scene |
|
||||||
| --- | --- | --- |
|
| ---------- | ----------------- | ---------- |
|
||||||
| 设备管理 | `devices:export` | `device` |
|
| 设备管理 | `devices:export` | `device` |
|
||||||
| IOT 卡管理 | `iot_card:export` | `iot_card` |
|
| IOT 卡管理 | `iot_card:export` | `iot_card` |
|
||||||
| 订单列表 | `orders:export` | `order` |
|
| 订单列表 | `orders:export` | `order` |
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ test('agent recharge rejection posts the rejection reason to the order rejection
|
|||||||
code: 0,
|
code: 0,
|
||||||
data: {
|
data: {
|
||||||
methods: ['wechat', 'alipay'],
|
methods: ['wechat', 'alipay'],
|
||||||
min_amount: 10000,
|
min_amount: 10,
|
||||||
max_amount: 100000000
|
max_amount: 100000000
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -279,8 +279,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.package-config-field-label {
|
.package-config-field-label {
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,10 @@
|
|||||||
|
|
||||||
if (props.singleColumnCsv) {
|
if (props.singleColumnCsv) {
|
||||||
const content = await file.text()
|
const content = await file.text()
|
||||||
const rows = content.replace(/^\uFEFF/, '').split(/\r?\n/).filter(Boolean)
|
const rows = content
|
||||||
|
.replace(/^\uFEFF/, '')
|
||||||
|
.split(/\r?\n/)
|
||||||
|
.filter(Boolean)
|
||||||
if (props.maxCsvRows > 0 && Math.max(rows.length - 1, 0) > props.maxCsvRows) {
|
if (props.maxCsvRows > 0 && Math.max(rows.length - 1, 0) > props.maxCsvRows) {
|
||||||
ElMessage.warning(`CSV 数据行不能超过 ${props.maxCsvRows} 行`)
|
ElMessage.warning(`CSV 数据行不能超过 ${props.maxCsvRows} 行`)
|
||||||
removeUploadFile(uploadFile)
|
removeUploadFile(uploadFile)
|
||||||
|
|||||||
@@ -928,8 +928,8 @@
|
|||||||
|
|
||||||
.integration-hero__result {
|
.integration-hero__result {
|
||||||
display: grid;
|
display: grid;
|
||||||
justify-items: end;
|
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
|
justify-items: end;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1008,8 +1008,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.integration-hero {
|
.integration-hero {
|
||||||
align-items: flex-start;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.integration-hero__result {
|
.integration-hero__result {
|
||||||
|
|||||||
@@ -65,10 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 通知 -->
|
<!-- 通知 -->
|
||||||
<div
|
<div class="btn-box notice-btn" @click.stop="showNotice = !showNotice">
|
||||||
class="btn-box notice-btn"
|
|
||||||
@click.stop="showNotice = !showNotice"
|
|
||||||
>
|
|
||||||
<div class="btn notice-button">
|
<div class="btn notice-button">
|
||||||
<i class="iconfont-sys"></i>
|
<i class="iconfont-sys"></i>
|
||||||
<span v-if="unreadCount > 0" class="notice-count">{{ formattedUnreadCount }}</span>
|
<span v-if="unreadCount > 0" class="notice-count">{{ formattedUnreadCount }}</span>
|
||||||
|
|||||||
4
src/types/auto-imports.d.ts
vendored
4
src/types/auto-imports.d.ts
vendored
@@ -8,8 +8,8 @@ export {}
|
|||||||
declare global {
|
declare global {
|
||||||
const EffectScope: typeof import('vue')['EffectScope']
|
const EffectScope: typeof import('vue')['EffectScope']
|
||||||
const ElButton: (typeof import('element-plus/es'))['ElButton']
|
const ElButton: (typeof import('element-plus/es'))['ElButton']
|
||||||
const ElMessage: typeof import('element-plus/es')['ElMessage']
|
const ElMessage: (typeof import('element-plus/es'))['ElMessage']
|
||||||
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
|
const ElMessageBox: (typeof import('element-plus/es'))['ElMessageBox']
|
||||||
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
||||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
||||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
export type ApiErrorKind = 'auth' | 'forbidden' | 'validation' | 'conflict' | 'timeout' | 'server' | 'unknown'
|
export type ApiErrorKind =
|
||||||
|
| 'auth'
|
||||||
|
| 'forbidden'
|
||||||
|
| 'validation'
|
||||||
|
| 'conflict'
|
||||||
|
| 'timeout'
|
||||||
|
| 'server'
|
||||||
|
| 'unknown'
|
||||||
|
|
||||||
export interface NormalizedApiError {
|
export interface NormalizedApiError {
|
||||||
kind: ApiErrorKind
|
kind: ApiErrorKind
|
||||||
@@ -20,12 +27,59 @@ export const normalizeApiError = (error: unknown): NormalizedApiError => {
|
|||||||
const timeout = axios.isAxiosError(error) && error.code === 'ECONNABORTED'
|
const timeout = axios.isAxiosError(error) && error.code === 'ECONNABORTED'
|
||||||
|
|
||||||
if (timeout) {
|
if (timeout) {
|
||||||
return { kind: 'timeout', status, code, message: '请求超时,结果可能未知,请刷新确认', unknownResult: true }
|
return {
|
||||||
|
kind: 'timeout',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: '请求超时,结果可能未知,请刷新确认',
|
||||||
|
unknownResult: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (status === 401 || code === 401)
|
||||||
|
return {
|
||||||
|
kind: 'auth',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: '登录状态已失效,请重新登录',
|
||||||
|
unknownResult: false
|
||||||
|
}
|
||||||
|
if (status === 403)
|
||||||
|
return {
|
||||||
|
kind: 'forbidden',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: '没有执行此操作的权限',
|
||||||
|
unknownResult: false
|
||||||
|
}
|
||||||
|
if (status === 400)
|
||||||
|
return {
|
||||||
|
kind: 'validation',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: backendMessage || '请求参数或业务条件不符合要求',
|
||||||
|
unknownResult: false
|
||||||
|
}
|
||||||
|
if (status === 409)
|
||||||
|
return {
|
||||||
|
kind: 'conflict',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: backendMessage || '数据已发生变化,请刷新后重试',
|
||||||
|
unknownResult: false
|
||||||
|
}
|
||||||
|
if (status && status >= 500)
|
||||||
|
return {
|
||||||
|
kind: 'server',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: '服务器处理失败,请稍后重试',
|
||||||
|
unknownResult: false
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
kind: 'unknown',
|
||||||
|
status,
|
||||||
|
code,
|
||||||
|
message: backendMessage || '操作失败,请稍后重试',
|
||||||
|
unknownResult: false
|
||||||
}
|
}
|
||||||
if (status === 401 || code === 401) return { kind: 'auth', status, code, message: '登录状态已失效,请重新登录', unknownResult: false }
|
|
||||||
if (status === 403) return { kind: 'forbidden', status, code, message: '没有执行此操作的权限', unknownResult: false }
|
|
||||||
if (status === 400) return { kind: 'validation', status, code, message: backendMessage || '请求参数或业务条件不符合要求', unknownResult: false }
|
|
||||||
if (status === 409) return { kind: 'conflict', status, code, message: backendMessage || '数据已发生变化,请刷新后重试', unknownResult: false }
|
|
||||||
if (status && status >= 500) return { kind: 'server', status, code, message: '服务器处理失败,请稍后重试', unknownResult: false }
|
|
||||||
return { kind: 'unknown', status, code, message: backendMessage || '操作失败,请稍后重试', unknownResult: false }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ export const getApprovalStatusText = (summary: ApprovalSummary): string => {
|
|||||||
summary.approval_provider === 'wecom' ||
|
summary.approval_provider === 'wecom' ||
|
||||||
summary.approval_instance_id
|
summary.approval_instance_id
|
||||||
) {
|
) {
|
||||||
return summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
|
return (
|
||||||
|
summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return '-'
|
return '-'
|
||||||
}
|
}
|
||||||
@@ -27,7 +29,8 @@ export const getCurrentApproverSummaryText = (summary: ApprovalSummary): string
|
|||||||
summary.approval_source !== 'wecom' &&
|
summary.approval_source !== 'wecom' &&
|
||||||
summary.approval_provider !== 'wecom' &&
|
summary.approval_provider !== 'wecom' &&
|
||||||
!summary.approval_instance_id
|
!summary.approval_instance_id
|
||||||
) return '-'
|
)
|
||||||
|
return '-'
|
||||||
return summary.current_approver_summary || '-'
|
return summary.current_approver_summary || '-'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,10 @@ export const getPaymentMerchantId = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getPaymentNotifyUrl = (
|
export const getPaymentNotifyUrl = (
|
||||||
config: Pick<PaymentSettings, 'provider_type' | 'wx_notify_url' | 'fy_notify_url' | 'ali_notify_url'>
|
config: Pick<
|
||||||
|
PaymentSettings,
|
||||||
|
'provider_type' | 'wx_notify_url' | 'fy_notify_url' | 'ali_notify_url'
|
||||||
|
>
|
||||||
): string => {
|
): string => {
|
||||||
if (config.provider_type === 'wechat' || config.provider_type === 'wechat_v2') {
|
if (config.provider_type === 'wechat' || config.provider_type === 'wechat_v2') {
|
||||||
return config.wx_notify_url || '-'
|
return config.wx_notify_url || '-'
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
<!--suppress ALL -->
|
||||||
<template>
|
<template>
|
||||||
<ArtTableFullScreen>
|
<ArtTableFullScreen>
|
||||||
<div class="account-page" id="table-full-screen">
|
<div class="account-page" id="table-full-screen">
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
@refresh="handleRefresh"
|
@refresh="handleRefresh"
|
||||||
>
|
>
|
||||||
<template #left>
|
<template #left>
|
||||||
|
<!--suppress VueUnrecognizedDirective -->
|
||||||
<ElButton @click="showDialog('add')" v-permission="'enterprise_customer:add'"
|
<ElButton @click="showDialog('add')" v-permission="'enterprise_customer:add'"
|
||||||
>新增企业客户</ElButton
|
>新增企业客户</ElButton
|
||||||
>
|
>
|
||||||
@@ -807,7 +808,7 @@
|
|||||||
|
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
formEl.resetFields()
|
formEl.resetFields()
|
||||||
getTableData()
|
await getTableData()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -515,6 +515,7 @@
|
|||||||
</ElButton>
|
</ElButton>
|
||||||
<!--<ElButton type="danger" v-permission="'iot_info:handler_stop'" @click="handleManualDeactivate"> 手动停用 </ElButton>-->
|
<!--<ElButton type="danger" v-permission="'iot_info:handler_stop'" @click="handleManualDeactivate"> 手动停用 </ElButton>-->
|
||||||
<!-- 手动停用暂时不开放 -->
|
<!-- 手动停用暂时不开放 -->
|
||||||
|
<!--suppress VueUnrecognizedDirective -->
|
||||||
<ElButton
|
<ElButton
|
||||||
v-if="canShowRealnamePolicy"
|
v-if="canShowRealnamePolicy"
|
||||||
v-permission="'asset:card_realname_policy'"
|
v-permission="'asset:card_realname_policy'"
|
||||||
|
|||||||
@@ -444,7 +444,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.wallet-table {
|
.wallet-table {
|
||||||
|
|
||||||
:deep(.el-table__header) {
|
:deep(.el-table__header) {
|
||||||
th {
|
th {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
@@ -1828,9 +1828,9 @@
|
|||||||
.exchange-field-error {
|
.exchange-field-error {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
color: var(--el-color-danger);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
|
color: var(--el-color-danger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -310,8 +310,8 @@
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
vertical-align: bottom;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
vertical-align: bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-error {
|
.task-error {
|
||||||
|
|||||||
@@ -623,9 +623,9 @@
|
|||||||
.bulk-purchase-page {
|
.bulk-purchase-page {
|
||||||
.task-list-header {
|
.task-list-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 12px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-list-toolbar {
|
.task-list-toolbar {
|
||||||
@@ -670,10 +670,10 @@
|
|||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (width <= 768px) {
|
||||||
.task-list-header {
|
.task-list-header {
|
||||||
align-items: flex-start;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-list-toolbar {
|
.task-list-toolbar {
|
||||||
|
|||||||
@@ -546,16 +546,16 @@
|
|||||||
.device-batch-allocation-page {
|
.device-batch-allocation-page {
|
||||||
.task-list-header {
|
.task-list-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-list-toolbar {
|
.task-list-toolbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: flex-end;
|
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination-wrapper {
|
.pagination-wrapper {
|
||||||
@@ -566,14 +566,14 @@
|
|||||||
|
|
||||||
.drawer-footer {
|
.drawer-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
@media (width <= 900px) {
|
||||||
.task-list-header {
|
.task-list-header {
|
||||||
align-items: flex-start;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-list-toolbar {
|
.task-list-toolbar {
|
||||||
|
|||||||
@@ -620,8 +620,8 @@
|
|||||||
.device-task-page {
|
.device-task-page {
|
||||||
.task-polling-error {
|
.task-polling-error {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
align-items: center;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -452,7 +452,7 @@
|
|||||||
<style scoped>
|
<style scoped>
|
||||||
.drawer-footer {
|
.drawer-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -355,8 +355,8 @@
|
|||||||
.task-detail-page {
|
.task-detail-page {
|
||||||
.detail-header {
|
.detail-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
|
align-items: center;
|
||||||
padding-bottom: 16px;
|
padding-bottom: 16px;
|
||||||
|
|
||||||
.detail-title {
|
.detail-title {
|
||||||
|
|||||||
@@ -329,8 +329,8 @@
|
|||||||
|
|
||||||
.resource-snapshot-diff {
|
.resource-snapshot-diff {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-column: 1 / -1;
|
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
grid-column: 1 / -1;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -979,15 +979,15 @@
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.commission-summary {
|
.commission-summary {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 8px 14px;
|
gap: 8px 14px;
|
||||||
|
align-items: center;
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
|
|
||||||
.commission-summary-item {
|
.commission-summary-item {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
align-items: center;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
background: var(--el-color-primary-light-9);
|
background: var(--el-color-primary-light-9);
|
||||||
|
|||||||
@@ -46,7 +46,6 @@
|
|||||||
<!-- <TransactionList />-->
|
<!-- <TransactionList />-->
|
||||||
<!-- </el-col>-->
|
<!-- </el-col>-->
|
||||||
<!--</el-row>-->
|
<!--</el-row>-->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -385,9 +385,11 @@
|
|||||||
const qrContent = ref('')
|
const qrContent = ref('')
|
||||||
const onlineRequestId = ref<string | null>(null)
|
const onlineRequestId = ref<string | null>(null)
|
||||||
const paymentStatusTimer = ref<ReturnType<typeof setInterval> | null>(null)
|
const paymentStatusTimer = ref<ReturnType<typeof setInterval> | null>(null)
|
||||||
|
const ONLINE_MIN_RECHARGE_AMOUNT_FEN = 10
|
||||||
|
const ONLINE_MAX_RECHARGE_AMOUNT_FEN = 100000000
|
||||||
const paymentMethodsBounds = reactive({
|
const paymentMethodsBounds = reactive({
|
||||||
min_amount: 10000,
|
min_amount: ONLINE_MIN_RECHARGE_AMOUNT_FEN,
|
||||||
max_amount: 100000000
|
max_amount: ONLINE_MAX_RECHARGE_AMOUNT_FEN
|
||||||
})
|
})
|
||||||
const paymentVoucherFileKeys = ref<string[]>([])
|
const paymentVoucherFileKeys = ref<string[]>([])
|
||||||
|
|
||||||
@@ -1013,8 +1015,9 @@
|
|||||||
const res = await AgentRechargeService.getPaymentMethods()
|
const res = await AgentRechargeService.getPaymentMethods()
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
onlinePaymentMethods.value = Array.isArray(res.data?.methods) ? res.data.methods : []
|
onlinePaymentMethods.value = Array.isArray(res.data?.methods) ? res.data.methods : []
|
||||||
paymentMethodsBounds.min_amount = Number(res.data?.min_amount) || 10000
|
paymentMethodsBounds.min_amount = ONLINE_MIN_RECHARGE_AMOUNT_FEN
|
||||||
paymentMethodsBounds.max_amount = Number(res.data?.max_amount) || 100000000
|
paymentMethodsBounds.max_amount =
|
||||||
|
Number(res.data?.max_amount) || ONLINE_MAX_RECHARGE_AMOUNT_FEN
|
||||||
createForm.amount = minimumAmountYuan.value
|
createForm.amount = minimumAmountYuan.value
|
||||||
} else {
|
} else {
|
||||||
ElMessage.warning(res.msg || '当前暂无可用在线支付方式')
|
ElMessage.warning(res.msg || '当前暂无可用在线支付方式')
|
||||||
@@ -1366,16 +1369,16 @@
|
|||||||
|
|
||||||
.online-recharge-empty-hint {
|
.online-recharge-empty-hint {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
color: var(--el-color-danger);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
|
color: var(--el-color-danger);
|
||||||
}
|
}
|
||||||
|
|
||||||
.online-recharge-qr-dialog {
|
.online-recharge-qr-dialog {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
&__code-surface {
|
&__code-surface {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1391,11 +1394,11 @@
|
|||||||
&__summary {
|
&__summary {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: var(--el-text-color-regular);
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
color: var(--el-text-color-regular);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1404,8 +1407,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__loading {
|
&__loading {
|
||||||
color: var(--el-color-primary);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
color: var(--el-color-primary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -2011,20 +2011,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.package-name {
|
.package-name {
|
||||||
grid-column: 1 / 3;
|
|
||||||
grid-row: 1;
|
grid-row: 1;
|
||||||
|
grid-column: 1 / 3;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
border-bottom: 1px solid var(--el-border-color-lighter);
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: var(--el-text-color-regular);
|
color: var(--el-text-color-regular);
|
||||||
|
border-bottom: 1px solid var(--el-border-color-lighter);
|
||||||
}
|
}
|
||||||
|
|
||||||
.cost-price-input-wrapper {
|
.cost-price-input-wrapper {
|
||||||
grid-column: 1;
|
|
||||||
grid-row: 2;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
grid-row: 2;
|
||||||
|
grid-column: 1;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -2041,20 +2041,20 @@
|
|||||||
|
|
||||||
.min-cost-hint {
|
.min-cost-hint {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.expiry-base-input-wrapper {
|
.expiry-base-input-wrapper {
|
||||||
grid-column: 2;
|
|
||||||
grid-row: 2;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
grid-row: 2;
|
||||||
|
grid-column: 2;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
min-width: 0;
|
|
||||||
width: 100%;
|
|
||||||
align-self: start;
|
align-self: start;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
.expiry-base-label {
|
.expiry-base-label {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@@ -2069,10 +2069,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-button) {
|
:deep(.el-button) {
|
||||||
grid-column: 3;
|
|
||||||
grid-row: 1;
|
grid-row: 1;
|
||||||
align-self: start;
|
grid-column: 3;
|
||||||
justify-self: end;
|
place-self: start end;
|
||||||
width: 56px;
|
width: 56px;
|
||||||
padding-right: 8px;
|
padding-right: 8px;
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
@@ -2090,18 +2089,18 @@
|
|||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
|
||||||
.expiry-base-input-wrapper {
|
.expiry-base-input-wrapper {
|
||||||
grid-column: 1 / -1;
|
|
||||||
grid-row: 3;
|
grid-row: 3;
|
||||||
|
grid-column: 1 / -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cost-price-input-wrapper {
|
.cost-price-input-wrapper {
|
||||||
grid-column: 1 / -1;
|
|
||||||
grid-row: 2;
|
grid-row: 2;
|
||||||
|
grid-column: 1 / -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-button) {
|
:deep(.el-button) {
|
||||||
grid-column: 3;
|
|
||||||
grid-row: 1;
|
grid-row: 1;
|
||||||
|
grid-column: 3;
|
||||||
justify-self: start;
|
justify-self: start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,8 +207,8 @@
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.dialog-description {
|
.dialog-description {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.application-form {
|
.application-form {
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
|
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -267,8 +267,8 @@
|
|||||||
:deep(> .el-card__body) {
|
:deep(> .el-card__body) {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 24px;
|
padding-bottom: 24px;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,10 +303,10 @@
|
|||||||
|
|
||||||
:deep(.el-card__body) {
|
:deep(.el-card__body) {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: auto;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: auto;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -318,41 +318,41 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.member-card__header {
|
.member-card__header {
|
||||||
justify-content: space-between;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-card__identity {
|
.member-card__identity {
|
||||||
display: flex;
|
display: flex;
|
||||||
min-width: 0;
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-card__avatar {
|
.member-card__avatar {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
font-weight: 600;
|
||||||
color: var(--el-color-primary);
|
color: var(--el-color-primary);
|
||||||
background: var(--el-color-primary-light-9);
|
background: var(--el-color-primary-light-9);
|
||||||
font-weight: 600;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-card__name {
|
.member-card__name {
|
||||||
min-width: 0;
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
color: var(--el-text-color-primary);
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
color: var(--el-text-color-primary);
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-card__info {
|
.member-card__info {
|
||||||
justify-content: space-between;
|
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
color: var(--el-text-color-regular);
|
justify-content: space-between;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
color: var(--el-text-color-regular);
|
||||||
|
|
||||||
span:last-child {
|
span:last-child {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
@@ -381,19 +381,19 @@
|
|||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1400px) {
|
@media (width <= 1400px) {
|
||||||
.member-grid {
|
.member-grid {
|
||||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1024px) {
|
@media (width <= 1024px) {
|
||||||
.member-grid {
|
.member-grid {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (width <= 640px) {
|
||||||
.member-grid {
|
.member-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -502,9 +502,9 @@
|
|||||||
|
|
||||||
.dialog-section {
|
.dialog-section {
|
||||||
padding: 18px 20px;
|
padding: 18px 20px;
|
||||||
|
background: var(--el-fill-color-blank);
|
||||||
border: 1px solid var(--el-border-color-lighter);
|
border: 1px solid var(--el-border-color-lighter);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background: var(--el-fill-color-blank);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-section + .dialog-section {
|
.dialog-section + .dialog-section {
|
||||||
@@ -513,22 +513,22 @@
|
|||||||
|
|
||||||
.dialog-section__header {
|
.dialog-section__header {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 16px;
|
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-section__title {
|
.dialog-section__title {
|
||||||
color: var(--el-text-color-primary);
|
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
color: var(--el-text-color-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-section__description {
|
.dialog-section__description {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mapping-tip {
|
.mapping-tip {
|
||||||
@@ -540,8 +540,8 @@
|
|||||||
.template-name {
|
.template-name {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
@@ -556,19 +556,19 @@
|
|||||||
|
|
||||||
.mapping-list {
|
.mapping-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
max-height: 420px;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
overflow-y: auto;
|
max-height: 420px;
|
||||||
padding: 0 4px 4px;
|
padding: 0 4px 4px;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mapping-row {
|
.mapping-row {
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
border: 1px solid var(--el-border-color-lighter);
|
|
||||||
border-radius: 6px;
|
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
background: var(--el-fill-color-blank);
|
background: var(--el-fill-color-blank);
|
||||||
|
border: 1px solid var(--el-border-color-lighter);
|
||||||
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mapping-row__grid {
|
.mapping-row__grid {
|
||||||
@@ -579,31 +579,31 @@
|
|||||||
|
|
||||||
.mapping-field {
|
.mapping-field {
|
||||||
display: flex;
|
display: flex;
|
||||||
min-width: 0;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mapping-field__label {
|
.mapping-field__label {
|
||||||
color: var(--el-text-color-secondary);
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (width <= 768px) {
|
||||||
.dialog-section {
|
.dialog-section {
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-section__header {
|
.dialog-section__header {
|
||||||
align-items: stretch;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
align-items: stretch;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mapping-tip {
|
.mapping-tip {
|
||||||
@@ -617,13 +617,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1200px) {
|
@media (width <= 1200px) {
|
||||||
.mapping-row__grid {
|
.mapping-row__grid {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (width <= 768px) {
|
||||||
:deep(.wecom-scene-dialog) {
|
:deep(.wecom-scene-dialog) {
|
||||||
width: calc(100vw - 32px) !important;
|
width: calc(100vw - 32px) !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,20 +16,30 @@
|
|||||||
<ElDescriptionsItem label="店铺名称">{{ shop.shop_name || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="店铺名称">{{ shop.shop_name || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="店铺编号">{{ shop.shop_code || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="店铺编号">{{ shop.shop_code || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="店铺层级">{{ shop.level }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="店铺层级">{{ shop.level }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="上级店铺">{{ shop.parent_shop_name || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="上级店铺">{{
|
||||||
|
shop.parent_shop_name || '-'
|
||||||
|
}}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="联系人">{{ shop.contact_name || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="联系人">{{ shop.contact_name || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="联系电话">{{ shop.contact_phone || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="联系电话">{{ shop.contact_phone || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="平台业务员">
|
<ElDescriptionsItem label="平台业务员">
|
||||||
{{ formatBusinessOwner(shop) }}
|
{{ formatBusinessOwner(shop) }}
|
||||||
</ElDescriptionsItem>
|
</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="业务员通知状态">
|
<ElDescriptionsItem label="业务员通知状态">
|
||||||
{{ shop.business_owner_account_id ? (shop.business_owner_available ? '可用' : '已停用') : '-' }}
|
{{
|
||||||
|
shop.business_owner_account_id
|
||||||
|
? shop.business_owner_available
|
||||||
|
? '可用'
|
||||||
|
: '已停用'
|
||||||
|
: '-'
|
||||||
|
}}
|
||||||
</ElDescriptionsItem>
|
</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="省份">{{ shop.province || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="省份">{{ shop.province || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="城市">{{ shop.city || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="城市">{{ shop.city || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="区县">{{ shop.district || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="区县">{{ shop.district || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="详细地址">{{ shop.address || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="详细地址">{{ shop.address || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="状态">{{ shop.status_name || shop.status }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="状态">{{
|
||||||
|
shop.status_name || shop.status
|
||||||
|
}}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="创建时间">{{ shop.created_at || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="创建时间">{{ shop.created_at || '-' }}</ElDescriptionsItem>
|
||||||
<ElDescriptionsItem label="更新时间">{{ shop.updated_at || '-' }}</ElDescriptionsItem>
|
<ElDescriptionsItem label="更新时间">{{ shop.updated_at || '-' }}</ElDescriptionsItem>
|
||||||
</ElDescriptions>
|
</ElDescriptions>
|
||||||
|
|||||||
@@ -88,7 +88,6 @@
|
|||||||
/>
|
/>
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
<ElFormItem label="默认信用额度">
|
<ElFormItem label="默认信用额度">
|
||||||
<div class="credit-form-unit">单位:元</div>
|
|
||||||
<ElInputNumber
|
<ElInputNumber
|
||||||
v-model="form.credit_limit_yuan"
|
v-model="form.credit_limit_yuan"
|
||||||
:disabled="!form.credit_enabled"
|
:disabled="!form.credit_enabled"
|
||||||
@@ -101,7 +100,7 @@
|
|||||||
:formatter="formatCreditInput"
|
:formatter="formatCreditInput"
|
||||||
:parser="parseCreditInput"
|
:parser="parseCreditInput"
|
||||||
/>
|
/>
|
||||||
<div class="credit-form-tip">修改后不会影响已有店铺</div>
|
<div class="credit-form-tip">单位:元,修改后不会影响已有店铺</div>
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</template>
|
</template>
|
||||||
</ElForm>
|
</ElForm>
|
||||||
|
|||||||
Reference in New Issue
Block a user