diff --git a/app/Http/Controllers/Business/Pages.php b/app/Http/Controllers/Business/Pages.php index 289212a7..cbcda2b6 100644 --- a/app/Http/Controllers/Business/Pages.php +++ b/app/Http/Controllers/Business/Pages.php @@ -85,6 +85,10 @@ class Pages extends Controller abort_if(empty($section), 403, '当前账号没有已授权的侧边栏功能。'); + if (! empty($section['external_url'])) { + return redirect()->away($section['external_url']); + } + $page = collect($section['pages'] ?? [])->first(); $parameters = ['section' => $section['slug']]; @@ -105,6 +109,12 @@ class Pages extends Controller abort_if(empty($sectionConfig), 403, '当前账号没有该页面权限。'); + if (! empty($sectionConfig['external_url'])) { + abort_if($page !== null || $tab !== null, 404); + + return redirect()->away($sectionConfig['external_url']); + } + $pages = collect($sectionConfig['pages'] ?? []); if ($pages->isEmpty()) { diff --git a/app/Listeners/Menu/ShowInAdmin.php b/app/Listeners/Menu/ShowInAdmin.php index 7e538ea0..c1a3f337 100644 --- a/app/Listeners/Menu/ShowInAdmin.php +++ b/app/Listeners/Menu/ShowInAdmin.php @@ -15,10 +15,22 @@ class ShowInAdmin $menu = $event->menu; foreach (SidebarPermissions::navigationFor(user()) as $sectionIndex => $section) { - // 订单数据按配置顺序展示,让“原始数据”保持在新增子页面之前。 - $pages = $section['slug'] === 'order-data' - ? array_values($section['pages'] ?? []) - : $this->sortByTitleLength($section['pages'] ?? []); + if (! empty($section['external_url'])) { + $menu->url( + $section['external_url'], + $section['title'], + ($sectionIndex + 1) * 10, + [ + 'icon' => $section['icon'] ?? '', + 'target' => '_blank', + 'rel' => 'noopener noreferrer', + ] + ); + + continue; + } + + $pages = $this->sortByTitleLength($section['pages'] ?? []); $order = ($sectionIndex + 1) * 10; if (empty($pages)) { diff --git a/config/business_navigation.php b/config/business_navigation.php index a4d6db99..da3a31bc 100644 --- a/config/business_navigation.php +++ b/config/business_navigation.php @@ -6,99 +6,10 @@ return [ 'title' => '公司管理', 'icon' => 'business', 'pages' => [ - [ - 'slug' => 'subject-operating-report', - 'title' => '主体维度经营报表', - 'directory' => [ - 'icon' => 'query_stats', - 'status' => '尚未同步', - 'description' => '按店铺唯一 ID 和主体生效、失效日期归属销量;自动汇总前,先固定 Excel 中的报表字段。', - 'empty' => '经营报表尚未同步。完成店铺主体和销量镜像接入后,这里会显示可追溯的主体数据。', - 'fields' => [ - ['name' => 'city', 'label' => '市'], - ['name' => 'entity', 'label' => '主体'], - ['name' => 'company_type', 'label' => '公司类型'], - ['name' => 'erp_store_name', 'label' => 'ERP系统店铺名称'], - ['name' => 'profit_center', 'label' => '店铺所属利润中心'], - ['name' => 'store_manager', 'label' => '店铺负责人'], - ['name' => 'closing_manager', 'label' => '闭门负责人'], - ['name' => 'opened_at', 'label' => '开店时间', 'kind' => 'date'], - ['name' => 'status', 'label' => '状态'], - ['name' => 'recent_three_month_sales', 'label' => '展示近3个月月度销量', 'kind' => 'number'], - ['name' => 'store_sales_12m', 'label' => '连续12个月店铺累计销量', 'kind' => 'number'], - ['name' => 'entity_sales_12m', 'label' => '连续12个月主体累计销量', 'kind' => 'number'], - ['name' => 'can_change_entity', 'label' => '能否变更主体'], - ['name' => 'plan', 'label' => '规划'], - ['name' => 'new_entity', 'label' => '新主体(变更流程同步新主体)'], - ], - ], - ], - [ - 'slug' => 'basic-information', - 'title' => '公司基础信息', - 'directory' => [ - 'icon' => 'business', - 'status' => '既有只读上游', - 'description' => '沿用现有公司基础资料只读链路;Excel 中暂未匹配到的城市、认缴时间等字段保留为空。', - 'empty' => '尚未读取到公司基础资料。请检查共享镜像或上游同步状态。', - 'fields' => [ - ['name' => 'unified_social_credit_code', 'label' => '统一社会信用代码'], - ['name' => 'company_name', 'label' => '公司名称'], - ['name' => 'taxpayer_type', 'label' => '纳税人类型', 'source' => 'taxpayer_category'], - ['name' => 'company_status', 'label' => '公司状态'], - ['name' => 'subscribed_capital', 'label' => '认缴注册资本(万元)', 'kind' => 'number'], - ['name' => 'registered_at', 'label' => '注册时间', 'kind' => 'date', 'source' => 'establishment_date'], - ['name' => 'legal_representative', 'label' => '法人'], - ['name' => 'shareholders', 'label' => '股东'], - ['name' => 'supervisor', 'label' => '监事'], - ['name' => 'billing_officer', 'label' => '开票员', 'source' => 'financial_officer'], - ['name' => 'city', 'label' => '城市'], - ['name' => 'registered_address', 'label' => '注册地址'], - ['name' => 'business_scope', 'label' => '经营范围'], - ['name' => 'basic_deposit_account', 'label' => '基本存款账户信息', 'source' => 'basic_deposit_account_number', 'kind' => 'secret'], - ['name' => 'subscribed_at', 'label' => '认缴时间'], - ], - ], - ], - [ - 'slug' => 'personnel-inventory', - 'title' => '人员盘点表', - 'directory' => [ - 'icon' => 'group', - 'status' => '尚未同步', - 'description' => '固定人员、任职和公司承载量盘点字段;身份证、税务账号和密码只保留字段契约,不在空页面填充。', - 'empty' => '人员盘点数据尚未同步。接入人员和任职关系后,这里会显示盘点结果。', - 'fields' => [ - ['name' => 'person_name', 'label' => '人员名称'], - ['name' => 'alias', 'label' => '花名'], - ['name' => 'position', 'label' => '职位'], - ['name' => 'tag', 'label' => '标签'], - ['name' => 'tax_account', 'label' => '税务局账号'], - ['name' => 'tax_password', 'label' => '税务局密码', 'kind' => 'secret'], - ['name' => 'department', 'label' => '部门'], - ['name' => 'department_manager', 'label' => '部门负责人'], - ['name' => 'id_number', 'label' => '身份证号码', 'kind' => 'secret'], - ['name' => 'verified_mobile', 'label' => '实名手机号', 'kind' => 'secret'], - ['name' => 'sim_card_keeper', 'label' => '电话卡保管人'], - ['name' => 'id_address', 'label' => '身份证地址', 'kind' => 'secret'], - ['name' => 'company_type', 'label' => '公司类型'], - ['name' => 'total_company_count', 'label' => '合计担任公司数量', 'kind' => 'number'], - ['name' => 'retained_company_count', 'label' => '保留担任公司数量', 'kind' => 'number'], - ['name' => 'available_company_count', 'label' => '可担任公司数量', 'kind' => 'number'], - ], - ], - ], - [ - 'slug' => 'company-progress', - 'title' => '公司进度表', - 'directory' => [ - 'icon' => 'timeline', - 'status' => '字段待定义', - 'description' => 'Excel 目录包含该页面,但未提供对应子表或表头。当前只建立页面位置,不猜测公司流程字段。', - 'empty' => '公司进度表字段尚未定义,补充子表表头后再接入流程数据。', - 'fields' => [], - ], - ], + ['slug' => 'people-inventory', 'title' => '人员盘点表'], + ['slug' => 'company-progress', 'title' => '公司进度表'], + ['slug' => 'company-information', 'title' => '公司基础信息'], + ['slug' => 'entity-report', 'title' => '主体维度经营报表'], ], ], [ @@ -106,47 +17,8 @@ return [ 'title' => '商标管理', 'icon' => 'verified', 'pages' => [ - [ - 'slug' => 'information', - 'title' => '商标基础信息', - 'directory' => [ - 'icon' => 'verified', - 'status' => '既有只读上游', - 'description' => '沿用现有商标资料只读链路;当前已匹配名称、状态、注册时间和有效期,其余 Excel 字段待接入。', - 'empty' => '尚未读取到商标基础资料。请检查共享镜像或上游同步状态。', - 'fields' => [ - ['name' => 'trademark_name', 'label' => '商标名称'], - ['name' => 'trademark_number', 'label' => '商标号'], - ['name' => 'trademark_status', 'label' => '商标状态'], - ['name' => 'registration_date', 'label' => '注册时间', 'kind' => 'date'], - ['name' => 'expiry_date', 'label' => '有效期', 'kind' => 'date'], - ['name' => 'international_classification', 'label' => '国际分类', 'source' => 'trademark_type'], - ['name' => 'approved_goods', 'label' => '核定使用商品'], - ['name' => 'final_holder', 'label' => '最终持有人'], - ['name' => 'registered_address', 'label' => '注册地址'], - ['name' => 'custody_department', 'label' => '保管部门'], - ], - ], - ], - [ - 'slug' => 'trademark-progress', - 'title' => '商标进度表', - 'directory' => [ - 'icon' => 'timeline', - 'status' => '尚未同步', - 'description' => '按 Excel 固定注册、变更、续展等业务的办理进度字段;流程数据接入前不显示伪造记录。', - 'empty' => '商标进度数据尚未同步。', - 'fields' => [ - ['name' => 'trademark_name', 'label' => '商标名称'], - ['name' => 'trademark_number', 'label' => '商标号'], - ['name' => 'business', 'label' => '业务'], - ['name' => 'progress', 'label' => '进度'], - ['name' => 'completed', 'label' => '是否完成'], - ['name' => 'completed_at', 'label' => '完成时间', 'kind' => 'date'], - ['name' => 'handler', 'label' => '办理人'], - ], - ], - ], + ['slug' => 'trademark-progress', 'title' => '商标进度表'], + ['slug' => 'trademark-information', 'title' => '商标基础信息'], ], ], [ @@ -154,93 +26,9 @@ return [ 'title' => '店铺管理', 'icon' => 'storefront', 'pages' => [ - [ - 'slug' => 'store-report', - 'title' => '店铺维度报表', - 'directory' => [ - 'icon' => 'query_stats', - 'status' => '尚未同步', - 'description' => '以店铺 ID 和主体生效、失效时间为基础,固定期间销量及 2026 年月度销量字段。', - 'empty' => '店铺维度报表尚未同步。完成销量镜像接入后,这里会显示可核对的期间数据。', - 'fields' => [ - ['name' => 'erp_store_name', 'label' => 'ERP系统店铺名称'], - ['name' => 'store_id', 'label' => '店铺ID(唯一值)'], - ['name' => 'profit_center', 'label' => '店铺所属利润中心'], - ['name' => 'store_manager', 'label' => '店铺负责人'], - ['name' => 'department_manager', 'label' => '部门负责人'], - ['name' => 'opened_at', 'label' => '开店时间', 'kind' => 'date'], - ['name' => 'status', 'label' => '状态'], - ['name' => 'can_change', 'label' => '能否变更'], - ['name' => 'entity', 'label' => '主体'], - ['name' => 'company_type', 'label' => '公司类型'], - ['name' => 'effective_at', 'label' => '生效时间', 'kind' => 'date'], - ['name' => 'invalid_at', 'label' => '失效时间', 'kind' => 'date'], - ['name' => 'period_sales', 'label' => '期间销量', 'kind' => 'number'], - ...array_map(static fn (int $month): array => [ - 'name' => sprintf('sales_%02d', $month), - 'label' => sprintf('%d月销量', $month), - 'kind' => 'number', - ], range(1, 12)), - ], - ], - ], - [ - 'slug' => 'basic-information', - 'title' => '店铺基础信息', - 'directory' => [ - 'icon' => 'storefront', - 'status' => '既有只读上游', - 'description' => '沿用现有店铺资料只读链路;Excel 中的店铺 ID、续签时间和提现账户待字段映射后补充。', - 'empty' => '尚未读取到店铺基础资料。请检查共享镜像或上游同步状态。', - 'fields' => [ - ['name' => 'platform', 'label' => '平台'], - ['name' => 'store_id', 'label' => '店铺ID'], - ['name' => 'store_name', 'label' => '店铺名称', 'source' => 'erp_store_name'], - ['name' => 'store_entity', 'label' => '店铺主体', 'source' => 'company_name'], - ['name' => 'store_status', 'label' => '店铺状态'], - ['name' => 'trademark', 'label' => '商标', 'source' => 'trademark_name'], - ['name' => 'trademark_number', 'label' => '商标号'], - ['name' => 'business_department', 'label' => '业务部门', 'source' => 'profit_center'], - ['name' => 'store_manager', 'label' => '店铺负责人'], - ['name' => 'department_manager', 'label' => '部门负责人'], - ['name' => 'opened_at', 'label' => '开店时间', 'kind' => 'date'], - ['name' => 'renewed_at', 'label' => '续签时间'], - ['name' => 'withdrawal_account', 'label' => '提现账户', 'kind' => 'secret'], - ], - ], - ], - [ - 'slug' => 'change-progress', - 'title' => '店铺变更进度表', - 'directory' => [ - 'icon' => 'sync_alt', - 'status' => '尚未同步', - 'description' => '按 Excel 固定店铺主体变更的账号、接替公司、进度和办理留痕字段。', - 'empty' => '店铺变更进度数据尚未同步。', - 'fields' => [ - ['name' => 'company_name', 'label' => '公司名称'], - ['name' => 'erp_store_name', 'label' => 'ERP系统店铺名称'], - ['name' => 'department', 'label' => '部门'], - ['name' => 'store_manager', 'label' => '店铺负责人'], - ['name' => 'department_manager', 'label' => '部门负责人'], - ['name' => 'account', 'label' => '账号'], - ['name' => 'password', 'label' => '密码', 'kind' => 'secret'], - ['name' => 'successor_company', 'label' => '接替公司'], - ['name' => 'progress', 'label' => '进度'], - ['name' => 'completed', 'label' => '是否完成'], - ['name' => 'completed_at', 'label' => '完成时间', 'kind' => 'date'], - ['name' => 'handler', 'label' => '办理人'], - ], - ], - ], - ], - ], - [ - 'slug' => 'product-inventory', - 'title' => '商品及库存管理', - 'icon' => 'inventory_2', - 'pages' => [ - ['slug' => 'normal-products', 'title' => '普通商品资料'], + ['slug' => 'store-report', 'title' => '店铺维度经营报表'], + ['slug' => 'store-information', 'title' => '店铺基础信息'], + ['slug' => 'store-change-progress', 'title' => '店铺变更进度表'], ], ], [ @@ -311,16 +99,6 @@ return [ ['slug' => 'vipshop', 'title' => '唯品会账户'], ], ], - [ - 'slug' => 'platform-promotion-accounts', - 'title' => '平台推广账户流水', - 'tabs' => [ - ['slug' => 'jd', 'title' => '京东京准通'], - ['slug' => 'douyin', 'title' => '抖音千川'], - ['slug' => 'dewu', 'title' => '得物推广账户'], - ['slug' => 'vip', 'title' => 'VIP(唯品会)'], - ], - ], ['slug' => 'deposit-account-balance', 'title' => '店铺保证金账户余额'], [ 'slug' => 'deposit-account-bills', @@ -362,15 +140,8 @@ return [ 'title' => '订单数据', 'icon' => 'receipt_long', 'pages' => [ - [ - 'slug' => 'raw-data', - 'title' => '原始数据', - 'tabs' => [ - ['slug' => 'after-sales-expenses', 'title' => '订单售后费用明细'], - ['slug' => 'promotion-expenses', 'title' => '商品推广费用明细'], - ], - ], - ['slug' => 'bill-offset', 'title' => '账单冲减'], + ['slug' => 'after-sales-expenses', 'title' => '订单售后费用明细'], + ['slug' => 'promotion-expenses', 'title' => '商品推广费用明细'], ], ], [ @@ -379,7 +150,7 @@ return [ 'icon' => 'assignment_return', 'pages' => [ ['slug' => 'jingxi-refund-data', 'title' => '京喜退款数据'], - ['slug' => 'non-jingxi-refund-data', 'title' => '售后(退货退款)'], + ['slug' => 'non-jingxi-refund-data', 'title' => '非京喜退款数据'], ], ], [ @@ -426,14 +197,11 @@ return [ 'icon' => 'local_shipping', 'pages' => [ ['slug' => 'quote-management', 'title' => '报价管理'], - ['slug' => 'courier-information', 'title' => '快递资料'], - ['slug' => 'agreement-signing', 'title' => '协议签署'], ['slug' => 'freight-reconciliation', 'title' => '运费对账'], ['slug' => 'bookkeeping-details', 'title' => '记账明细'], ['slug' => 'compensation-details', 'title' => '赔偿明细'], ['slug' => 'advance-details', 'title' => '借支明细'], ['slug' => 'other-adjustments', 'title' => '其他扣款补款'], - ['slug' => 'payable-cloud-warehouse-vehicle-fee', 'title' => '应付云仓车费'], ['slug' => 'courier-payables-report', 'title' => '快递应付表'], ], ], @@ -537,64 +305,9 @@ return [ ], ], [ - 'slug' => 'other', - 'title' => '其他', - 'icon' => 'more_horiz', - 'pages' => [ - [ - 'slug' => 'todos', - 'title' => '待办事项', - 'directory' => [ - 'icon' => 'task_alt', - 'status' => '尚未同步', - 'description' => '预警、审批、定时任务和人工创建事项共用一套待办字段,形成责任分派与处理留痕。', - 'empty' => '待办事项尚未同步。完成任务来源和处理流程接入后,这里会显示待办记录。', - 'fields' => [ - ['name' => 'todo_number', 'label' => '待办编号'], - ['name' => 'source_type', 'label' => '来源类型'], - ['name' => 'business_type', 'label' => '业务类型'], - ['name' => 'related_object', 'label' => '关联店铺/主体'], - ['name' => 'task_content', 'label' => '任务内容'], - ['name' => 'owner', 'label' => '责任人'], - ['name' => 'collaborator', 'label' => '协同人'], - ['name' => 'due_at', 'label' => '截止日期', 'kind' => 'date'], - ['name' => 'priority', 'label' => '优先级'], - ['name' => 'current_node', 'label' => '当前节点'], - ['name' => 'result', 'label' => '处理结果'], - ['name' => 'attachment', 'label' => '附件'], - ['name' => 'overdue', 'label' => '是否逾期'], - ['name' => 'closed_by', 'label' => '关闭人'], - ['name' => 'closed_at', 'label' => '关闭日期', 'kind' => 'date'], - ], - ], - ], - [ - 'slug' => 'warnings', - 'title' => '预警页面', - 'directory' => [ - 'icon' => 'warning', - 'status' => '尚未同步', - 'description' => '集中展示销量、税务、主体、人员、商标和续签风险,并可关联待办编号追踪处理结果。', - 'empty' => '预警数据尚未同步。完成规则引擎和预警来源接入后,这里会显示风险记录。', - 'fields' => [ - ['name' => 'warning_number', 'label' => '预警编号'], - ['name' => 'warning_type', 'label' => '预警类型'], - ['name' => 'risk_level', 'label' => '风险等级'], - ['name' => 'related_object', 'label' => '关联对象'], - ['name' => 'risk_description', 'label' => '风险描述'], - ['name' => 'impact_amount', 'label' => '影响金额', 'kind' => 'number'], - ['name' => 'trigger_rule', 'label' => '触发规则'], - ['name' => 'triggered_at', 'label' => '触发时间', 'kind' => 'date'], - ['name' => 'owner', 'label' => '责任人'], - ['name' => 'collaborator', 'label' => '协同人'], - ['name' => 'due_at', 'label' => '截止时间', 'kind' => 'date'], - ['name' => 'todo_number', 'label' => '待办编号'], - ['name' => 'status', 'label' => '处理状态'], - ['name' => 'evidence', 'label' => '处理证据'], - ['name' => 'closed_by_date', 'label' => '关闭人/日期'], - ], - ], - ], - ], + 'slug' => 'todos', + 'title' => '待办事项', + 'icon' => 'task_alt', + 'pages' => [], ], ]; diff --git a/resources/views/business/pages/company-management/company-information.blade.php b/resources/views/business/pages/company-management/company-information.blade.php new file mode 100644 index 00000000..f561d4b6 --- /dev/null +++ b/resources/views/business/pages/company-management/company-information.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['统一社会信用代码', '公司名称', '纳税人类型', '公司状态', '认缴注册资本(万元)', '注册时间', '法人', '股东', '监事', '开票员', '城市', '注册地址', '经营范围', '基本存款账户信息', '认缴时间']]) diff --git a/resources/views/business/pages/company-management/company-progress.blade.php b/resources/views/business/pages/company-management/company-progress.blade.php new file mode 100644 index 00000000..024f6a36 --- /dev/null +++ b/resources/views/business/pages/company-management/company-progress.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['公司名称', '公司类型', '当前进度', '是否完成', '完成时间', '办理人']]) diff --git a/resources/views/business/pages/company-management/entity-report.blade.php b/resources/views/business/pages/company-management/entity-report.blade.php new file mode 100644 index 00000000..35c6b95b --- /dev/null +++ b/resources/views/business/pages/company-management/entity-report.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['市', '主体', '公司类型', 'ERP系统店铺名称', '店铺所属利润中心', '店铺负责人', '部门负责人', '开店时间', '状态', '展示近3个月月度销量', '连续12个月店铺累计销量', '连续12个月主体累计销量', '能否变更主体', '规划', '新主体']]) diff --git a/resources/views/business/pages/company-management/people-inventory.blade.php b/resources/views/business/pages/company-management/people-inventory.blade.php new file mode 100644 index 00000000..d81c9960 --- /dev/null +++ b/resources/views/business/pages/company-management/people-inventory.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['人员名称', '花名', '职位', '标签', '税务局账号', '税务局密码', '部门', '部门负责人', '身份证号码', '实名手机号', '电话卡保管人', '身份证地址', '公司类型', '合计担任公司数量', '保留担任公司数量', '可担任公司数量']]) diff --git a/resources/views/business/pages/partials/prototype-table.blade.php b/resources/views/business/pages/partials/prototype-table.blade.php new file mode 100644 index 00000000..8e377cda --- /dev/null +++ b/resources/views/business/pages/partials/prototype-table.blade.php @@ -0,0 +1,34 @@ +@php + $columns = $prototypeColumns ?? []; +@endphp + +
+
+
+ + {{ $page['title'] ?? '业务页面' }} · 数据列表 +
+
+
+ + + + + @foreach ($columns as $column) + + @endforeach + + + + + + + +
#{{ $column }}
+
+ +
页面结构已接入,业务数据尚未接入。
+
+
+
+
diff --git a/resources/views/business/pages/store-management/store-change-progress.blade.php b/resources/views/business/pages/store-management/store-change-progress.blade.php new file mode 100644 index 00000000..f836ec60 --- /dev/null +++ b/resources/views/business/pages/store-management/store-change-progress.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['公司名称', 'ERP系统店铺名称', '部门', '店铺负责人', '部门负责人', '账号', '密码', '接替公司', '进度', '是否完成', '完成时间', '办理人']]) diff --git a/resources/views/business/pages/store-management/store-information.blade.php b/resources/views/business/pages/store-management/store-information.blade.php new file mode 100644 index 00000000..427db9ea --- /dev/null +++ b/resources/views/business/pages/store-management/store-information.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['平台', '店铺ID', '店铺名称', '店铺主体', '店铺状态', '商标', '商标号', '业务部门', '店铺负责人', '部门负责人', '开店时间', '续签时间', '提现账户']]) diff --git a/resources/views/business/pages/store-management/store-report.blade.php b/resources/views/business/pages/store-management/store-report.blade.php new file mode 100644 index 00000000..47dd66eb --- /dev/null +++ b/resources/views/business/pages/store-management/store-report.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['ERP系统店铺名称', '店铺ID(唯一值)', '店铺所属利润中心', '店铺负责人', '部门负责人', '开店时间', '状态', '能否变更', '主体', '公司类型', '生效时间', '失效时间', '期间销量', '1月销量', '2月销量', '3月销量', '4月销量', '5月销量', '6月销量', '7月销量', '8月销量', '9月销量', '10月销量', '11月销量', '12月销量']]) diff --git a/resources/views/business/pages/trademark-management/trademark-information.blade.php b/resources/views/business/pages/trademark-management/trademark-information.blade.php new file mode 100644 index 00000000..cc1ca2e7 --- /dev/null +++ b/resources/views/business/pages/trademark-management/trademark-information.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['商标名称', '商标号', '商标状态', '注册时间', '有效期', '国际分类', '核定使用商品', '最终持有人', '注册地址', '保管部门']]) diff --git a/resources/views/business/pages/trademark-management/trademark-progress.blade.php b/resources/views/business/pages/trademark-management/trademark-progress.blade.php new file mode 100644 index 00000000..6fa5489f --- /dev/null +++ b/resources/views/business/pages/trademark-management/trademark-progress.blade.php @@ -0,0 +1 @@ +@include('business.pages.partials.prototype-table', ['prototypeColumns' => ['商标名称', '商标号', '业务', '进度', '是否完成', '完成时间', '办理人']]) diff --git a/tests/Feature/Settings/NavigationTest.php b/tests/Feature/Settings/NavigationTest.php index 317d4e93..15bb1729 100644 --- a/tests/Feature/Settings/NavigationTest.php +++ b/tests/Feature/Settings/NavigationTest.php @@ -9,7 +9,7 @@ use Tests\Feature\FeatureTestCase; class NavigationTest extends FeatureTestCase { - public function testAdminCanUpdateSidebarLabels() + public function testAdminSeesReferenceBusinessNavigation() { $this->user->roles()->sync([ Role::where('name', 'admin')->firstOrFail()->id, @@ -24,22 +24,23 @@ class NavigationTest extends FeatureTestCase ->assertOk() ->assertSeeText('侧边栏功能名称'); - $this->patch(route('settings.navigation.save'), [ - 'section_titles' => [ - 'company-management' => '企业档案', - ], - 'page_titles' => [ - 'company-management' => [ - 'subject-operating-report' => '主体经营', - ], - ], - ])->assertOk(); - $navigation = BusinessNavigation::all(); - $companyRegistration = collect($navigation[0]['pages'])->firstWhere('slug', 'subject-operating-report'); - - $this->assertSame('企业档案', $navigation[0]['title']); - $this->assertSame('主体经营', $companyRegistration['title']); + $this->assertSame( + ['company-management', 'trademark-management', 'store-management'], + array_slice(array_column($navigation, 'slug'), 0, 3) + ); + $this->assertSame( + ['people-inventory', 'company-progress', 'company-information', 'entity-report'], + array_column($navigation[0]['pages'], 'slug') + ); + $this->assertSame( + ['trademark-progress', 'trademark-information'], + array_column($navigation[1]['pages'], 'slug') + ); + $this->assertSame( + ['store-report', 'store-information', 'store-change-progress'], + array_column($navigation[2]['pages'], 'slug') + ); } public function testOrderDataAndRefundAreConfiguredBetweenInvoiceAndReceivablesMenus() @@ -63,29 +64,12 @@ class NavigationTest extends FeatureTestCase $this->assertLessThan($receivablesIndex, $refundIndex); $this->assertSame('订单数据', $orderData['title']); $this->assertSame( - ['raw-data', 'bill-offset'], + ['after-sales-expenses', 'promotion-expenses'], array_column($orderData['pages'], 'slug') ); - $this->assertSame( - ['原始数据', '账单冲减'], - array_column($orderData['pages'], 'title') - ); - $this->assertSame( - ['after-sales-expenses', 'promotion-expenses'], - array_column($orderData['pages'][0]['tabs'], 'slug') - ); $this->assertSame( ['订单售后费用明细', '商品推广费用明细'], - array_column($orderData['pages'][0]['tabs'], 'title') - ); - $this->assertArrayNotHasKey('children', $orderData['pages'][0]); - $this->assertSame( - ['bill-offset'], - array_column(array_slice($orderData['pages'], 1), 'slug') - ); - $this->assertSame( - ['账单冲减'], - array_column(array_slice($orderData['pages'], 1), 'title') + array_column($orderData['pages'], 'title') ); $this->assertSame('退款', $refund['title']); $this->assertSame('assignment_return', $refund['icon']); @@ -94,7 +78,7 @@ class NavigationTest extends FeatureTestCase array_column($refund['pages'], 'slug') ); $this->assertSame( - ['京喜退款数据', '售后(退货退款)'], + ['京喜退款数据', '非京喜退款数据'], array_column($refund['pages'], 'title') ); }