更新
This commit is contained in:
1 parent
184d5b0403
commit
a758966fae
18 files changed
+2002
-19
No files matched your search
@@ -307,6 +307,97 @@ func (c *AppOaController) ExpenseRecords() {
|
||||
c.oaOk(rows)
|
||||
}
|
||||
|
||||
// expenseActPayload 审批操作请求体。
|
||||
type expenseActPayload struct {
|
||||
Comment string `json:"comment"`
|
||||
}
|
||||
|
||||
// expenseReadActPayload 读取审批意见(可空)。
|
||||
func (c *AppOaController) expenseReadActPayload() string {
|
||||
var payload expenseActPayload
|
||||
raw, err := io.ReadAll(c.Ctx.Request.Body)
|
||||
if err == nil && len(raw) > 0 {
|
||||
_ = json.Unmarshal(raw, &payload)
|
||||
}
|
||||
return strings.TrimSpace(payload.Comment)
|
||||
}
|
||||
|
||||
// ExpenseApprove POST /api/oa/expense/approve/:id 通过当前审批节点(body: {comment})。
|
||||
// 审批人视角:无需是单据创建人,只要是当前节点待办审批人即可操作。
|
||||
func (c *AppOaController) ExpenseApprove() {
|
||||
claims, err := c.oaClaims()
|
||||
if err != nil {
|
||||
c.oaErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
id := c.oaScheduleIDParam()
|
||||
if id == 0 {
|
||||
c.oaErr(400, 400, "无效ID")
|
||||
return
|
||||
}
|
||||
|
||||
code, msg, hint := reimburseActCore(claims, id, true, c.expenseReadActPayload())
|
||||
if msg != "" {
|
||||
c.oaErr(code, code, msg)
|
||||
return
|
||||
}
|
||||
c.oaOk(map[string]interface{}{"message": hint})
|
||||
}
|
||||
|
||||
// ExpenseReject POST /api/oa/expense/reject/:id 驳回报销单(body: {comment})。
|
||||
func (c *AppOaController) ExpenseReject() {
|
||||
claims, err := c.oaClaims()
|
||||
if err != nil {
|
||||
c.oaErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
id := c.oaScheduleIDParam()
|
||||
if id == 0 {
|
||||
c.oaErr(400, 400, "无效ID")
|
||||
return
|
||||
}
|
||||
|
||||
code, msg, hint := reimburseActCore(claims, id, false, c.expenseReadActPayload())
|
||||
if msg != "" {
|
||||
c.oaErr(code, code, msg)
|
||||
return
|
||||
}
|
||||
c.oaOk(map[string]interface{}{"message": hint})
|
||||
}
|
||||
|
||||
// ExpenseMyApproveTask GET /api/oa/expense/my-approve-task/:id
|
||||
// 查当前用户在该单据上的待审批任务:返回 {task_id,node_name},无待办返回 data=null。
|
||||
// 小程序详情页据此决定是否展示「通过/驳回」按钮。
|
||||
func (c *AppOaController) ExpenseMyApproveTask() {
|
||||
claims, err := c.oaClaims()
|
||||
if err != nil {
|
||||
c.oaErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
id := c.oaScheduleIDParam()
|
||||
if id == 0 {
|
||||
c.oaErr(400, 400, "无效ID")
|
||||
return
|
||||
}
|
||||
|
||||
task, err := reimburseMyTaskCore(claims, id)
|
||||
if err != nil {
|
||||
c.oaErr(500, 500, "查询审批任务失败")
|
||||
return
|
||||
}
|
||||
if task == nil {
|
||||
c.oaOk(nil)
|
||||
return
|
||||
}
|
||||
c.oaOk(map[string]interface{}{
|
||||
"task_id": task.ID,
|
||||
"node_name": task.NodeName,
|
||||
})
|
||||
}
|
||||
|
||||
// ExpenseTypes GET /api/oa/expense/types 费用类型下拉(全局通用 + 本租户专有,仅启用)。
|
||||
func (c *AppOaController) ExpenseTypes() {
|
||||
claims, err := c.oaClaims()
|
||||
|
||||
Reference in new issue
Block a user