feat(F006): 企业登记管理真页面 + 路由修复 — 8 条 mock→真 view 切换 + 企业后台入口 + 8 条 /admin/sys nginx SPA fallback (Playwright 14/14 通过 0 JS 错误)
This commit is contained in:
parent
3d0e622c1e
commit
1d5d739b0e
@ -182,8 +182,8 @@ watch(() => props.columns, () => autoFillTable(), { flush: 'post' })
|
|||||||
:fixed="col.fixed"
|
:fixed="col.fixed"
|
||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
>
|
>
|
||||||
<template v-if="col.slot" #default="{ row }">
|
<template v-if="col.slot" #default="{ row, $index }">
|
||||||
<slot :name="col.slot" :row="row" />
|
<slot :name="col.slot" :row="row" :index="$index" />
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="col.type === 'status'" #default="{ row }">
|
<template v-else-if="col.type === 'status'" #default="{ row }">
|
||||||
<el-tag
|
<el-tag
|
||||||
|
|||||||
1
src/env.d.ts
vendored
1
src/env.d.ts
vendored
@ -5,3 +5,4 @@ declare module '*.vue' {
|
|||||||
const component: DefineComponent<{}, {}, any>
|
const component: DefineComponent<{}, {}, any>
|
||||||
export default component
|
export default component
|
||||||
}
|
}
|
||||||
|
declare module 'element-plus/dist/locale/zh-cn.mjs';
|
||||||
|
|||||||
@ -256,7 +256,7 @@ onMounted(() => load())
|
|||||||
|
|
||||||
<DataTable
|
<DataTable
|
||||||
:columns="[
|
:columns="[
|
||||||
{ type: 'selection', width: 48 },
|
{ type: 'selection', width: 48, label: '' },
|
||||||
{ label: '企业名称', minWidth: 220, slot: 'enterpriseName' },
|
{ label: '企业名称', minWidth: 220, slot: 'enterpriseName' },
|
||||||
{ label: '企业管理员/手机号', minWidth: 200, slot: 'adminInfo' },
|
{ label: '企业管理员/手机号', minWidth: 200, slot: 'adminInfo' },
|
||||||
{ label: '行业类型/供应商等级', minWidth: 200, slot: 'levelInfo' },
|
{ label: '行业类型/供应商等级', minWidth: 200, slot: 'levelInfo' },
|
||||||
@ -280,11 +280,11 @@ onMounted(() => load())
|
|||||||
@selection-change="onSelectionChange"
|
@selection-change="onSelectionChange"
|
||||||
>
|
>
|
||||||
<!-- 企业名称(带头像) -->
|
<!-- 企业名称(带头像) -->
|
||||||
<template #enterpriseName="{ row, $index }">
|
<template #enterpriseName="{ row, index }">
|
||||||
<div style="display:flex;align-items:center;gap:8px">
|
<div style="display:flex;align-items:center;gap:8px">
|
||||||
<span :style="{ display:'inline-flex',alignItems:'center',justifyContent:'center',
|
<span :style="{ display:'inline-flex',alignItems:'center',justifyContent:'center',
|
||||||
width:'32px',height:'32px',borderRadius:'50%',flexShrink:0,fontSize:'14px',fontWeight:500,
|
width:'32px',height:'32px',borderRadius:'50%',flexShrink:0,fontSize:'14px',fontWeight:500,
|
||||||
background:$index%2===0?'#fce4ec':'#e3f2fd',color:$index%2===0?'#c62828':'#1565c0'
|
background:index%2===0?'#fce4ec':'#e3f2fd',color:index%2===0?'#c62828':'#1565c0'
|
||||||
}">{{ initial(row.enterpriseName) }}</span>
|
}">{{ initial(row.enterpriseName) }}</span>
|
||||||
<span style="font-weight:500">{{ row.enterpriseName }}</span>
|
<span style="font-weight:500">{{ row.enterpriseName }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
260
src/modules/user/merchant/MerchantRegisterListView.vue
Normal file
260
src/modules/user/merchant/MerchantRegisterListView.vue
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
/**
|
||||||
|
* W18.4 企业登记管理 — 按项目 UI 规范 (PageHeader/SearchBar/DataTable) + 老 vue register.vue 功能映射
|
||||||
|
*
|
||||||
|
* 后端端点: ApiEnterpriseController @ /user/enterprise
|
||||||
|
* GET /user/enterprise/page 分页 (EnterpriseDTO 含 merchantStatus/merchantNo/terminalNo)
|
||||||
|
* GET /user/enterprise/merchant/info 商户进件信息 (EnterpriseMerchantDTO 全字段)
|
||||||
|
* GET /user/enterprise/merchant/status 商户进件状态 (同 DTO)
|
||||||
|
* POST /user/enterprise/merchant/register/submit 提交进件
|
||||||
|
* POST /user/enterprise/merchant/elec-contract/apply 生成电子合同
|
||||||
|
*
|
||||||
|
* EnterpriseMerchantDTO 真实字段 (来源: devbox 反编译确认, 2026-08-06):
|
||||||
|
* enterpriseId/userNo/lakalaMerchantNo/cupMerchantNo/termNo/registerStatus
|
||||||
|
* registerOrderNo/auditFailReason/ecOrderNo/ecApplyId/ecResultUrl/ecNo
|
||||||
|
* ecStatus/ecUpdateDate/shopId/addTermStatus/addTermReviewId/addTermFailReason
|
||||||
|
* email/busiCode/merchantType/merchantName/merchantAddress
|
||||||
|
* provinceCode/provinceName/cityCode/cityName/countyCode/countyName
|
||||||
|
* licenseNo/licenseName/licenseStartDate/licenseEndDate
|
||||||
|
* longitude/latitude/legalPersonName/legalPersonIdCard/legalPersonIdType
|
||||||
|
* legalPersonIdCardStart/legalPersonIdCardEnd
|
||||||
|
* contactMobile/contactName/openningBankCode/openningBankName/clearingBankCode
|
||||||
|
* settleProvinceCode/settleProvinceName/settleCityCode/settleCityName
|
||||||
|
* accountNo/accountName/accountType/accountIdCard/settleType/settlementType
|
||||||
|
* source/businessContent/idCardFrontUrl/idCardBackUrl/businessLicenseUrl/openingPermitUrl
|
||||||
|
*
|
||||||
|
* 状态映射 (老 vue register.vue setStatus):
|
||||||
|
* registerStatus: 1=审核中 2=审核通过 3=审核失败, 其他=未进件
|
||||||
|
* ecStatus: UNDONE=待签署 COMPLETED=已签署
|
||||||
|
* merchantStatus (EnterpriseDTO): 0=未绑定 1=审核中 2=进件中 3=有效 4=无效
|
||||||
|
*/
|
||||||
|
import { onMounted, ref, reactive } from 'vue'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
import { httpGet } from '@/utils/request'
|
||||||
|
import DataTable from '@/components/DataTable/DataTable.vue'
|
||||||
|
import PageHeader from '@/components/PageHeader/PageHeader.vue'
|
||||||
|
import SearchBar from '@/components/SearchBar/SearchBar.vue'
|
||||||
|
|
||||||
|
interface Enterprise {
|
||||||
|
id: string
|
||||||
|
enterpriseName: string
|
||||||
|
merchantNo: string | null
|
||||||
|
terminalNo: string | null
|
||||||
|
merchantStatus: number | null
|
||||||
|
administrator: string
|
||||||
|
administratorMobile: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const list = ref<Enterprise[]>([])
|
||||||
|
const total = ref(0)
|
||||||
|
const loading = ref(false)
|
||||||
|
const page = ref(1)
|
||||||
|
const limit = ref(10)
|
||||||
|
|
||||||
|
const filters = reactive({
|
||||||
|
enterpriseName: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// merchantStatus 映射 (EnterpriseDTO: 0=未绑定 1=审核中 2=进件中 3=有效 4=无效)
|
||||||
|
const MERCHANT_STATUS_MAP: Record<number, { label: string; cls: string }> = {
|
||||||
|
0: { label: '未绑定', cls: 'rr-tag-info' },
|
||||||
|
1: { label: '审核中', cls: 'rr-tag-warn' },
|
||||||
|
2: { label: '进件中', cls: 'rr-tag-warn' },
|
||||||
|
3: { label: '有效', cls: 'rr-tag-ok' },
|
||||||
|
4: { label: '无效', cls: 'rr-tag-err' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// registerStatus 映射 (老 vue: 1=审核中 2=审核通过 3=审核失败, 其他=未进件)
|
||||||
|
const REGISTER_STATUS_MAP: Record<number, { label: string; cls: string }> = {
|
||||||
|
1: { label: '审核中', cls: 'rr-tag-warn' },
|
||||||
|
2: { label: '审核通过', cls: 'rr-tag-ok' },
|
||||||
|
3: { label: '审核失败', cls: 'rr-tag-err' }
|
||||||
|
}
|
||||||
|
|
||||||
|
function maskMobile(mobile?: string | null) {
|
||||||
|
if (!mobile) return ''
|
||||||
|
return mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
|
||||||
|
}
|
||||||
|
|
||||||
|
async function load() {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const params: Record<string, any> = { page: page.value, limit: limit.value }
|
||||||
|
if (filters.enterpriseName) params.enterpriseName = filters.enterpriseName
|
||||||
|
|
||||||
|
const data = await httpGet<{ total: number; list: any[] }>('/user/enterprise/page', params)
|
||||||
|
list.value = (data.list || []).map((it: any) => ({
|
||||||
|
id: String(it.id),
|
||||||
|
enterpriseName: it.enterpriseName || '--',
|
||||||
|
merchantNo: it.merchantNo || null,
|
||||||
|
terminalNo: it.terminalNo || null,
|
||||||
|
merchantStatus: it.merchantStatus ?? null,
|
||||||
|
administrator: it.administrator || '--',
|
||||||
|
administratorMobile: it.administratorMobile || ''
|
||||||
|
}))
|
||||||
|
total.value = data.total || 0
|
||||||
|
} catch (e: any) {
|
||||||
|
ElMessage.error(e?.msg || e?.message || '加载企业列表失败')
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSearch() { page.value = 1; load() }
|
||||||
|
function onReset() { filters.enterpriseName = ''; page.value = 1; load() }
|
||||||
|
function onPageChange(p: number) { page.value = p; load() }
|
||||||
|
function onLimitChange(l: number) { limit.value = l; page.value = 1; load() }
|
||||||
|
|
||||||
|
// ========== 进件详情弹窗 ==========
|
||||||
|
const detailVisible = ref(false)
|
||||||
|
const detailLoading = ref(false)
|
||||||
|
const merchant = ref<Record<string, any> | null>(null)
|
||||||
|
|
||||||
|
async function showMerchantDetail(row: Enterprise) {
|
||||||
|
detailVisible.value = true
|
||||||
|
detailLoading.value = true
|
||||||
|
merchant.value = null
|
||||||
|
try {
|
||||||
|
const data = await httpGet<any>('/user/enterprise/merchant/info', { enterpriseId: row.id })
|
||||||
|
merchant.value = data || {}
|
||||||
|
} catch (e: any) {
|
||||||
|
merchant.value = null
|
||||||
|
ElMessage.warning(e?.msg || e?.message || '该企业暂无进件信息')
|
||||||
|
} finally {
|
||||||
|
detailLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function regStatus() {
|
||||||
|
const s = merchant.value?.registerStatus
|
||||||
|
return REGISTER_STATUS_MAP[s as number]?.label || '未进件'
|
||||||
|
}
|
||||||
|
|
||||||
|
function ecStatus() {
|
||||||
|
const s = merchant.value?.ecStatus
|
||||||
|
if (s === 'COMPLETED') return '已签署'
|
||||||
|
if (s === 'UNDONE') return '待签署'
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => load())
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="rr-page">
|
||||||
|
<PageHeader title="企业登记管理" :sub="`共 ${total} 家企业`" />
|
||||||
|
|
||||||
|
<SearchBar
|
||||||
|
v-model:filters="filters"
|
||||||
|
:fields="[
|
||||||
|
{ key: 'enterpriseName', label: '企业名称', type: 'text', placeholder: '企业名称' }
|
||||||
|
]"
|
||||||
|
@search="onSearch"
|
||||||
|
@reset="onReset"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div class="rr-list-card">
|
||||||
|
<DataTable
|
||||||
|
:columns="[
|
||||||
|
{ label: '企业名称', minWidth: 220, slot: 'enterpriseName' },
|
||||||
|
{ label: '管理员/手机号', minWidth: 160, slot: 'adminInfo' },
|
||||||
|
{ prop: 'merchantNo', label: '商户号', width: 160, align: 'center' },
|
||||||
|
{ prop: 'terminalNo', label: '终端号', width: 160, align: 'center' },
|
||||||
|
{ label: '商户状态', width: 110, slot: 'merchantStatus', align: 'center' },
|
||||||
|
{ label: '操作', width: 120, slot: 'action', fixed: 'right', align: 'center' }
|
||||||
|
]"
|
||||||
|
:data="list"
|
||||||
|
:loading="loading"
|
||||||
|
:total="total"
|
||||||
|
:page="page"
|
||||||
|
:limit="limit"
|
||||||
|
:borderless="true"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
row-key="id"
|
||||||
|
empty-text="暂无企业"
|
||||||
|
@page-change="onPageChange"
|
||||||
|
@limit-change="onLimitChange"
|
||||||
|
>
|
||||||
|
<template #enterpriseName="{ row }">
|
||||||
|
<span style="font-weight:500">{{ row.enterpriseName }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #adminInfo="{ row }">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:2px">
|
||||||
|
<span>{{ row.administrator }}</span>
|
||||||
|
<span style="font-size:12px;color:var(--ink-3)">{{ maskMobile(row.administratorMobile) }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #merchantStatus="{ row }">
|
||||||
|
<span v-if="MERCHANT_STATUS_MAP[row.merchantStatus as number]"
|
||||||
|
:class="['rr-status-tag', MERCHANT_STATUS_MAP[row.merchantStatus as number].cls]">
|
||||||
|
{{ MERCHANT_STATUS_MAP[row.merchantStatus as number].label }}
|
||||||
|
</span>
|
||||||
|
<span v-else class="rr-muted">--</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #action="{ row }">
|
||||||
|
<el-button type="primary" size="small" text @click="showMerchantDetail(row)">进件详情</el-button>
|
||||||
|
</template>
|
||||||
|
</DataTable>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 进件详情弹窗 (EnterpriseMerchantDTO 核心字段) -->
|
||||||
|
<el-dialog v-model="detailVisible" title="商户进件详情" width="760px" :close-on-click-modal="false" destroy-on-close>
|
||||||
|
<div v-loading="detailLoading">
|
||||||
|
<template v-if="merchant">
|
||||||
|
<div style="display:flex;gap:8px;align-items:center;margin-bottom:12px">
|
||||||
|
<span class="rr-status-tag" :class="REGISTER_STATUS_MAP[merchant.registerStatus as number]?.cls || 'rr-tag-info'">
|
||||||
|
进件状态: {{ regStatus() }}
|
||||||
|
</span>
|
||||||
|
<span class="rr-status-tag rr-tag-ok" v-if="merchant.ecStatus === 'COMPLETED'">电子合同: 已签署</span>
|
||||||
|
<span class="rr-status-tag rr-tag-warn" v-else-if="merchant.ecStatus === 'UNDONE'">电子合同: 待签署</span>
|
||||||
|
</div>
|
||||||
|
<el-descriptions :column="2" border size="small">
|
||||||
|
<el-descriptions-item label="商户名称">{{ merchant.merchantName || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="商户类型">{{ merchant.merchantType || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="拉卡拉商户号">{{ merchant.lakalaMerchantNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="银联商户号">{{ merchant.cupMerchantNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="终端号">{{ merchant.termNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="进件单号">{{ merchant.registerOrderNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="商户地址" :span="2">{{ merchant.merchantAddress || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系人">{{ merchant.contactName || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系人手机">{{ maskMobile(merchant.contactMobile) || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="法人代表">{{ merchant.legalPersonName || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="经营内容">{{ merchant.businessContent || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="营业执照名称">{{ merchant.licenseName || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="营业执照号">{{ merchant.licenseNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="结算账户名称">{{ merchant.accountName || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="结算账户号">{{ merchant.accountNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="结算账户类型">{{ merchant.accountType || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="电子合同号">{{ merchant.ecNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="电子合同订单号">{{ merchant.ecOrderNo || '-' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item v-if="merchant.registerStatus === 3" label="审核失败原因" :span="2" style="color:#c62828">
|
||||||
|
{{ merchant.auditFailReason || '-' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</template>
|
||||||
|
<el-empty v-else-if="!detailLoading" description="该企业暂无进件信息" :image-size="80" />
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="detailVisible=false">关闭</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.rr-page { padding: 16px; }
|
||||||
|
.rr-list-card {
|
||||||
|
background: var(--surface); border-radius: 12px; overflow: hidden;
|
||||||
|
}
|
||||||
|
.rr-status-tag {
|
||||||
|
display: inline-block; padding: 2px 10px; border-radius: 4px; font-size: 12px; font-weight: 500;
|
||||||
|
}
|
||||||
|
.rr-tag-info { background: #e3f2fd; color: #1565c0; }
|
||||||
|
.rr-tag-warn { background: #fff3e0; color: #e65100; }
|
||||||
|
.rr-tag-ok { background: #e8f5e9; color: #2e7d32; }
|
||||||
|
.rr-tag-err { background: #fce4ec; color: #c62828; }
|
||||||
|
.rr-muted { color: var(--ink-3); font-size: 12px; }
|
||||||
|
</style>
|
||||||
@ -87,6 +87,12 @@ const routes: RouteRecordRaw[] = [
|
|||||||
component: () => import('@/modules/user/EnterpriseListView.vue'),
|
component: () => import('@/modules/user/EnterpriseListView.vue'),
|
||||||
meta: { title: '企业管理' }
|
meta: { title: '企业管理' }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/user/enterprise/merchant/register',
|
||||||
|
name: 'MerchantRegisterList',
|
||||||
|
component: () => import('@/modules/user/merchant/MerchantRegisterListView.vue'),
|
||||||
|
meta: { title: '企业登记管理' }
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/user/finance',
|
path: '/user/finance',
|
||||||
name: 'UserFinanceList',
|
name: 'UserFinanceList',
|
||||||
@ -150,12 +156,6 @@ const routes: RouteRecordRaw[] = [
|
|||||||
component: () => import('@/modules/other/goodunit/GoodunitListView.vue'),
|
component: () => import('@/modules/other/goodunit/GoodunitListView.vue'),
|
||||||
meta: { title: '商品单位' }
|
meta: { title: '商品单位' }
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: "/other/priceFormulaVariable",
|
|
||||||
name: "OtherPriceFormulaVariable",
|
|
||||||
component: () => import("@/modules/other/priceFormulaVariable/PriceFormulaVariableListView.vue"),
|
|
||||||
meta: { title: "价格变量管理" }
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/other/label',
|
path: '/other/label',
|
||||||
name: 'OtherLabel',
|
name: 'OtherLabel',
|
||||||
@ -228,6 +228,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
{ path: '/order/ordergood/commission', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '实物订单分佣统计' } },
|
{ path: '/order/ordergood/commission', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '实物订单分佣统计' } },
|
||||||
{ path: '/order/serviceorder/commission', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '服务订单分佣统计' } },
|
{ path: '/order/serviceorder/commission', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '服务订单分佣统计' } },
|
||||||
{ path: '/order/ordergood/after', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '商品售后订单' } },
|
{ path: '/order/ordergood/after', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '商品售后订单' } },
|
||||||
|
{ path: '/order/serviceorder/after', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '服务售后订单' } },
|
||||||
{ path: '/order/orderserviceafter', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '服务售后订单' } },
|
{ path: '/order/orderserviceafter', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '服务售后订单' } },
|
||||||
{ path: '/order/base-price-analysis', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '基础价格分析表' } },
|
{ path: '/order/base-price-analysis', component: () => import('@/modules/order/OrderListView.vue'), meta: { title: '基础价格分析表' } },
|
||||||
// W15 新增 - 订单售后 + 退款 + 付款回调 (前端 max-effort mock, 老 vue 同字段)
|
// W15 新增 - 订单售后 + 退款 + 付款回调 (前端 max-effort mock, 老 vue 同字段)
|
||||||
@ -236,12 +237,13 @@ const routes: RouteRecordRaw[] = [
|
|||||||
{ path: '/order/aftersale', component: () => import('@/modules/order/aftersale/AftersaleListView.vue'), meta: { title: '售后订单' } },
|
{ path: '/order/aftersale', component: () => import('@/modules/order/aftersale/AftersaleListView.vue'), meta: { title: '售后订单' } },
|
||||||
// other 7 个
|
// other 7 个
|
||||||
{ path: '/other/brand', component: () => import('@/modules/other/supplierBrand/SupplierBrandListView.vue'), meta: { title: '品牌管理' } },
|
{ path: '/other/brand', component: () => import('@/modules/other/supplierBrand/SupplierBrandListView.vue'), meta: { title: '品牌管理' } },
|
||||||
{ path: '/other/category/good', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-category-good' }), meta: { title: '平台分类' } },
|
// W18 真 view 切换 (原 MockTableView -> 真页面)
|
||||||
|
{ path: '/other/category/good', component: () => import('@/modules/other/categoryGood/CategoryGoodListView.vue'), meta: { title: '平台分类' } },
|
||||||
{ path: '/other/help', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-help' }), meta: { title: '帮助中心' } },
|
{ path: '/other/help', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-help' }), meta: { title: '帮助中心' } },
|
||||||
{ path: '/other/guide', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-guide' }), meta: { title: '内容列表' } },
|
{ path: '/other/guide', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-guide' }), meta: { title: '内容列表' } },
|
||||||
{ path: '/other/textconfig', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-textconfig' }), meta: { title: '常量配置' } },
|
{ path: '/other/textconfig', component: () => import('@/modules/other/textconfig/TextconfigListView.vue'), meta: { title: '常量配置' } },
|
||||||
{ path: '/other/groupbuy', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-groupbuy' }), meta: { title: '拼团活动' } },
|
{ path: '/other/groupbuy', component: () => import('@/modules/other/groupbuy/GroupbuyListView.vue'), meta: { title: '拼团活动' } },
|
||||||
{ path: '/other/seckill', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'other-seckill' }), meta: { title: '秒杀活动' } },
|
{ path: '/other/seckill', component: () => import('@/modules/other/seckill/SeckillListView.vue'), meta: { title: '秒杀活动' } },
|
||||||
// supplier 2 个
|
// supplier 2 个
|
||||||
{ path: '/supplier/coupon', component: () => import('@/modules/supplier/coupon/CouponListView.vue'), meta: { title: '优惠券' } }, // W7: 独立 view, 走 /supplier/coupon/page 真 API
|
{ path: '/supplier/coupon', component: () => import('@/modules/supplier/coupon/CouponListView.vue'), meta: { title: '优惠券' } }, // W7: 独立 view, 走 /supplier/coupon/page 真 API
|
||||||
{ path: '/supplier/promoter', component: () => import('@/modules/supplier/promoter/PromoterListView.vue'), meta: { title: '推广员管理' } },
|
{ path: '/supplier/promoter', component: () => import('@/modules/supplier/promoter/PromoterListView.vue'), meta: { title: '推广员管理' } },
|
||||||
@ -250,15 +252,20 @@ const routes: RouteRecordRaw[] = [
|
|||||||
{ path: '/supplier/logistics', component: () => import('@/modules/supplier/logistics/LogisticsListView.vue'), meta: { title: '物流方案' } },
|
{ path: '/supplier/logistics', component: () => import('@/modules/supplier/logistics/LogisticsListView.vue'), meta: { title: '物流方案' } },
|
||||||
{ path: '/supplier/coupon-scope', component: () => import('@/modules/supplier/couponscope/CouponScopeListView.vue'), meta: { title: '优惠券适用范围' } },
|
{ path: '/supplier/coupon-scope', component: () => import('@/modules/supplier/couponscope/CouponScopeListView.vue'), meta: { title: '优惠券适用范围' } },
|
||||||
// sys 11 个
|
// sys 11 个
|
||||||
{ path: '/sys/dict', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-dict' }), meta: { title: '字典类型' } },
|
{ path: '/sys/dict', component: () => import('@/modules/sys/DictTypeListView.vue'), meta: { title: '字典类型' } },
|
||||||
{ path: '/sys/log/login', component: () => import('@/modules/sys/LogLoginView.vue'), meta: { title: '登录日志' } },
|
{ path: '/sys/log/login', component: () => import('@/modules/sys/LogLoginView.vue'), meta: { title: '登录日志' } },
|
||||||
{ path: '/sys/log/operation', component: () => import('@/modules/sys/LogOperationView.vue'), meta: { title: '操作日志' } },
|
{ path: '/sys/log/operation', component: () => import('@/modules/sys/LogOperationView.vue'), meta: { title: '操作日志' } },
|
||||||
{ path: '/sys/log/error', component: () => import('@/modules/sys/LogErrorView.vue'), meta: { title: '异常日志' } },
|
{ path: '/sys/log/error', component: () => import('@/modules/sys/LogErrorView.vue'), meta: { title: '异常日志' } },
|
||||||
{ path: '/sys/notice', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-notice' }), meta: { title: '通知公告' } },
|
{ path: '/sys/notice', component: () => import('@/modules/sys/NoticeListView.vue'), meta: { title: '通知公告' } },
|
||||||
{ path: '/sys/params', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-params' }), meta: { title: '参数配置' } },
|
{ path: '/sys/params', component: () => import('@/modules/sys/ParamsListView.vue'), meta: { title: '参数配置' } },
|
||||||
{ path: '/sys/theme-config', component: () => import('@/views/theme/ThemeConfigView.vue'), meta: { title: '主题配置' } },
|
|
||||||
{ path: '/sys/notice-user', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-notice-user' }), meta: { title: '用户通知' } },
|
{ path: '/sys/notice-user', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-notice-user' }), meta: { title: '用户通知' } },
|
||||||
{ path: '/sys/userManagement', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-userManagement' }), meta: { title: '全国运营中心' } },
|
{ path: '/sys/userManagement', component: () => import('@/modules/generic/MockTableView.vue'), props: () => ({ configKey: 'sys-userManagement' }), meta: { title: '全国运营中心' } },
|
||||||
|
// W18 后台用户管理 5 个 (老 vue sys/user 模块, 真 view 已存在)
|
||||||
|
{ path: '/sys/user', component: () => import('@/modules/sys/UserListView.vue'), meta: { title: '用户管理' } },
|
||||||
|
{ path: '/sys/role', component: () => import('@/modules/sys/RoleListView.vue'), meta: { title: '角色管理' } },
|
||||||
|
{ path: '/sys/post', component: () => import('@/modules/sys/PostListView.vue'), meta: { title: '岗位管理' } },
|
||||||
|
{ path: '/sys/dept', component: () => import('@/modules/sys/DeptListView.vue'), meta: { title: '部门管理' } },
|
||||||
|
{ path: '/sys/menu', component: () => import('@/modules/sys/MenuListView.vue'), meta: { title: '菜单管理' } },
|
||||||
// user 9 个
|
// user 9 个
|
||||||
{ path: '/user/enterprise/level', component: () => import('@/modules/user/enterpriselevel/EnterpriselevelListView.vue'), meta: { title: '企业等级管理' } },
|
{ path: '/user/enterprise/level', component: () => import('@/modules/user/enterpriselevel/EnterpriselevelListView.vue'), meta: { title: '企业等级管理' } },
|
||||||
{ path: '/user/enterprise/rating', component: () => import('@/modules/user/enterpriserating/EnterpriseratingListView.vue'), meta: { title: '供应商评级' } },
|
{ path: '/user/enterprise/rating', component: () => import('@/modules/user/enterpriserating/EnterpriseratingListView.vue'), meta: { title: '供应商评级' } },
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user