========================================================================
饭卡卡面打印 - 菜单/权限手工添加清单 (2026-09-20)
========================================================================

说明：以下内容需要管理员在对应环境手工添加（UPMS 管理端「菜单管理」或直接执行 SQL）。
SQL 按租户幂等，风格与 db/20260918_hard_coffee_dict_menu.txt 一致。
菜单 parent_id 依赖各环境实际菜单主键：模板页与「钱包开卡」菜单同级
（参照 permission='wallet_walletActive_view' 的菜单取父级），打印按钮挂在「钱包开卡」页面菜单下。

前端页面：
  卡面模板管理  src/views/wallet/card-template/index.vue（内嵌可视化设计器）
  打印入口      src/views/wallet/wallet-active/index.vue 操作列/工具栏（本机打印助手配合）

------------------------------------------------------------------------
一、页面菜单：卡面模板（与钱包开卡同级）
------------------------------------------------------------------------

INSERT INTO `pjcloudx`.`sys_menu`
(`menu_id`, `name`, `permission`, `path`, `component`, `parent_id`, `icon`, `visible`, `sort_order`, `keep_alive`, `embedded`, `menu_type`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `tenant_id`)
SELECT (SELECT GREATEST(COALESCE(MAX(`menu_id`), 0), 2026092000000000000) FROM `pjcloudx`.`sys_menu`) + ROW_NUMBER() OVER (ORDER BY sibling.`tenant_id`, sibling.`menu_id`),
       '卡面模板', 'wallet_cardTemplate_view', '/wallet/card-template', 'wallet/card-template/index',
       sibling.`parent_id`, NULL, '1', 50, '0', '0', '0',
       'system', NOW(), 'system', NOW(), '0', sibling.`tenant_id`
FROM `pjcloudx`.`sys_menu` sibling
WHERE sibling.`permission` = 'wallet_walletActive_view' AND sibling.`del_flag` = '0'
  AND NOT EXISTS (
      SELECT 1 FROM `pjcloudx`.`sys_menu` existing
      WHERE existing.`tenant_id` = sibling.`tenant_id`
        AND existing.`permission` = 'wallet_cardTemplate_view' AND existing.`del_flag` = '0'
  );

------------------------------------------------------------------------
二、按钮权限：卡面模板 新增/编辑/删除（挂在卡面模板页面菜单下）
------------------------------------------------------------------------

INSERT INTO `pjcloudx`.`sys_menu`
(`menu_id`, `name`, `permission`, `parent_id`, `visible`, `sort_order`, `keep_alive`, `embedded`, `menu_type`, `create_by`, `create_time`, `del_flag`, `tenant_id`)
SELECT (SELECT GREATEST(COALESCE(MAX(`menu_id`), 0), 2026092000000000000) FROM `pjcloudx`.`sys_menu`) + ROW_NUMBER() OVER (ORDER BY page_menu.`tenant_id`, page_menu.`menu_id`, item.`sort`),
       item.`name`, item.`permission`, page_menu.`menu_id`,
       '1', item.`sort`, '0', '0', '2', 'system', NOW(), '0', page_menu.`tenant_id`
FROM `pjcloudx`.`sys_menu` page_menu
JOIN (
    SELECT '新增模板' AS `name`, 'wallet_cardTemplate_add' AS `permission`, 1 AS `sort`
    UNION ALL SELECT '编辑模板', 'wallet_cardTemplate_edit', 2
    UNION ALL SELECT '删除模板', 'wallet_cardTemplate_del', 3
) item ON item.`name` IS NOT NULL
WHERE page_menu.`permission` = 'wallet_cardTemplate_view' AND page_menu.`menu_type` = '0' AND page_menu.`del_flag` = '0'
  AND NOT EXISTS (
      SELECT 1 FROM `pjcloudx`.`sys_menu` existing
      WHERE existing.`tenant_id` = page_menu.`tenant_id`
        AND existing.`permission` = item.`permission` AND existing.`del_flag` = '0'
  );

------------------------------------------------------------------------
三、按钮权限：钱包开卡页「打印卡面」（挂在钱包开卡页面菜单下）
------------------------------------------------------------------------

INSERT INTO `pjcloudx`.`sys_menu`
(`menu_id`, `name`, `permission`, `parent_id`, `visible`, `sort_order`, `keep_alive`, `embedded`, `menu_type`, `create_by`, `create_time`, `del_flag`, `tenant_id`)
SELECT (SELECT GREATEST(COALESCE(MAX(`menu_id`), 0), 2026092000000000000) FROM `pjcloudx`.`sys_menu`) + ROW_NUMBER() OVER (ORDER BY page_menu.`tenant_id`, page_menu.`menu_id`),
       '打印卡面', 'wallet_walletActive_print', page_menu.`menu_id`,
       '1', 30, '0', '0', '2', 'system', NOW(), '0', page_menu.`tenant_id`
FROM `pjcloudx`.`sys_menu` page_menu
WHERE page_menu.`permission` = 'wallet_walletActive_view' AND page_menu.`menu_type` = '0' AND page_menu.`del_flag` = '0'
  AND NOT EXISTS (
      SELECT 1 FROM `pjcloudx`.`sys_menu` existing
      WHERE existing.`tenant_id` = page_menu.`tenant_id`
        AND existing.`permission` = 'wallet_walletActive_print' AND existing.`del_flag` = '0'
  );

------------------------------------------------------------------------
四、后端权限字符串与接口对应关系（前端页面取用）
------------------------------------------------------------------------

wallet_cardTemplate_view:
  GET  /wallet/card-template/page     卡面模板分页（管理页）

wallet_cardTemplate_add:
  POST /wallet/card-template          新增卡面模板

wallet_cardTemplate_edit:
  PUT  /wallet/card-template          修改卡面模板

wallet_cardTemplate_del:
  DELETE /wallet/card-template        删除卡面模板

登录即可（无权限注解，打印抽屉取模板用）：
  GET  /wallet/card-template/list     卡面模板全量列表
  GET  /wallet/card-template/{id}     卡面模板详情

wallet_walletActive_print:
  前端按钮权限（v-auth），不对应后端接口；打印数据直接复用开卡列表行数据。
