做双端审批流
This commit is contained in:
1 parent
5b4dbb2b46
commit
ffaadc26ae
69 files changed
+6662
-1071
No files matched your search
+14
-14
@@ -1,12 +1,12 @@
|
||||
/**
|
||||
* 移动端认证接口 — 对接 Go /app/*
|
||||
* 移动端认证接口 — 对接 Go /api/*
|
||||
*/
|
||||
import { request, requestRaw } from '@/api/request.js'
|
||||
|
||||
/** 账号密码登录(旧:租户端直登) */
|
||||
export function login(data) {
|
||||
return request({
|
||||
url: '/app/login',
|
||||
url: '/api/login',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -157,7 +157,7 @@ export function revokeUAC(data = {}) {
|
||||
/** 发送登录验证码(账号二次校验用,需后台开启验证) */
|
||||
export function sendLoginCode(data) {
|
||||
return request({
|
||||
url: '/app/sendLoginCode',
|
||||
url: '/api/sendLoginCode',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -166,7 +166,7 @@ export function sendLoginCode(data) {
|
||||
/** 手机号验证码登录 */
|
||||
export function loginBySms(data) {
|
||||
return request({
|
||||
url: '/app/loginBySms',
|
||||
url: '/api/loginBySms',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -175,7 +175,7 @@ export function loginBySms(data) {
|
||||
/** 退出登录(后端无状态,失败可忽略;短超时避免卡住) */
|
||||
export function logoutApi(data = {}) {
|
||||
return request({
|
||||
url: '/app/logout',
|
||||
url: '/api/logout',
|
||||
method: 'POST',
|
||||
data,
|
||||
silent: true,
|
||||
@@ -186,7 +186,7 @@ export function logoutApi(data = {}) {
|
||||
/** 当前用户信息 */
|
||||
export function getCurrentUser() {
|
||||
return request({
|
||||
url: '/app/currentUser',
|
||||
url: '/api/currentUser',
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
@@ -194,7 +194,7 @@ export function getCurrentUser() {
|
||||
/** 是否开启登录人机/验证码校验 */
|
||||
export function getOpenVerify() {
|
||||
return request({
|
||||
url: '/app/login/getOpenVerify',
|
||||
url: '/api/login/getOpenVerify',
|
||||
method: 'GET',
|
||||
silent: true,
|
||||
timeout: 8000
|
||||
@@ -204,7 +204,7 @@ export function getOpenVerify() {
|
||||
/** 极验 3 配置 */
|
||||
export function getGeetest3Infos() {
|
||||
return request({
|
||||
url: '/app/login/getGeetest3Infos',
|
||||
url: '/api/login/getGeetest3Infos',
|
||||
method: 'GET',
|
||||
silent: true
|
||||
})
|
||||
@@ -213,7 +213,7 @@ export function getGeetest3Infos() {
|
||||
/** 极验 4 配置 */
|
||||
export function getGeetest4Infos() {
|
||||
return request({
|
||||
url: '/app/login/getGeetest4Infos',
|
||||
url: '/api/login/getGeetest4Infos',
|
||||
method: 'GET',
|
||||
silent: true,
|
||||
timeout: 8000
|
||||
@@ -223,7 +223,7 @@ export function getGeetest4Infos() {
|
||||
/** 注册 */
|
||||
export function register(data) {
|
||||
return request({
|
||||
url: '/app/register',
|
||||
url: '/api/register',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -232,7 +232,7 @@ export function register(data) {
|
||||
/** 发送注册验证码 */
|
||||
export function sendRegisterCode(data) {
|
||||
return request({
|
||||
url: '/app/sendRegisterCode',
|
||||
url: '/api/sendRegisterCode',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -241,7 +241,7 @@ export function sendRegisterCode(data) {
|
||||
/** 重置密码 */
|
||||
export function resetPassword(data) {
|
||||
return request({
|
||||
url: '/app/resetPassword',
|
||||
url: '/api/resetPassword',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -250,7 +250,7 @@ export function resetPassword(data) {
|
||||
/** 验证租户和账号(找回密码第一步) */
|
||||
export function verifyAccount(data) {
|
||||
return request({
|
||||
url: '/app/verifyAccount',
|
||||
url: '/api/verifyAccount',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@@ -259,7 +259,7 @@ export function verifyAccount(data) {
|
||||
/** 发送找回密码验证码(找回密码第二步) */
|
||||
export function sendResetCode(data) {
|
||||
return request({
|
||||
url: '/app/sendResetCode',
|
||||
url: '/api/sendResetCode',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 通讯录(移动端)接口封装。
|
||||
* 对应后端 go/controllers/app_contact.go 的 /app/oa/contact/* 只读接口。
|
||||
* 对应后端 go/controllers/app_contact.go 的 /api/oa/contact/* 只读接口。
|
||||
*/
|
||||
import { request } from '@/api/request.js'
|
||||
|
||||
@@ -48,7 +48,7 @@ export function primaryPhone(contact) {
|
||||
/** 分页查询通讯录 */
|
||||
export async function fetchContacts(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/oa/contact/list',
|
||||
url: '/api/oa/contact/list',
|
||||
data: {
|
||||
page: params.page || 1,
|
||||
pageSize: params.pageSize || 20,
|
||||
@@ -62,10 +62,10 @@ export async function fetchContacts(params = {}) {
|
||||
|
||||
/** 组织架构树(含各部门内部联系人数量) */
|
||||
export function fetchContactOrgTree() {
|
||||
return request({ url: '/app/oa/contact/org-tree' })
|
||||
return request({ url: '/api/oa/contact/org-tree' })
|
||||
}
|
||||
|
||||
/** 联系人详情 */
|
||||
export function getContact(id) {
|
||||
return request({ url: `/app/oa/contact/${id}` })
|
||||
return request({ url: `/api/oa/contact/${id}` })
|
||||
}
|
||||
+6
-6
@@ -5,7 +5,7 @@ import { request } from '@/api/request.js'
|
||||
*/
|
||||
export async function fetchNotes(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/notebook/list',
|
||||
url: '/api/notebook/list',
|
||||
data: {
|
||||
keyword: params.keyword || ''
|
||||
}
|
||||
@@ -23,7 +23,7 @@ export async function fetchNotes(params = {}) {
|
||||
* 获取单条笔记
|
||||
*/
|
||||
export async function getNote(id) {
|
||||
const data = await request({ url: `/app/notebook/${id}` })
|
||||
const data = await request({ url: `/api/notebook/${id}` })
|
||||
if (!data) return null
|
||||
return {
|
||||
...data,
|
||||
@@ -38,7 +38,7 @@ export async function getNote(id) {
|
||||
*/
|
||||
export async function createNote(data) {
|
||||
const res = await request({
|
||||
url: '/app/notebook',
|
||||
url: '/api/notebook',
|
||||
method: 'POST',
|
||||
data: {
|
||||
title: data.title || '',
|
||||
@@ -54,7 +54,7 @@ export async function createNote(data) {
|
||||
*/
|
||||
export async function updateNote(id, data) {
|
||||
const res = await request({
|
||||
url: `/app/notebook/${id}`,
|
||||
url: `/api/notebook/${id}`,
|
||||
method: 'PUT',
|
||||
data: {
|
||||
title: data.title || '',
|
||||
@@ -69,7 +69,7 @@ export async function updateNote(id, data) {
|
||||
* 删除笔记
|
||||
*/
|
||||
export async function deleteNote(id) {
|
||||
await request({ url: `/app/notebook/${id}`, method: 'DELETE' })
|
||||
await request({ url: `/api/notebook/${id}`, method: 'DELETE' })
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ export async function deleteNote(id) {
|
||||
*/
|
||||
export async function toggleNotePin(id) {
|
||||
const res = await request({
|
||||
url: `/app/notebook/${id}/togglePin`,
|
||||
url: `/api/notebook/${id}/togglePin`,
|
||||
method: 'POST'
|
||||
})
|
||||
return res
|
||||
|
||||
+39
-12
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* OA 协同办公(移动端)接口封装。
|
||||
* 对应后端 go/controllers/app_oa.go 的 /app/oa/* 只读接口。
|
||||
* 对应后端 go/controllers/app_oa.go 的 /api/oa/* 只读接口。
|
||||
*/
|
||||
import { request } from '@/api/request.js'
|
||||
|
||||
@@ -110,7 +110,7 @@ export function formatFileSize(size) {
|
||||
|
||||
export async function fetchNotices(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/oa/notice/list',
|
||||
url: '/api/oa/notice/list',
|
||||
data: {
|
||||
page: params.page || 1,
|
||||
pageSize: params.pageSize || 20,
|
||||
@@ -121,18 +121,18 @@ export async function fetchNotices(params = {}) {
|
||||
}
|
||||
|
||||
export function getNotice(id) {
|
||||
return request({ url: `/app/oa/notice/${id}` })
|
||||
return request({ url: `/api/oa/notice/${id}` })
|
||||
}
|
||||
|
||||
// ---------------- 文档库 ----------------
|
||||
|
||||
export function fetchDocCategories(scope = 'shared') {
|
||||
return request({ url: '/app/oa/document/categories', data: { scope } })
|
||||
return request({ url: '/api/oa/document/categories', data: { scope } })
|
||||
}
|
||||
|
||||
export async function fetchDocs(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/oa/document/list',
|
||||
url: '/api/oa/document/list',
|
||||
data: {
|
||||
scope: params.scope || 'shared',
|
||||
keyword: params.keyword || '',
|
||||
@@ -148,22 +148,22 @@ export async function fetchDocs(params = {}) {
|
||||
}
|
||||
|
||||
export function getDoc(id) {
|
||||
return request({ url: `/app/oa/document/${id}` })
|
||||
return request({ url: `/api/oa/document/${id}` })
|
||||
}
|
||||
|
||||
export function downloadDoc(id) {
|
||||
return request({ url: `/app/oa/document/download/${id}` })
|
||||
return request({ url: `/api/oa/document/download/${id}` })
|
||||
}
|
||||
|
||||
export function toggleDocStar(id) {
|
||||
return request({ url: `/app/oa/document/${id}/star`, method: 'POST' })
|
||||
return request({ url: `/api/oa/document/${id}/star`, method: 'POST' })
|
||||
}
|
||||
|
||||
// ---------------- 薪酬工资单(仅本人) ----------------
|
||||
|
||||
export async function fetchPayrolls(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/oa/compensation/payrolls',
|
||||
url: '/api/oa/compensation/payrolls',
|
||||
data: {
|
||||
payroll_month: params.payrollMonth || '',
|
||||
page: params.page || 1,
|
||||
@@ -174,11 +174,38 @@ export async function fetchPayrolls(params = {}) {
|
||||
}
|
||||
|
||||
export function getPayroll(id) {
|
||||
return request({ url: `/app/oa/compensation/payrolls/${id}` })
|
||||
return request({ url: `/api/oa/compensation/payrolls/${id}` })
|
||||
}
|
||||
|
||||
// ---------------- 员工档案(仅本人) ----------------
|
||||
// ---------------- 员工档案 ----------------
|
||||
|
||||
/** 当前用户是否具备 HR 视角(可见全公司档案)。角色里勾了「员工档案」菜单即为 HR。 */
|
||||
export async function getEmployeeFileAccess() {
|
||||
const data = await request({ url: '/api/oa/employee-file/access' })
|
||||
return !!(data && data.can_view_all)
|
||||
}
|
||||
|
||||
/** 全公司档案分页列表(HR),支持 keyword / status / org_id */
|
||||
export async function fetchEmployeeFiles(params = {}) {
|
||||
const data = await request({
|
||||
url: '/api/oa/employee-file/list',
|
||||
data: {
|
||||
keyword: params.keyword || '',
|
||||
status: params.status || 0,
|
||||
org_id: params.orgId || 0,
|
||||
page: params.page || 1,
|
||||
pageSize: params.pageSize || 20
|
||||
}
|
||||
})
|
||||
return { list: (data && data.list) || [], total: (data && data.total) || 0 }
|
||||
}
|
||||
|
||||
/** 指定员工档案详情(含教育/工作/合同/证照子记录) */
|
||||
export function getEmployeeFileDetail(id) {
|
||||
return request({ url: `/api/oa/employee-file/detail/${id}` })
|
||||
}
|
||||
|
||||
/** 本人档案(无 HR 权限时的兜底视图) */
|
||||
export function getMyEmployeeFile() {
|
||||
return request({ url: '/app/oa/employee-file' })
|
||||
return request({ url: '/api/oa/employee-file' })
|
||||
}
|
||||
@@ -61,7 +61,7 @@ export function normalizeSchedule(item) {
|
||||
*/
|
||||
export async function fetchSchedules(params = {}) {
|
||||
const data = await request({
|
||||
url: '/app/schedule/list',
|
||||
url: '/api/schedule/list',
|
||||
data: {
|
||||
page: params.page || 1,
|
||||
pageSize: params.pageSize || 50,
|
||||
@@ -77,7 +77,7 @@ export async function fetchSchedules(params = {}) {
|
||||
* 获取单条日程
|
||||
*/
|
||||
export async function getSchedule(id) {
|
||||
const data = await request({ url: `/app/schedule/${id}` })
|
||||
const data = await request({ url: `/api/schedule/${id}` })
|
||||
return data ? normalizeSchedule(data) : null
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ export async function createSchedule(data) {
|
||||
return ch.toUpperCase()
|
||||
})
|
||||
const res = await request({
|
||||
url: '/app/schedule',
|
||||
url: '/api/schedule',
|
||||
method: 'POST',
|
||||
data: {
|
||||
content: data.content,
|
||||
@@ -113,7 +113,7 @@ export async function updateSchedule(id, data) {
|
||||
return ch.toUpperCase()
|
||||
})
|
||||
await request({
|
||||
url: `/app/schedule/${id}`,
|
||||
url: `/api/schedule/${id}`,
|
||||
method: 'PUT',
|
||||
data: {
|
||||
content: data.content,
|
||||
@@ -130,7 +130,7 @@ export async function updateSchedule(id, data) {
|
||||
* 删除日程
|
||||
*/
|
||||
export async function deleteSchedule(id) {
|
||||
await request({ url: `/app/schedule/${id}`, method: 'DELETE' })
|
||||
await request({ url: `/api/schedule/${id}`, method: 'DELETE' })
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ export async function deleteSchedule(id) {
|
||||
*/
|
||||
export async function toggleScheduleComplete(id) {
|
||||
const res = await request({
|
||||
url: `/app/schedule/${id}/toggle`,
|
||||
url: `/api/schedule/${id}/toggle`,
|
||||
method: 'POST'
|
||||
})
|
||||
return {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* 移动端「工作台」接口
|
||||
*
|
||||
* /app/home 一次返回首屏所需的全部数据(应用模块卡片 + 可见菜单 + KPI),
|
||||
* /api/home 一次返回首屏所需的全部数据(应用模块卡片 + 可见菜单 + KPI),
|
||||
* 避免移动端首屏多次往返。
|
||||
*/
|
||||
import { request } from '@/api/request.js'
|
||||
@@ -18,7 +18,7 @@ let cacheAt = 0
|
||||
export async function fetchHome(force = false) {
|
||||
if (!force && cache && Date.now() - cacheAt < CACHE_TTL) return cache
|
||||
const data = await request({
|
||||
url: '/app/home',
|
||||
url: '/api/home',
|
||||
method: 'GET',
|
||||
silent: true,
|
||||
timeout: 15000
|
||||
|
||||
Reference in new issue
Block a user