更新
This commit is contained in:
1 parent
4ab63e77ed
commit
eb9b7beff5
16 files changed
+1031
-91
No files matched your search
@@ -482,6 +482,12 @@ func (c *BackendApprovalController) Options() {
|
||||
"code": m.Code, "name": m.Name, "enabled": enabled,
|
||||
})
|
||||
}
|
||||
// 进销存单据运行期按 biz_type = "erp_" + doc_type 找流程。这里额外开放「采购订单审批」
|
||||
// 分类,让用户能配出只作用于采购订单的流程;不配时仍会回落到模块级 erp 流程。
|
||||
// 分类 code 即 biz_type,与 FlowSave 的「分类与单据类型对齐」约定一致。
|
||||
moduleList = append(moduleList, map[string]interface{}{
|
||||
"code": models.ApprovalBizPurchaseOrder, "name": "采购订单审批", "enabled": true,
|
||||
})
|
||||
|
||||
// 租户用户
|
||||
var tu []models.SystemTenantUser
|
||||
|
||||
@@ -142,6 +142,25 @@ func (c *BackendApprovalRuntimeController) InstanceTodo() {
|
||||
} else {
|
||||
qs = qs.Filter("status", models.ApprovalTaskPending)
|
||||
}
|
||||
// 审批任务自带 biz_type,直接在任务查询上过滤,total 与分页才准确。
|
||||
// erp = 只查进销存单据;non_erp = 只查其它审批,两个审批列表互不混入。
|
||||
if bizType := strings.TrimSpace(c.GetString("biz_type")); bizType != "" {
|
||||
switch bizType {
|
||||
case "erp", "erp_":
|
||||
qs = qs.Filter("biz_type__startswith", "erp_")
|
||||
case "non_erp":
|
||||
// 用已知单据类型精确排除,避免依赖 Exclude 对前缀操作符的支持
|
||||
erpBizTypes := make([]string, 0, len(erpDocTypes))
|
||||
for docType := range erpDocTypes {
|
||||
erpBizTypes = append(erpBizTypes, models.ErpDocApprovalBizType(docType))
|
||||
}
|
||||
if len(erpBizTypes) > 0 {
|
||||
qs = qs.Exclude("biz_type__in", erpBizTypes)
|
||||
}
|
||||
default:
|
||||
qs = qs.Filter("biz_type", bizType)
|
||||
}
|
||||
}
|
||||
|
||||
total, _ := qs.Count()
|
||||
var tasks []models.ApprovalTask
|
||||
@@ -163,6 +182,7 @@ func (c *BackendApprovalRuntimeController) InstanceTodo() {
|
||||
continue
|
||||
}
|
||||
taskView := oaApprovalTaskView(t, true, oaApprovalNodeTypes(inst)[t.NodeKey])
|
||||
taskView["instance_id"] = t.InstanceID
|
||||
taskView["instance"] = oaApprovalInstanceView(inst)
|
||||
list = append(list, taskView)
|
||||
}
|
||||
|
||||
@@ -578,6 +578,11 @@ func erpDocExecutableCore(a erpActor, id uint64) (map[string]interface{}, int, s
|
||||
if e != nil {
|
||||
return nil, 404, "单据未找到"
|
||||
}
|
||||
// 只有已生效单据可作为下推来源;作废、草稿、审批中、驳回都直接拒绝,
|
||||
// 与保存时 erpValidateDocHead 的来源状态校验保持一致,避免绕过前端菜单
|
||||
if doc.Status != models.ErpDocStatusApproved {
|
||||
return nil, 400, "来源单据未生效,不能下推"
|
||||
}
|
||||
isReturn := doc.DocType == models.ErpDocPurchaseReturn || doc.DocType == models.ErpDocSalesReturn
|
||||
items := erpDocItems(models.Orm, doc.ID)
|
||||
out := make([]map[string]interface{}, 0, len(items))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
-- ============================================================
|
||||
-- 目标结构(「大类」= 模块根下一层目录,会作为移动端功能页的分组标题;
|
||||
-- 「小类」= 叶子菜单,渲染为功能卡片):
|
||||
-- 工作台 -> 工作台(复用已有仪表盘页面 /apps/erp/dashboard)
|
||||
-- 工作台(目录)-> 工作台(仪表盘 /apps/erp/dashboard)/ 审批列表(/apps/erp/workbench/approval)
|
||||
-- 基础资料 -> 商品 / 供应商 / 客户 / 仓库
|
||||
-- 采购管理 -> 采购订单 / 采购入库 / 采购退货
|
||||
-- 销售管理 -> 销售订单 / 销售出库 / 销售退货
|
||||
@@ -36,6 +36,12 @@ FROM DUAL
|
||||
WHERE @erp_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/apps/erp/workbench' AND delete_time IS NULL) x);
|
||||
|
||||
-- 工作台必须是目录:历史数据里可能被建成了页面,统一纠正,目录内才放工作台/审批列表两个页面
|
||||
UPDATE yz_system_menu
|
||||
SET type = 1, component_path = NULL, update_time = NOW()
|
||||
WHERE delete_time IS NULL AND path = '/apps/erp/workbench'
|
||||
AND (type <> 1 OR (component_path IS NOT NULL AND component_path <> ''));
|
||||
|
||||
INSERT INTO yz_system_menu
|
||||
(pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark)
|
||||
SELECT @erp_id, '基础资料', '/apps/erp/basic', NULL, 'fa-solid fa-database', 2, 1, 1, '[2]', 1, 'system', '进销存大类:基础资料'
|
||||
@@ -91,9 +97,9 @@ SET @erp_basic := (SELECT id FROM yz_system_menu WHERE path = '/apps/erp/bas
|
||||
SET @erp_system := (SELECT id FROM yz_system_menu WHERE path = '/apps/erp/system' AND delete_time IS NULL LIMIT 1);
|
||||
|
||||
-- ---------- 2. 已有菜单迁入新树(避免同一功能出现两份) ----------
|
||||
-- 仪表盘 -> 工作台大类,并更名为「工作台」;路由与页面文件不变
|
||||
-- 仪表盘 -> 工作台目录内的「工作台」页面;路由与页面文件不变
|
||||
UPDATE yz_system_menu
|
||||
SET pid = @erp_workbench, title = '工作台', sort = 1, update_time = NOW()
|
||||
SET pid = @erp_workbench, title = '工作台', sort = 1, type = 2, update_time = NOW()
|
||||
WHERE delete_time IS NULL AND path = '/apps/erp/dashboard' AND @erp_workbench IS NOT NULL;
|
||||
|
||||
-- 供应商列表 / 客户列表 -> 基础资料大类,去掉「列表」后缀;路由与页面文件不变
|
||||
@@ -127,6 +133,8 @@ CREATE TEMPORARY TABLE tmp_erp_leaf (
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
INSERT INTO tmp_erp_leaf (parent_path, title, path, icon, sort, remark) VALUES
|
||||
('/apps/erp/workbench', '工作台', '/apps/erp/dashboard', 'fa-solid fa-gauge', 1, '进销存工作台(仪表盘)'),
|
||||
('/apps/erp/workbench', '审批列表', '/apps/erp/workbench/approval', 'fa-solid fa-clipboard-check', 2, '待我审批 / 我已处理,审批后单据自动生效'),
|
||||
('/apps/erp/basic', '商品', '/apps/erp/basic/product', 'fa-solid fa-box', 1, '商品档案'),
|
||||
('/apps/erp/basic', '仓库', '/apps/erp/basic/warehouse', 'fa-solid fa-boxes-packing', 4, '仓库档案'),
|
||||
('/apps/erp/purchase', '采购订单', '/apps/erp/purchase/order', 'fa-solid fa-file-invoice', 1, '采购订单'),
|
||||
@@ -168,6 +176,8 @@ CREATE TEMPORARY TABLE tmp_erp_page (
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
INSERT INTO tmp_erp_page (path, component_path) VALUES
|
||||
('/apps/erp/dashboard', '/apps/erp/dashboard/index.vue'),
|
||||
('/apps/erp/workbench/approval', '/apps/erp/workbench/approvalList.vue'),
|
||||
('/apps/erp/basic/product', '/apps/erp/basic/product.vue'),
|
||||
('/apps/erp/basic/warehouse', '/apps/erp/basic/warehouse.vue'),
|
||||
('/apps/erp/purchase/order', '/apps/erp/purchase/order.vue'),
|
||||
|
||||
@@ -44,9 +44,10 @@ const (
|
||||
|
||||
// 单据类型
|
||||
const (
|
||||
ApprovalBizReimburse = "reimburse" // OA 报销单
|
||||
ApprovalBizBid = "bid" // CRM 投标立项
|
||||
ApprovalBizDomain = "domain" // 域名申请(平台侧审批)
|
||||
ApprovalBizReimburse = "reimburse" // OA 报销单
|
||||
ApprovalBizBid = "bid" // CRM 投标立项
|
||||
ApprovalBizDomain = "domain" // 域名申请(平台侧审批)
|
||||
ApprovalBizPurchaseOrder = "erp_purchase_order" // 采购订单审批(与 ErpDocApprovalBizType 一致)
|
||||
)
|
||||
|
||||
// ---------------- 租户侧配置 ----------------
|
||||
|
||||
Reference in new issue
Block a user