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: 旧资产操作审计日志入口
|
||||
|
||||
**Reason**: 旧资产操作审计日志交互已由当前审计调查能力替代,页面不再提供重复入口。
|
||||
**Migration**: 需要审计调查的用户通过当前审计中心和资源审计时间线访问记录。
|
||||
**Reason**: 旧资产操作审计日志交互已由当前审计调查能力替代,页面不再提供重复入口。 **Migration**: 需要审计调查的用户通过当前审计中心和资源审计时间线访问记录。
|
||||
|
||||
#### Scenario: 查看 IoT 卡、设备或资产信息
|
||||
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
- Decision: 业务列表创建导出任务按钮继续使用来源业务权限,默认建议如下。
|
||||
- Rationale: 创建导出任务属于来源业务列表能力,不应因为拥有某个导出任务管理页面权限就获得业务列表导出入口。
|
||||
|
||||
| 入口 | 创建导出任务权限 | scene |
|
||||
| --- | --- | --- |
|
||||
| 设备管理 | `devices:export` | `device` |
|
||||
| 入口 | 创建导出任务权限 | scene |
|
||||
| ---------- | ----------------- | ---------- |
|
||||
| 设备管理 | `devices:export` | `device` |
|
||||
| IOT 卡管理 | `iot_card:export` | `iot_card` |
|
||||
| 订单列表 | `orders:export` | `order` |
|
||||
| 订单列表 | `orders:export` | `order` |
|
||||
|
||||
- Decision: 详情页可继续复用同一组件,但必须根据任务场景或来源页面使用对应场景的详情、下载、取消权限。
|
||||
- Rationale: 详情页面本身也包含下载和取消按钮,若继续使用通用权限会绕过三个列表页面的按钮隔离要求。
|
||||
|
||||
@@ -27,7 +27,7 @@ test('agent recharge rejection posts the rejection reason to the order rejection
|
||||
code: 0,
|
||||
data: {
|
||||
methods: ['wechat', 'alipay'],
|
||||
min_amount: 10000,
|
||||
min_amount: 10,
|
||||
max_amount: 100000000
|
||||
}
|
||||
})
|
||||
|
||||
@@ -279,8 +279,8 @@
|
||||
}
|
||||
|
||||
.package-config-field-label {
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 13px;
|
||||
color: var(--el-text-color-secondary);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
import { Close, Document, UploadFilled } from '@element-plus/icons-vue'
|
||||
import type { UploadFile, UploadInstance, UploadRawFile } from 'element-plus'
|
||||
import { StorageService } from '@/api/modules'
|
||||
import type { RefundAttachment } from '@/types/api/refund'
|
||||
import type { FilePurpose } from '@/api/modules/storage'
|
||||
import type { RefundAttachment } from '@/types/api/refund'
|
||||
import type { FilePurpose } from '@/api/modules/storage'
|
||||
|
||||
interface Props {
|
||||
modelValue?: string[] | string
|
||||
@@ -202,7 +202,10 @@
|
||||
|
||||
if (props.singleColumnCsv) {
|
||||
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) {
|
||||
ElMessage.warning(`CSV 数据行不能超过 ${props.maxCsvRows} 行`)
|
||||
removeUploadFile(uploadFile)
|
||||
@@ -250,7 +253,7 @@
|
||||
const uploadUrlRes = await StorageService.getUploadUrl({
|
||||
file_name: file.name,
|
||||
content_type: contentType,
|
||||
purpose: props.purpose
|
||||
purpose: props.purpose
|
||||
})
|
||||
|
||||
if (uploadUrlRes.code !== 0) {
|
||||
|
||||
@@ -928,8 +928,8 @@
|
||||
|
||||
.integration-hero__result {
|
||||
display: grid;
|
||||
justify-items: end;
|
||||
gap: 5px;
|
||||
justify-items: end;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@@ -1008,8 +1008,8 @@
|
||||
}
|
||||
|
||||
.integration-hero {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.integration-hero__result {
|
||||
|
||||
@@ -65,10 +65,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- 通知 -->
|
||||
<div
|
||||
class="btn-box notice-btn"
|
||||
@click.stop="showNotice = !showNotice"
|
||||
>
|
||||
<div class="btn-box notice-btn" @click.stop="showNotice = !showNotice">
|
||||
<div class="btn notice-button">
|
||||
<i class="iconfont-sys"></i>
|
||||
<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 {
|
||||
const EffectScope: typeof import('vue')['EffectScope']
|
||||
const ElButton: (typeof import('element-plus/es'))['ElButton']
|
||||
const ElMessage: typeof import('element-plus/es')['ElMessage']
|
||||
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
|
||||
const ElMessage: (typeof import('element-plus/es'))['ElMessage']
|
||||
const ElMessageBox: (typeof import('element-plus/es'))['ElMessageBox']
|
||||
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
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 {
|
||||
kind: ApiErrorKind
|
||||
@@ -20,12 +27,59 @@ export const normalizeApiError = (error: unknown): NormalizedApiError => {
|
||||
const timeout = axios.isAxiosError(error) && error.code === 'ECONNABORTED'
|
||||
|
||||
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_instance_id
|
||||
) {
|
||||
return summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
|
||||
return (
|
||||
summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
|
||||
)
|
||||
}
|
||||
return '-'
|
||||
}
|
||||
@@ -27,7 +29,8 @@ export const getCurrentApproverSummaryText = (summary: ApprovalSummary): string
|
||||
summary.approval_source !== 'wecom' &&
|
||||
summary.approval_provider !== 'wecom' &&
|
||||
!summary.approval_instance_id
|
||||
) return '-'
|
||||
)
|
||||
return '-'
|
||||
return summary.current_approver_summary || '-'
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,10 @@ export const getPaymentMerchantId = (
|
||||
}
|
||||
|
||||
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 => {
|
||||
if (config.provider_type === 'wechat' || config.provider_type === 'wechat_v2') {
|
||||
return config.wx_notify_url || '-'
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--suppress ALL -->
|
||||
<template>
|
||||
<ArtTableFullScreen>
|
||||
<div class="account-page" id="table-full-screen">
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
@refresh="handleRefresh"
|
||||
>
|
||||
<template #left>
|
||||
<!--suppress VueUnrecognizedDirective -->
|
||||
<ElButton @click="showDialog('add')" v-permission="'enterprise_customer:add'"
|
||||
>新增企业客户</ElButton
|
||||
>
|
||||
@@ -807,7 +808,7 @@
|
||||
|
||||
dialogVisible.value = false
|
||||
formEl.resetFields()
|
||||
getTableData()
|
||||
await getTableData()
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
} finally {
|
||||
|
||||
@@ -515,6 +515,7 @@
|
||||
</ElButton>
|
||||
<!--<ElButton type="danger" v-permission="'iot_info:handler_stop'" @click="handleManualDeactivate"> 手动停用 </ElButton>-->
|
||||
<!-- 手动停用暂时不开放 -->
|
||||
<!--suppress VueUnrecognizedDirective -->
|
||||
<ElButton
|
||||
v-if="canShowRealnamePolicy"
|
||||
v-permission="'asset:card_realname_policy'"
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
<div v-else v-loading="loading" class="wallet-table-wrapper">
|
||||
<ElTable v-if="hasTransactions" :data="transactionList" class="wallet-table" border>
|
||||
<ElTableColumn prop="reference_no" label="业务编号" show-overflow-tooltip>
|
||||
<ElTableColumn prop="reference_no" label="业务编号" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.reference_no" class="reference-no-link">
|
||||
{{ scope.row.reference_no }}
|
||||
@@ -444,7 +444,6 @@
|
||||
}
|
||||
|
||||
.wallet-table {
|
||||
|
||||
:deep(.el-table__header) {
|
||||
th {
|
||||
font-weight: 600;
|
||||
|
||||
@@ -1828,9 +1828,9 @@
|
||||
.exchange-field-error {
|
||||
width: 100%;
|
||||
margin-top: 4px;
|
||||
color: var(--el-color-danger);
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
color: var(--el-color-danger);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -310,8 +310,8 @@
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: bottom;
|
||||
white-space: nowrap;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.task-error {
|
||||
|
||||
@@ -623,9 +623,9 @@
|
||||
.bulk-purchase-page {
|
||||
.task-list-header {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.task-list-toolbar {
|
||||
@@ -670,10 +670,10 @@
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
@media (width <= 768px) {
|
||||
.task-list-header {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.task-list-toolbar {
|
||||
|
||||
@@ -546,16 +546,16 @@
|
||||
.device-batch-allocation-page {
|
||||
.task-list-header {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.task-list-toolbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.pagination-wrapper {
|
||||
@@ -566,14 +566,14 @@
|
||||
|
||||
.drawer-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 12px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
@media (width <= 900px) {
|
||||
.task-list-header {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.task-list-toolbar {
|
||||
|
||||
@@ -620,8 +620,8 @@
|
||||
.device-task-page {
|
||||
.task-polling-error {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
|
||||
@@ -452,7 +452,7 @@
|
||||
<style scoped>
|
||||
.drawer-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 12px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -355,8 +355,8 @@
|
||||
.task-detail-page {
|
||||
.detail-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
padding-bottom: 16px;
|
||||
|
||||
.detail-title {
|
||||
|
||||
@@ -329,8 +329,8 @@
|
||||
|
||||
.resource-snapshot-diff {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-column: 1 / -1;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
|
||||
@@ -979,15 +979,15 @@
|
||||
<style scoped lang="scss">
|
||||
.commission-summary {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px 14px;
|
||||
align-items: center;
|
||||
margin-left: 12px;
|
||||
|
||||
.commission-summary-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
padding: 5px 10px;
|
||||
white-space: nowrap;
|
||||
background: var(--el-color-primary-light-9);
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
<!-- <TransactionList />-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -385,9 +385,11 @@
|
||||
const qrContent = ref('')
|
||||
const onlineRequestId = ref<string | 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({
|
||||
min_amount: 10000,
|
||||
max_amount: 100000000
|
||||
min_amount: ONLINE_MIN_RECHARGE_AMOUNT_FEN,
|
||||
max_amount: ONLINE_MAX_RECHARGE_AMOUNT_FEN
|
||||
})
|
||||
const paymentVoucherFileKeys = ref<string[]>([])
|
||||
|
||||
@@ -1013,8 +1015,9 @@
|
||||
const res = await AgentRechargeService.getPaymentMethods()
|
||||
if (res.code === 0) {
|
||||
onlinePaymentMethods.value = Array.isArray(res.data?.methods) ? res.data.methods : []
|
||||
paymentMethodsBounds.min_amount = Number(res.data?.min_amount) || 10000
|
||||
paymentMethodsBounds.max_amount = Number(res.data?.max_amount) || 100000000
|
||||
paymentMethodsBounds.min_amount = ONLINE_MIN_RECHARGE_AMOUNT_FEN
|
||||
paymentMethodsBounds.max_amount =
|
||||
Number(res.data?.max_amount) || ONLINE_MAX_RECHARGE_AMOUNT_FEN
|
||||
createForm.amount = minimumAmountYuan.value
|
||||
} else {
|
||||
ElMessage.warning(res.msg || '当前暂无可用在线支付方式')
|
||||
@@ -1366,16 +1369,16 @@
|
||||
|
||||
.online-recharge-empty-hint {
|
||||
margin-top: 8px;
|
||||
color: var(--el-color-danger);
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
color: var(--el-color-danger);
|
||||
}
|
||||
|
||||
.online-recharge-qr-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
|
||||
&__code-surface {
|
||||
display: flex;
|
||||
@@ -1391,11 +1394,11 @@
|
||||
&__summary {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
color: var(--el-text-color-regular);
|
||||
font-size: 14px;
|
||||
color: var(--el-text-color-regular);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@@ -1404,8 +1407,8 @@
|
||||
}
|
||||
|
||||
&__loading {
|
||||
color: var(--el-color-primary);
|
||||
font-size: 12px;
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2011,20 +2011,20 @@
|
||||
}
|
||||
|
||||
.package-name {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 1;
|
||||
grid-column: 1 / 3;
|
||||
min-width: 0;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 1px solid var(--el-border-color-lighter);
|
||||
font-size: 14px;
|
||||
color: var(--el-text-color-regular);
|
||||
border-bottom: 1px solid var(--el-border-color-lighter);
|
||||
}
|
||||
|
||||
.cost-price-input-wrapper {
|
||||
grid-column: 1;
|
||||
grid-row: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
grid-row: 2;
|
||||
grid-column: 1;
|
||||
gap: 6px;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
@@ -2041,20 +2041,20 @@
|
||||
|
||||
.min-cost-hint {
|
||||
font-size: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
line-height: 1.4;
|
||||
color: var(--el-text-color-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
.expiry-base-input-wrapper {
|
||||
grid-column: 2;
|
||||
grid-row: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
grid-row: 2;
|
||||
grid-column: 2;
|
||||
gap: 8px;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
align-self: start;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
|
||||
.expiry-base-label {
|
||||
font-size: 13px;
|
||||
@@ -2069,10 +2069,9 @@
|
||||
}
|
||||
|
||||
:deep(.el-button) {
|
||||
grid-column: 3;
|
||||
grid-row: 1;
|
||||
align-self: start;
|
||||
justify-self: end;
|
||||
grid-column: 3;
|
||||
place-self: start end;
|
||||
width: 56px;
|
||||
padding-right: 8px;
|
||||
padding-left: 8px;
|
||||
@@ -2090,18 +2089,18 @@
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
.expiry-base-input-wrapper {
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 3;
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.cost-price-input-wrapper {
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 2;
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
:deep(.el-button) {
|
||||
grid-column: 3;
|
||||
grid-row: 1;
|
||||
grid-column: 3;
|
||||
justify-self: start;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,8 +207,8 @@
|
||||
<style scoped lang="scss">
|
||||
.dialog-description {
|
||||
margin-bottom: 20px;
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 13px;
|
||||
color: var(--el-text-color-secondary);
|
||||
}
|
||||
|
||||
.application-form {
|
||||
@@ -221,7 +221,7 @@
|
||||
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 12px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -267,8 +267,8 @@
|
||||
:deep(> .el-card__body) {
|
||||
box-sizing: border-box;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
padding-bottom: 24px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -303,10 +303,10 @@
|
||||
|
||||
:deep(.el-card__body) {
|
||||
display: flex;
|
||||
height: auto;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
justify-content: space-between;
|
||||
height: auto;
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
@@ -318,41 +318,41 @@
|
||||
}
|
||||
|
||||
.member-card__header {
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.member-card__identity {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.member-card__avatar {
|
||||
flex-shrink: 0;
|
||||
font-weight: 600;
|
||||
color: var(--el-color-primary);
|
||||
background: var(--el-color-primary-light-9);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.member-card__name {
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
color: var(--el-text-color-primary);
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: var(--el-text-color-primary);
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.member-card__info {
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
color: var(--el-text-color-regular);
|
||||
justify-content: space-between;
|
||||
font-size: 13px;
|
||||
color: var(--el-text-color-regular);
|
||||
|
||||
span:last-child {
|
||||
min-width: 0;
|
||||
@@ -381,19 +381,19 @@
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
@media (width <= 1400px) {
|
||||
.member-grid {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (width <= 1024px) {
|
||||
.member-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
@media (width <= 640px) {
|
||||
.member-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
@@ -502,9 +502,9 @@
|
||||
|
||||
.dialog-section {
|
||||
padding: 18px 20px;
|
||||
background: var(--el-fill-color-blank);
|
||||
border: 1px solid var(--el-border-color-lighter);
|
||||
border-radius: 8px;
|
||||
background: var(--el-fill-color-blank);
|
||||
}
|
||||
|
||||
.dialog-section + .dialog-section {
|
||||
@@ -513,22 +513,22 @@
|
||||
|
||||
.dialog-section__header {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.dialog-section__title {
|
||||
color: var(--el-text-color-primary);
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: var(--el-text-color-primary);
|
||||
}
|
||||
|
||||
.dialog-section__description {
|
||||
margin-top: 4px;
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
}
|
||||
|
||||
.mapping-tip {
|
||||
@@ -540,8 +540,8 @@
|
||||
.template-name {
|
||||
margin-top: 6px;
|
||||
overflow: hidden;
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
@@ -556,19 +556,19 @@
|
||||
|
||||
.mapping-list {
|
||||
display: flex;
|
||||
max-height: 420px;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
overflow-y: auto;
|
||||
max-height: 420px;
|
||||
padding: 0 4px 4px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.mapping-row {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--el-border-color-lighter);
|
||||
border-radius: 6px;
|
||||
margin-top: 6px;
|
||||
background: var(--el-fill-color-blank);
|
||||
border: 1px solid var(--el-border-color-lighter);
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.mapping-row__grid {
|
||||
@@ -579,31 +579,31 @@
|
||||
|
||||
.mapping-field {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.mapping-field__label {
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 12px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
@media (width <= 768px) {
|
||||
.dialog-section {
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.dialog-section__header {
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.mapping-tip {
|
||||
@@ -617,13 +617,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
@media (width <= 1200px) {
|
||||
.mapping-row__grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
@media (width <= 768px) {
|
||||
:deep(.wecom-scene-dialog) {
|
||||
width: calc(100vw - 32px) !important;
|
||||
}
|
||||
|
||||
@@ -16,20 +16,30 @@
|
||||
<ElDescriptionsItem label="店铺名称">{{ shop.shop_name || '-' }}</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="店铺编号">{{ shop.shop_code || '-' }}</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_phone || '-' }}</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="平台业务员">
|
||||
{{ formatBusinessOwner(shop) }}
|
||||
</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="业务员通知状态">
|
||||
{{ shop.business_owner_account_id ? (shop.business_owner_available ? '可用' : '已停用') : '-' }}
|
||||
{{
|
||||
shop.business_owner_account_id
|
||||
? shop.business_owner_available
|
||||
? '可用'
|
||||
: '已停用'
|
||||
: '-'
|
||||
}}
|
||||
</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="省份">{{ shop.province || '-' }}</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="城市">{{ shop.city || '-' }}</ElDescriptionsItem>
|
||||
<ElDescriptionsItem label="区县">{{ shop.district || '-' }}</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.updated_at || '-' }}</ElDescriptionsItem>
|
||||
</ElDescriptions>
|
||||
|
||||
@@ -88,7 +88,6 @@
|
||||
/>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="默认信用额度">
|
||||
<div class="credit-form-unit">单位:元</div>
|
||||
<ElInputNumber
|
||||
v-model="form.credit_limit_yuan"
|
||||
:disabled="!form.credit_enabled"
|
||||
@@ -101,7 +100,7 @@
|
||||
:formatter="formatCreditInput"
|
||||
:parser="parseCreditInput"
|
||||
/>
|
||||
<div class="credit-form-tip">修改后不会影响已有店铺</div>
|
||||
<div class="credit-form-tip">单位:元,修改后不会影响已有店铺</div>
|
||||
</ElFormItem>
|
||||
</template>
|
||||
</ElForm>
|
||||
|
||||
Reference in New Issue
Block a user