feat: API层完全对齐原始v200 + 登录页验证码逻辑修复
- 重写19个API模块,170+函数完全对齐原始JavaScript - 修复登录页: captchaEnabled默认true, getCodeImgs对齐原始, localStorage key对齐zhsw-* - 修复HTTP模块: code===0成功码, 60s超时, 无Bearer前缀Token - 修复userStore: setTokenFromLogin, UserInfo类型 - 新建rsaUtil.ts: RSA长文本加密 - 路由守卫验证通过, 浏览器全链路零报错
This commit is contained in:
68
src/api/clientQR.ts
Normal file
68
src/api/clientQR.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* 客户端二维码 / 排水户 / 设备 API
|
||||
*
|
||||
* @module api/clientQR
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 获取排水户详情
|
||||
* @param data - 查询数据
|
||||
*/
|
||||
export function queryTSwJcPshAll(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/queryTSwJcPshAll',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备详情
|
||||
* @param params - { equipmentId }
|
||||
*/
|
||||
export function getEquipmentDetail(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/equipment/getEquipmentList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备型号
|
||||
* @param params - { equipmentType }
|
||||
*/
|
||||
export function getSbxh(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/equipment/getSbxhList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取设备迁移列表
|
||||
* @param params - { equipmentId, page?, size? }
|
||||
*/
|
||||
export function getMigrateList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/migrate/getList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取维修记录列表
|
||||
* @param params - { equipmentId, page?, size? }
|
||||
*/
|
||||
export function getRepairList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/repair/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
@@ -1,139 +1,225 @@
|
||||
/**
|
||||
* 通用 API
|
||||
*
|
||||
* 包含文件上传、字典查询、验证码获取、系统配置等公共接口。
|
||||
* 包含文件上传、图片处理、字典查询、公告、防汛值班、
|
||||
* 天气预报、平台使用上报、设备跟踪等公共接口。
|
||||
* 匹配原始 JavaScript API(index.js + uploadImg.js)的完整行为。
|
||||
*
|
||||
* @module api/common
|
||||
*/
|
||||
|
||||
import { post, get } from '@/utils/http'
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 请求参数类型
|
||||
// 类型定义
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 文件上传响应 */
|
||||
export interface UploadResult {
|
||||
/** 文件在服务器上的存储名称 */
|
||||
fileName: string
|
||||
/** 文件可访问的完整 URL */
|
||||
url: string
|
||||
/** 表单数据查询参数 */
|
||||
export interface CommonQueryParams {
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
/** 字典项 */
|
||||
export interface DictItem {
|
||||
/** 字典标签(显示用) */
|
||||
dictLabel: string
|
||||
/** 字典值(存储用) */
|
||||
dictValue: string
|
||||
/** 字典类型 */
|
||||
dictType?: string
|
||||
/** CSS 类名(用于表格回显样式) */
|
||||
cssClass?: string
|
||||
/** 列表样式 */
|
||||
listClass?: string
|
||||
/** 是否默认 */
|
||||
isDefault?: string
|
||||
/** 排序号 */
|
||||
dictSort?: number
|
||||
/** 平台使用上报数据 */
|
||||
export interface PlatUsageData {
|
||||
menuId: string
|
||||
userId: string
|
||||
type: string | number
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
/** 验证码图片响应 */
|
||||
export interface CaptchaResult {
|
||||
/** 验证码唯一标识,登录时需要回传 */
|
||||
uuid: string
|
||||
/** Base64 编码的验证码图片 */
|
||||
img: string
|
||||
/** 是否开启验证码 */
|
||||
captchaEnabled: boolean
|
||||
}
|
||||
|
||||
/** 系统配置项 */
|
||||
export interface ConfigItem {
|
||||
/** 参数键名 */
|
||||
configKey: string
|
||||
/** 参数值 */
|
||||
configValue: string
|
||||
/** 枚举查询数据 */
|
||||
export interface SourceEnumData {
|
||||
mjfzbm?: string
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// API 方法
|
||||
// 文件 / 图片相关(不使用 SW_PATH)
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
* 支持图片、文档等文件上传,使用 FormData 格式。
|
||||
* 使用 http.uploadFile 方法,以 multipart/form-data 格式上传。
|
||||
*
|
||||
* @param file - 要上传的文件对象
|
||||
* @returns 上传结果,包含文件名和访问 URL
|
||||
* @returns Promise
|
||||
*/
|
||||
export function uploadFile(file: File): Promise<UploadResult> {
|
||||
export function uploadFile(file: File) {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
return (http as any).uploadFile(formData)
|
||||
}
|
||||
|
||||
return post<UploadResult>('/common/upload', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
/**
|
||||
* 上传图片 URL(获取下载地址)
|
||||
*
|
||||
* @param data - 请求数据
|
||||
* @returns Promise
|
||||
*/
|
||||
export function uploadImgUrl(data?: any) {
|
||||
return http.request({
|
||||
url: '/file/v2/api-docs/file-minio/object/download',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量上传文件
|
||||
* @param files - 文件对象数组
|
||||
* @returns 上传结果数组
|
||||
* 获取在线图片(以 blob 形式下载)
|
||||
*
|
||||
* @param downloadUrl - 图片下载地址
|
||||
* @param buckName - Bucket 名称(默认 swfile)
|
||||
* @returns Promise(blob 响应)
|
||||
*/
|
||||
export async function uploadFiles(files: File[]): Promise<UploadResult[]> {
|
||||
const results: UploadResult[] = []
|
||||
for (const file of files) {
|
||||
const result = await uploadFile(file)
|
||||
results.push(result)
|
||||
}
|
||||
return results
|
||||
export function getOnLineImgs(downloadUrl: string, buckName?: string) {
|
||||
return http.request({
|
||||
url: '/file/file-minio/object/getImg',
|
||||
method: 'get',
|
||||
params: {
|
||||
downloadUrl,
|
||||
fileName: uuidv4(),
|
||||
buckName: buckName || 'swfile',
|
||||
},
|
||||
responseType: 'blob',
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 字典(不使用 SW_PATH)
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
* 获取字典数据
|
||||
*
|
||||
* 根据字典类型查询对应的字典项列表,用于下拉框、单选框等组件的数据源。
|
||||
* 根据字典类型查询字典数据信息
|
||||
*
|
||||
* @param dictType - 字典类型标识,如 'sys_user_sex'
|
||||
* @returns 字典项数组
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getDictData(dictType: string): Promise<DictItem[]> {
|
||||
return get<DictItem[]>('/system/dict/data/type', { dictType })
|
||||
export function getDicts(dictType: string) {
|
||||
return http.request({
|
||||
url: '/system/dict/data/type/' + dictType,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 公告 / 防汛值班 / 天气预报 / 液位等(使用 SW_PATH)
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
* 获取最新公告
|
||||
*
|
||||
* @param params - 查询参数
|
||||
* @returns Promise
|
||||
*/
|
||||
export function publicNoticeLast(params?: CommonQueryParams) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/publicNotice/last',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据字典类型获取字典数据(RESTful 风格)
|
||||
* @param dictType - 字典类型标识
|
||||
* @returns 字典项数组
|
||||
* 查询当前防汛值班
|
||||
*
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getDictDataByType(dictType: string): Promise<DictItem[]> {
|
||||
return get<DictItem[]>(`/system/dict/data/type/${dictType}`)
|
||||
export function floodDutyCurrentDay() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodDuty/duty/currentDay',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证码图片
|
||||
* @returns 验证码信息(uuid 和 base64 图片)
|
||||
* 获取易涝点液位深度信息
|
||||
*
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getCaptcha(): Promise<CaptchaResult> {
|
||||
return get<CaptchaResult>('/captchaImage')
|
||||
export function getDepthInfo() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/getDepthInfo',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据配置键获取系统配置值
|
||||
* @param configKey - 配置键名
|
||||
* @returns 配置项的值
|
||||
* 当前防汛日报
|
||||
*
|
||||
* @param params - 查询参数
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getConfigValue(configKey: string): Promise<string> {
|
||||
return get<string>(`/system/config/configKey/${configKey}`)
|
||||
export function floodDailyReportCurrent(params?: CommonQueryParams) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/rainreview/floodDailyReportCurrent',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统配置项详情
|
||||
* @param configKey - 配置键名
|
||||
* @returns 配置项完整信息
|
||||
* 获取 3 日天气预报
|
||||
*
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getConfigItem(configKey: string): Promise<ConfigItem> {
|
||||
return get<ConfigItem>(`/system/config/configKey/${configKey}`)
|
||||
export function get3dWeather() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/get3dWeather',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报用户平台使用记录
|
||||
*
|
||||
* @param data - 使用记录数据 {menuId, userId, type: '1'}
|
||||
* @returns Promise
|
||||
*/
|
||||
export function reportPlatUsage(data: PlatUsageData) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/platformUsage/reportPlatUsage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户获取绑定的设备信息
|
||||
*
|
||||
* @param params - 查询参数,如 {userid: '...'}
|
||||
* @returns Promise
|
||||
*/
|
||||
export function getTrackEquipmentByUser(params?: CommonQueryParams) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/equipmentTrack/getTrackEquipmentByUser',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询枚举信息
|
||||
*
|
||||
* @param data - 查询数据,如 {mjfzbm: '...'}
|
||||
* @returns Promise
|
||||
*/
|
||||
export function querySourceEnumAll(data?: SourceEnumData) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/querySourceEnumAll',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当月已经返回的区域列表(当月已考核过的区域列表)
|
||||
*/
|
||||
export function getCheckXzqhList() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/getSwYhKhTaskListByCurrentMonth',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
165
src/api/fxgl.ts
Normal file
165
src/api/fxgl.ts
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* 防汛管理 API
|
||||
*
|
||||
* @module api/fxgl
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 查询最新的防汛响应等级
|
||||
*/
|
||||
export function getSwDataFxxydjLatest(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/getSwDataFxxydjLatest',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所属单位下面的组长和组员列表
|
||||
* @param data
|
||||
* @param data.userid 用户id
|
||||
*/
|
||||
export function getSwDataFxrySsdwDkList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/getSwDataFxrySsdwDkList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所属单位下面的组长和组员列表
|
||||
* @param data
|
||||
* @param data.leaderid 组长id
|
||||
*/
|
||||
export function getSwDataFxryZzDkList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/getSwDataFxryZzDkList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所属单位下面的组长和组员列表
|
||||
* @param data
|
||||
* @param data.zzid 组长id
|
||||
* @param data.ssdw 所属单位
|
||||
* @param data.ssdwname 所属单位名称
|
||||
* @param data.ry 打卡人员,用逗号分隔
|
||||
* @param data.pic 照片
|
||||
*/
|
||||
export function saveSwDataFxryDk(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/saveSwDataFxryDk',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的调度指令列表
|
||||
*/
|
||||
export function getSwDataFxddZlDdByuserid(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/getSwDataFxddZlDdByuserid',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存防汛调度指令人车调度打卡
|
||||
* @param data
|
||||
* @param data.ddid 调度id
|
||||
* @param data.pic 打卡照片
|
||||
*/
|
||||
export function saveSwDataFxddZlDdDk(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/saveSwDataFxddZlDdDk',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存防汛调度指令人车调度打卡
|
||||
* @param data
|
||||
* @param data.current 当前页码
|
||||
* @param data.size 每页显示记录数
|
||||
*/
|
||||
export function getSwDataCkPage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/ckwz/getSwDataCkPage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门列表
|
||||
*/
|
||||
export function getDeptCodeNew() {
|
||||
return http.request({
|
||||
url: '/system/dept/getDepts/allTree',
|
||||
method: 'get',
|
||||
params: { status: '0' },
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新防汛人员状态
|
||||
* @param data
|
||||
* @param data.userid userid
|
||||
* @param data.shape 点位
|
||||
*/
|
||||
export function updateSwDataFxryStatus(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/fxData/updateSwDataFxryStatus',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 仓库信息详情
|
||||
*/
|
||||
export function getSwDataCkVo(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/ckwz/getSwDataCkVo',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 仓库物资入库
|
||||
* @param data
|
||||
* @param data.ckid 仓库id
|
||||
* @param data.list 物资列表
|
||||
*/
|
||||
export function inboundCkWzInfo(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/ckwz/inboundCkWzInfo',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 仓库物资出库
|
||||
* @param data
|
||||
* @param data.ckid 仓库id
|
||||
* @param data.list 物资列表
|
||||
*/
|
||||
export function outboundCkWzInfo(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/ckwz/outboundCkWzInfo',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
276
src/api/index.ts
276
src/api/index.ts
@@ -4,39 +4,275 @@
|
||||
* 统一导出所有 API 子模块的方法和类型,业务代码只需
|
||||
* `import { login, getUserInfo } from '@/api'` 即可使用。
|
||||
*
|
||||
* 完全匹配原始 yuto-water-mobile-v200 JavaScript API 层。
|
||||
*
|
||||
* @module api
|
||||
*/
|
||||
|
||||
// ── 用户模块 ──
|
||||
export {
|
||||
login,
|
||||
getCodeImg,
|
||||
updateUserPwd,
|
||||
getUserInfo,
|
||||
logout,
|
||||
resetPassword,
|
||||
} from './user'
|
||||
export type {
|
||||
LoginParams,
|
||||
LoginResult,
|
||||
ResetPasswordParams,
|
||||
UserInfo,
|
||||
listUser,
|
||||
getHierarchicalLeader,
|
||||
getUserListByDeptIds,
|
||||
getUserListByIds,
|
||||
getUserListByPostIds,
|
||||
getUserListByRoleIds,
|
||||
} from './user'
|
||||
export type { LoginUserInfo, UpdatePwdUserInfo, UserQuery, UserInfo } from './user'
|
||||
|
||||
// ── 通用模块 ──
|
||||
export {
|
||||
uploadFile,
|
||||
uploadFiles,
|
||||
getDictData,
|
||||
getDictDataByType,
|
||||
getCaptcha,
|
||||
getConfigValue,
|
||||
getConfigItem,
|
||||
} from './common'
|
||||
export type {
|
||||
UploadResult,
|
||||
DictItem,
|
||||
CaptchaResult,
|
||||
ConfigItem,
|
||||
uploadImgUrl,
|
||||
getOnLineImgs,
|
||||
getDicts,
|
||||
publicNoticeLast,
|
||||
floodDutyCurrentDay,
|
||||
getDepthInfo,
|
||||
floodDailyReportCurrent,
|
||||
get3dWeather,
|
||||
reportPlatUsage,
|
||||
getTrackEquipmentByUser,
|
||||
querySourceEnumAll,
|
||||
getCheckXzqhList,
|
||||
} from './common'
|
||||
export type { CommonQueryParams, PlatUsageData, SourceEnumData } from './common'
|
||||
|
||||
// ── 养护模块 ──
|
||||
export {
|
||||
planTaskList,
|
||||
planTaskListDynamic,
|
||||
taskList,
|
||||
yhitems,
|
||||
yhitemsDynamic,
|
||||
maintenanceObj,
|
||||
maintenanceObjDynamic,
|
||||
maintenanceMobileList,
|
||||
querySourceTableClassAll,
|
||||
queryGxGdByGeomJl,
|
||||
saveSwDataQnfd,
|
||||
saveSwDataYxkjzy,
|
||||
queryJdjByGeomJl,
|
||||
relationEquipmentList,
|
||||
relationEquipmentListDynamic,
|
||||
cloclin,
|
||||
getTaskDetail,
|
||||
updateStatus,
|
||||
maintenancePlanList,
|
||||
maintenancePlanListDynamic,
|
||||
clockinList,
|
||||
newJYDreport,
|
||||
addTSwDataXjyh,
|
||||
workOrderMyTodo,
|
||||
workOrderMyFinished,
|
||||
workOrderMyStarted,
|
||||
querySourceDetails,
|
||||
workOrderFeedbackList,
|
||||
workOrderFeedback,
|
||||
jcdwList,
|
||||
workOrderRepair,
|
||||
getEquipmentList,
|
||||
querySourceSymbolAll,
|
||||
querySymbolByScode,
|
||||
} from './maintenance'
|
||||
|
||||
// ── 巡检模块 ──
|
||||
export {
|
||||
getSwTaskMobilePage,
|
||||
getXjTaskMileageTrackingList,
|
||||
saveSwXjTaskTrack,
|
||||
saveXjTaskMileage,
|
||||
saveTaskClockinMobileDetail,
|
||||
getSwTaskPage,
|
||||
getXjTaskDetail,
|
||||
getSwXjTaskRateClockinMobile,
|
||||
saveSwXjProblem,
|
||||
getRelationEquipmentList,
|
||||
updateSwXjTaskRateMobile,
|
||||
getSwXjTaskClockinAllVo,
|
||||
getSwXjTaskNoClockinAllVo,
|
||||
saveTaskClockinDetail,
|
||||
getTaskStatusMobileByRateId,
|
||||
getTaskInfoLast,
|
||||
getSwXjProblemPage,
|
||||
} from './inspection'
|
||||
|
||||
// ── 防汛模块 ──
|
||||
export {
|
||||
getSwDataFxxydjLatest,
|
||||
getSwDataFxrySsdwDkList,
|
||||
getSwDataFxryZzDkList,
|
||||
saveSwDataFxryDk,
|
||||
getSwDataFxddZlDdByuserid,
|
||||
saveSwDataFxddZlDdDk,
|
||||
getSwDataCkPage,
|
||||
getDeptCodeNew,
|
||||
updateSwDataFxryStatus,
|
||||
getSwDataCkVo,
|
||||
inboundCkWzInfo,
|
||||
outboundCkWzInfo,
|
||||
} from './fxgl'
|
||||
|
||||
// ── 排水户模块 ──
|
||||
export {
|
||||
getPshXjPhoneList,
|
||||
pshXjPhoneClock,
|
||||
listPshXjRound,
|
||||
getPshXjProblemList,
|
||||
getPshXjProblemTaskList,
|
||||
getPshXjKhPhoneTaskList,
|
||||
getPshXjKhPhoneRecordList,
|
||||
reportPshXjKhPhoneRecord,
|
||||
updatePshXjKhTaskStatus,
|
||||
} from './pshgl'
|
||||
|
||||
// ── 监理模块 ──
|
||||
export {
|
||||
getSupervisionEquipmentMileageStatus,
|
||||
getSupervisionCheckItemList,
|
||||
saveSupervisionEquipmentMileage,
|
||||
saveSupervisionRecords,
|
||||
getSupervisionRecordsMobilePage,
|
||||
saveSupervisionRecordsProblem,
|
||||
getSupervisionRecordsDetail,
|
||||
} from './supervisor'
|
||||
|
||||
// ── 地图模块 ──
|
||||
export {
|
||||
getFloodFacilityOverview,
|
||||
getFloodDeviceTotal,
|
||||
queryBasedSpatialInformation,
|
||||
getTypeList as getMapTypeList,
|
||||
getGridForecastInfo,
|
||||
createWindField,
|
||||
createGDYBPolygon,
|
||||
getEquipmentDetailByName,
|
||||
getLdtDataInfoNew,
|
||||
getQweatherApi,
|
||||
getSysResourceCatalogMetadataCountTree,
|
||||
metaDataQueryList,
|
||||
getFieldByClass,
|
||||
getClassByClassGuid,
|
||||
getFacilityRealTimeData,
|
||||
getHistoryData as getMapHistoryData,
|
||||
getSwDataMapList,
|
||||
} from './map'
|
||||
|
||||
// ── 地图服务模块 ──
|
||||
export { getAllService, getServiceListThemeByRole } from './mapService'
|
||||
|
||||
// ── 养护考核模块 ──
|
||||
export {
|
||||
saveSwYhKh,
|
||||
getSwYhKhCheckList,
|
||||
getSwYhKhMobileList,
|
||||
getSwYhKhList,
|
||||
getSwYhKhListDynamic,
|
||||
metaDataFieldQuery,
|
||||
} from './maintenanceCheck'
|
||||
|
||||
// ── 监测设备模块 ──
|
||||
export {
|
||||
getTypeList as getMonitorTypeList,
|
||||
getRainStationList,
|
||||
getPumpStationList,
|
||||
getRepairRecordList,
|
||||
getList as getMonitorFieldList,
|
||||
getHistoryData as getMonitorHistoryData,
|
||||
getAppTotalNumber,
|
||||
getAlarmThresholdList,
|
||||
getMonitorYjDataPage,
|
||||
getRainfallRealtimeByTime,
|
||||
} from './monitoringEquipment'
|
||||
|
||||
// ── 工作流模块 ──
|
||||
export {
|
||||
getProcessDetail,
|
||||
getApproveList,
|
||||
finishedTaskNode,
|
||||
rejectTask,
|
||||
stopTask,
|
||||
getMyTodoList,
|
||||
getMyFinishedList,
|
||||
getMyStartList,
|
||||
getReturnNodes,
|
||||
returnTask,
|
||||
revokeTask,
|
||||
urgingTask,
|
||||
updateProcessState,
|
||||
deleteProcessInstance,
|
||||
setTaskDelegateUser,
|
||||
setTaskTransfer,
|
||||
getUserList as getWorkflowUserList,
|
||||
addSuperviseComment,
|
||||
cancelSupervise,
|
||||
getTaskAttribute,
|
||||
getNextTaskAttribute,
|
||||
getProcessDetailNew,
|
||||
setNodeTimeout,
|
||||
} from './workflow'
|
||||
|
||||
// ── 项目管理模块 ──
|
||||
export {
|
||||
getProjectList,
|
||||
getProjectMyPhoneDeal,
|
||||
getProjectInfo,
|
||||
projectAudit,
|
||||
getProjectInspectClockin,
|
||||
getProjectInspectReport,
|
||||
getProjectStageTime,
|
||||
} from './projectManagement'
|
||||
|
||||
// ── 工程管理模块 ──
|
||||
export {
|
||||
saveSwDataEngineeringReporting,
|
||||
getSwDataEngineeringReportingPage,
|
||||
updateSwDataEngineeringReporting,
|
||||
saveSwDataEngineeringReportingDetail,
|
||||
getSwDataEngineeringReportingVo,
|
||||
} from './xjgl'
|
||||
|
||||
// ── 有限空间作业模块 ──
|
||||
export {
|
||||
getSwDataYxkjzyPage,
|
||||
getSwDataYxkjzy,
|
||||
saveSwDataYxkjzySubmit,
|
||||
updateSwDataYxkjzy,
|
||||
updateSwDataYxkjzyManholes,
|
||||
} from './yxkjzyRecords'
|
||||
|
||||
// ── 通知模块 ──
|
||||
export {
|
||||
getUnReadMessages,
|
||||
getAllMessages,
|
||||
getTemplate,
|
||||
markAsRead,
|
||||
} from './notice'
|
||||
|
||||
// ── 菜单模块 ──
|
||||
export { getRouters, getRoutersByAppId } from './menu'
|
||||
|
||||
// ── 菜单编辑模块 ──
|
||||
export {
|
||||
getUserWorkStationList,
|
||||
addWorkStationGroup,
|
||||
deleteWorkStationGroup,
|
||||
updateWorkStationGroup,
|
||||
updateWorkStationInfo,
|
||||
} from './menuEdit'
|
||||
|
||||
// ── 二维码客户端模块 ──
|
||||
export {
|
||||
queryTSwJcPshAll,
|
||||
getEquipmentDetail,
|
||||
getSbxh,
|
||||
getMigrateList,
|
||||
getRepairList,
|
||||
} from './clientQR'
|
||||
|
||||
// ── HTTP 工具(便捷导出) ──
|
||||
export { getToken, setToken, removeToken } from '@/utils/http'
|
||||
|
||||
165
src/api/inspection.ts
Normal file
165
src/api/inspection.ts
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* 巡检任务 API
|
||||
*
|
||||
* @module api/inspection
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
// 巡检任务查询
|
||||
export function getSwTaskMobilePage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getSwTaskMobilePage`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 查询当前是否存在任务轨迹信息
|
||||
export function getXjTaskMileageTrackingList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getXjTaskMileageTrackingList`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 监管记录查询
|
||||
* @param data
|
||||
* @param data.type 0 巡检 1 项目管理
|
||||
*/
|
||||
export function saveSwXjTaskTrack(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/saveSwXjTaskTrack`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 保存巡检轨迹里程信息
|
||||
export function saveXjTaskMileage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/saveXjTaskMileage`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 打卡
|
||||
export function saveTaskClockinMobileDetail(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/saveTaskClockinMobileDetail`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 巡检任务查询
|
||||
export function getSwTaskPage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getSwTaskPage`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 巡检任务详情
|
||||
export function getXjTaskDetail(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getXjTaskDetail`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取任务的打卡记录
|
||||
export function getSwXjTaskRateClockinMobile(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getSwXjTaskRateClockinMobile`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 问题上报
|
||||
export function saveSwXjProblem(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjProblem/saveSwXjProblem`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取关联设备
|
||||
export function getRelationEquipmentList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getRelationEquipmentList`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 更新当前任务当天状态
|
||||
export function updateSwXjTaskRateMobile(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/updateSwXjTaskRateMobile`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 打卡日期下面的打卡信息查询
|
||||
export function getSwXjTaskClockinAllVo(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getSwXjTaskClockinAllVo`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 打卡日期下面的打卡信息查询(需要补卡的)
|
||||
export function getSwXjTaskNoClockinAllVo(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getSwXjTaskNoClockinAllVo`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 保存打卡信息 补卡
|
||||
export function saveTaskClockinDetail(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/saveTaskClockinDetail`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// rateId查固定打卡点状态
|
||||
export function getTaskStatusMobileByRateId(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getTaskStatusMobileByRateId`,
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 根据x,y查询最近的巡检任务
|
||||
export function getTaskInfoLast(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/swXjTask/getTaskInfoLast`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取巡检任务的上报
|
||||
export const getSwXjProblemPage = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/swXjProblem/getSwXjProblemPage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
354
src/api/maintenance.ts
Normal file
354
src/api/maintenance.ts
Normal file
@@ -0,0 +1,354 @@
|
||||
/**
|
||||
* 养护管理 API
|
||||
*
|
||||
* 包含养护计划、任务、打卡、设备关联、检查井、气囊封堵、
|
||||
* 有限空间作业、积淹点、问题上报、工单等接口。
|
||||
*
|
||||
* 注意:以下函数已迁移到 common.ts,此处不再重复:
|
||||
* getDicts, publicNoticeLast, floodDutyCurrentDay, getDepthInfo,
|
||||
* floodDailyReportCurrent, querySourceEnumAll, getCheckXzqhList,
|
||||
* reportPlatUsage, get3dWeather, getTrackEquipmentByUser
|
||||
*
|
||||
* @module api/maintenance
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 养护计划
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取当月任务列表 */
|
||||
export function planTaskList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/plan/task/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取当月任务列表(动态) */
|
||||
export function planTaskListDynamic(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/plan/task/listDynamic',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护计划对应任务详情 */
|
||||
export function taskList(planId: string) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/plan/taskList/${planId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护任务对应养护项完成详情 */
|
||||
export function yhitems(taskId: string) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/plan/task/yhitems/${taskId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护任务对应养护项完成详情(动态) */
|
||||
export function yhitemsDynamic(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/plan/task/yhitemsDynamic',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护对象 */
|
||||
export function maintenanceObj(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/maintenanceObj',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护对象(动态) */
|
||||
export function maintenanceObjDynamic(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/maintenanceObjDynamic',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取进行中的养护对象(移动端) */
|
||||
export function maintenanceMobileList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/maintenanceMobileList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护计划列表 */
|
||||
export function maintenancePlanList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/plan/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护计划列表(动态) */
|
||||
export function maintenancePlanListDynamic(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/plan/listDynamic',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 养护任务 / 打卡
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取任务详情 */
|
||||
export function getTaskDetail(taskId: string) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/plan/task/${taskId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取养护任务对应打卡详情 */
|
||||
export function clockinList(taskId: string) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/plan/task/clockinList/${taskId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/** 打卡 */
|
||||
export function cloclin(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/cloclin',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 关联设备
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取关联设备 */
|
||||
export function relationEquipmentList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/task/relationEquipment/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取关联设备(动态) */
|
||||
export function relationEquipmentListDynamic(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/task/relationEquipment/listDynamic',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 设备状态修改 */
|
||||
export function updateStatus(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/task/relationEquipment/updateStatus',
|
||||
method: 'put',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 检查井 / 要素拾取
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取检查井列表 */
|
||||
export function querySourceTableClassAll(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/querySourceTableClassAll',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 要素拾取 — 根据几何和距离查询管线/管道 */
|
||||
export function queryGxGdByGeomJl(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/equipmentLedger/queryGxGdByGeomJl',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询排水户附近的节点井信息 */
|
||||
export function queryJdjByGeomJl(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/queryJdjByGeomJl',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 气囊封堵 / 有限空间作业
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 气囊封堵数据保存 */
|
||||
export function saveSwDataQnfd(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/qnfdData/saveSwDataQnfd',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 有限空间作业数据保存 */
|
||||
export function saveSwDataYxkjzy(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/saveSwDataYxkjzy',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 积淹点 / 问题上报
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 创建积淹点 */
|
||||
export function newJYDreport(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/jydReport/newJYDreport',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 创建问题上报 */
|
||||
export function addTSwDataXjyh(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/problemReporting/addTSwDataXjyh',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 工单
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 我的待办 */
|
||||
export function workOrderMyTodo(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/workOrder/my/todo',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 我的已办 */
|
||||
export function workOrderMyFinished(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/workOrder/my/finished0',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 我的发起 */
|
||||
export function workOrderMyStarted(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/workOrder/my/started',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 上报问题详情 */
|
||||
export function querySourceDetails(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/querySourceDetails',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 上报问题反馈详情 */
|
||||
export function workOrderFeedbackList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/workOrder/feedback/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 工单处置反馈提交 */
|
||||
export function workOrderFeedback(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/workOrder/feedback',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 设备 / 监测点
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取监测点位列表 */
|
||||
export function jcdwList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/jcdw/getJcdwList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/** 新增维修管理工单 */
|
||||
export function workOrderRepair(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/repair/add',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取设备列表(包含监测点信息) */
|
||||
export function getEquipmentList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/equipment/getEquipmentList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 符号库
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 获取符号库列表 */
|
||||
export function querySourceSymbolAll(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/querySourceSymbolAll',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询多个符号样式 */
|
||||
export function querySymbolByScode(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/querySymbolByScode',
|
||||
method: 'post',
|
||||
params,
|
||||
})
|
||||
}
|
||||
96
src/api/maintenanceCheck.ts
Normal file
96
src/api/maintenanceCheck.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* 养护考核 API
|
||||
*
|
||||
* @module api/maintenanceCheck
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 养护考核保存
|
||||
* @param data
|
||||
* @param data.khTime 考核时间
|
||||
* @param data.score 分数
|
||||
* @param data.type 类型
|
||||
* @param data.userid 扣分人
|
||||
* @param data.xzqhdm 行政区划
|
||||
* @param data.yhId 养护id
|
||||
* 有问题额外字段
|
||||
* @param data.checkId 检查项id
|
||||
* @param data.detail 详细描述
|
||||
* @param data.pic 图片
|
||||
* @param data.remake 备注
|
||||
* @param data.shape 点位
|
||||
*/
|
||||
export const saveSwYhKh = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/saveSwYhKh`,
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询养护考核项
|
||||
* @param params
|
||||
* @param params.type 官网, 泵站 , 河道
|
||||
*/
|
||||
export function getSwYhKhCheckList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/maintenance/getSwYhKhCheckList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 养护考核查询
|
||||
* @param data
|
||||
* @param data.time 日期
|
||||
* @param data.type 类型 管网 河道 泵站
|
||||
* @param data.xzqhdm 行政区代码
|
||||
*/
|
||||
export const getSwYhKhMobileList = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/getSwYhKhMobileList`,
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 养护考核查询
|
||||
* @param data
|
||||
* @param data.time 日期
|
||||
* @param data.xzqhdm 行政区代码
|
||||
*/
|
||||
export const getSwYhKhList = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/getSwYhKhList`,
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 养护考核查询
|
||||
* @param data
|
||||
* @param data.time 日期
|
||||
* @param data.xzqhdm 行政区代码
|
||||
*/
|
||||
export const getSwYhKhListDynamic = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/maintenance/getSwYhKhListDynamic`,
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
export const metaDataFieldQuery = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/metaData/field/query`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
215
src/api/map.ts
Normal file
215
src/api/map.ts
Normal file
@@ -0,0 +1,215 @@
|
||||
/**
|
||||
* 地图相关 API
|
||||
*
|
||||
* @module api/map
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 获取防汛设施总览分组
|
||||
* @param params
|
||||
* @param params.type 类型 pc/onemap
|
||||
* @param params.category 分类(可选)
|
||||
*/
|
||||
export const getFloodFacilityOverview = (params: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/getFloodFacilityOverview',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取防汛设备数据总量
|
||||
export const getFloodDeviceTotal = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getFloodTotalNumber',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据classid和空间信息查询数据(新)
|
||||
* @param params
|
||||
* @param params.shape 空间信息(可选)
|
||||
* @param params.classids classIds
|
||||
*/
|
||||
export const queryBasedSpatialInformation = (params: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/sourceNew/queryBasedSpatialInformation',
|
||||
method: 'get',
|
||||
params: params,
|
||||
})
|
||||
}
|
||||
|
||||
// 查询撒点
|
||||
export const getTypeList = (params: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getTypeList',
|
||||
method: 'get',
|
||||
params: params,
|
||||
})
|
||||
}
|
||||
|
||||
// 查询中央气象台智能网格
|
||||
export function getGridForecastInfo(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/getGridForecastInfo',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 风场
|
||||
*/
|
||||
export function createWindField(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/rainreview/createWindField',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function createGDYBPolygon(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/rainreview/createContourPolygon',
|
||||
method: 'post',
|
||||
data: {
|
||||
...params,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名称查询设备详情
|
||||
* @param params
|
||||
* @param params.name 设备名称
|
||||
*/
|
||||
export const getEquipmentDetailByName = (params: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getEquipmentDetailByName',
|
||||
method: 'get',
|
||||
params: params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 雷达图
|
||||
*/
|
||||
export function getLdtDataInfoNew() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/getLdtDataInfoNew',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询台风路径信息
|
||||
* @param data
|
||||
* @param data.name 接口名称(天气预报:yb,实时天气预警:yj,查询历年台风列表:tflb,查询台风轨迹路径:tflj)
|
||||
* @param data.param 查询参数
|
||||
*/
|
||||
export const getQweatherApi = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/floodMonitoring2/getQweatherApi`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询设施编目目录数据
|
||||
* @param data
|
||||
*/
|
||||
export const getSysResourceCatalogMetadataCountTree = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/sysResourceCatalog/getSysResourceCatalogMetadataCountTree`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询设施编目基础类型数据
|
||||
* @param data
|
||||
*/
|
||||
export const metaDataQueryList = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + `/metaData/query/list`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过表分类 获取字段列表
|
||||
* 表分类id tableclassid/classGuid 必传其中一个
|
||||
* @param data
|
||||
* @param data.classGuid 表分类编码(可选)
|
||||
* @param data.name 名称/别名(可选)
|
||||
* @param data.tableclassid 表分类id(可选)
|
||||
*/
|
||||
export function getFieldByClass(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/metaData/field/query',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过表分类编码 获取表分类信息
|
||||
* @param classGuid 表分类编码
|
||||
*/
|
||||
export function getClassByClassGuid(classGuid: string) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/metaData/class/queryByClassGuid',
|
||||
method: 'get',
|
||||
params: {
|
||||
classGuid,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取历史数据监测点监测值类型
|
||||
* @param params 点位id
|
||||
*/
|
||||
export function getFacilityRealTimeData(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getFacilityRealTimeData',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取历史数据
|
||||
* @param params
|
||||
*/
|
||||
export function getHistoryData(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getHistoryData',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 地图服务查询
|
||||
* @param data
|
||||
* @param data.isDisplay 是否显示(默认显示)
|
||||
* @param data.isEnabled 是否启用(默认启用)
|
||||
* @param data.name 名称
|
||||
* @param data.type 类型
|
||||
* @param data.code 服务编码
|
||||
*/
|
||||
export function getSwDataMapList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/mapData/getSwDataMapList`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
30
src/api/mapService.ts
Normal file
30
src/api/mapService.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* 地图服务 API
|
||||
*
|
||||
* @module api/mapService
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
// 获取所有专题图服务
|
||||
export function getAllService() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/specialService/selectall',
|
||||
method: 'post',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询角色和类型对应的服务
|
||||
* @param data
|
||||
* @param data.roles [] 角色
|
||||
* @param data.type 类型(底图(影像,矢量)/ 专题)
|
||||
*/
|
||||
export function getServiceListThemeByRole(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/mapData/getServiceListThemeByRole`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
28
src/api/menu.ts
Normal file
28
src/api/menu.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* 菜单 / 路由 API
|
||||
*
|
||||
* @module api/menu
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
|
||||
/**
|
||||
* 获取菜单路由
|
||||
*/
|
||||
export function getRouters() {
|
||||
return http.request({
|
||||
url: '/system/menu/getRouters',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子系统菜单
|
||||
* @param appId - 子系统 appId
|
||||
*/
|
||||
export function getRoutersByAppId(appId: string) {
|
||||
return http.request({
|
||||
url: `/system/menu/getRoutersByAppId/${appId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
68
src/api/menuEdit.ts
Normal file
68
src/api/menuEdit.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* 工作台菜单编辑 API
|
||||
*
|
||||
* @module api/menuEdit
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 获取用户工作台列表
|
||||
* @param params - 查询参数
|
||||
*/
|
||||
export function getUserWorkStationList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getUserWorkStationList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增分组
|
||||
* @param data - 分组数据
|
||||
*/
|
||||
export function addWorkStationGroup(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/addWorkStationGroup',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除分组
|
||||
* @param params - 删除参数
|
||||
*/
|
||||
export function deleteWorkStationGroup(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/deleteWorkStationGroup',
|
||||
method: 'delete',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分组
|
||||
* @param data - 分组数据
|
||||
*/
|
||||
export function updateWorkStationGroup(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/updateWorkStationGroup',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新工作台信息
|
||||
* @param data - 工作台数据
|
||||
*/
|
||||
export function updateWorkStationInfo(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/updateWorkStationInfo',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
108
src/api/monitoringEquipment.ts
Normal file
108
src/api/monitoringEquipment.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* 监测设备 API
|
||||
*
|
||||
* @module api/monitoringEquipment
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
// 根据获取电子水尺数据
|
||||
export function getTypeList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getTypeList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取雨量站数据
|
||||
*/
|
||||
export function getRainStationList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getRainStationList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取泵站数据
|
||||
*/
|
||||
export function getPumpStationList(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getPumpStationList',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// v2.0 获取维修记录列表
|
||||
export const getRepairRecordList = (params: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/repair/list',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取设备型号的字段列表
|
||||
export const getList = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/sbxhField/sbxhField/getList',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取历史数据
|
||||
export const getHistoryData = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getHistoryData',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取app数据总量(去掉设施和雨量计)
|
||||
export function getAppTotalNumber(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/oneMap/getAppTotalNumber',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// v2.0 获取报警阈值配置列表
|
||||
export const getAlarmThresholdList = (data: any) => {
|
||||
return http.request({
|
||||
url: SW_PATH + '/asset/siteEquipment/warnConfig/getList',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取报警预警数据
|
||||
export function getMonitorYjDataPage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + `/monitorYjData/getMonitorYjDataPage`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取累计雨量
|
||||
* @param params
|
||||
* @param params.startTime 开始时间 '2023-09-20 19:31:47'
|
||||
* @param params.endTime 结束时间 '2023-09-22 19:31:47'
|
||||
* @param params.xzqhdm 行政区划代码 ; 分割
|
||||
*/
|
||||
export function getRainfallRealtimeByTime(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/floodMonitoring2/getRainfallRealtimeByTime',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
56
src/api/notice.ts
Normal file
56
src/api/notice.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* 消息通知 API
|
||||
*
|
||||
* @module api/notice
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 获取未读消息列表
|
||||
* @param params - { pageNum?, pageSize?, supportType? }
|
||||
*/
|
||||
export function getUnReadMessages(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/sysMessage/getUnReadMessages',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全部消息列表
|
||||
* @param params - { pageNum?, pageSize?, supportType? }
|
||||
*/
|
||||
export function getAllMessages(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/sysMessage/getAllMessages',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模板 ID 获取消息模板
|
||||
* @param params - { templateId }
|
||||
*/
|
||||
export function getTemplate(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/sysMessage/getTemplate',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 标记消息为已读
|
||||
* @param params - { recordId }
|
||||
*/
|
||||
export function markAsRead(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/sysMessage/markAsRead',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
91
src/api/projectManagement.ts
Normal file
91
src/api/projectManagement.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* 项目管理 API
|
||||
*
|
||||
* @module api/projectManagement
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 监管记录查询 / 项目列表
|
||||
* @param data - { startTime?, endTime?, stage?, type?, pageNum?, pageSize?, inspectId? }
|
||||
*/
|
||||
export function getProjectList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/list',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的待办
|
||||
*/
|
||||
export function getProjectMyPhoneDeal() {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/myPhoneDeal',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目表单详情
|
||||
* @param params - { projectId, type? }
|
||||
*/
|
||||
export function getProjectInfo(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/info',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目审批
|
||||
* @param projectId - 项目 id
|
||||
* @param data - 审批数据
|
||||
*/
|
||||
export function projectAudit(projectId: string, data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/audit/' + projectId,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动端监理巡检打卡
|
||||
* @param data - { address, checkItemJson, createBy, createTime, description, pic, projectId, projectName, shape }
|
||||
*/
|
||||
export function getProjectInspectClockin(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/inspect/clockin',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动端监理巡检问题上报
|
||||
* @param data - { address, checkItemJson, content, pic, projectId, shape }
|
||||
*/
|
||||
export function getProjectInspectReport(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/inspect/report',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目阶段开始时间表
|
||||
* @param params - { projectId }
|
||||
*/
|
||||
export function getProjectStageTime(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/project/stageTime',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
171
src/api/pshgl.ts
Normal file
171
src/api/pshgl.ts
Normal file
@@ -0,0 +1,171 @@
|
||||
/**
|
||||
* 排水户管理 API
|
||||
*
|
||||
* @module api/pshgl
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 移动端查询待巡检排水户列表
|
||||
* @param data
|
||||
* @param data.mtmc 排水户名称
|
||||
* @param data.sfxc 是否已巡查:0:未巡查,1:已巡查,不传查询全部
|
||||
* @param data.szdl 所在道路名称
|
||||
* @param data.szjd 所在街道id
|
||||
* @param data.xzqh 行政区划id
|
||||
* @param data.pic 图片
|
||||
* @param data.projectId 关联项目Id
|
||||
* @param data.projectName 关联项目name
|
||||
* @param data.shape 上报问题点位
|
||||
*/
|
||||
export function getPshXjPhoneList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/getPshXjPhoneList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动端排水户巡查打卡
|
||||
* @param data
|
||||
* @param data.checkUserId 打卡人id
|
||||
* @param data.checkUserName 打卡人名称
|
||||
* @param data.pic 图片
|
||||
* @param data.pshId 排水户id
|
||||
* @param data.remark 备注
|
||||
* @param data.roundId 轮次id
|
||||
* @param data.shape 巡查打卡位置
|
||||
* @param data.status 状态 1无问题 2有问题
|
||||
* @param data.taskId 轮次任务id
|
||||
* @param data.type 问题类型
|
||||
* @param data.typeName 问题类型名称
|
||||
* @param data.wtms 问题描述
|
||||
*/
|
||||
export function pshXjPhoneClock(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/pshXjPhoneClock',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询排水户所有轮次
|
||||
* @param params
|
||||
* @param params.pageNum
|
||||
* @param params.pageSize
|
||||
*/
|
||||
export function listPshXjRound(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/listPshXjRound',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询排水户巡查问题列表
|
||||
* @param data
|
||||
* @param data.pshName 排水户名称
|
||||
* @param data.roundId 轮次id
|
||||
* @param data.shzt 问题状态
|
||||
* @param data.szjd 所在街道
|
||||
* @param data.type 问题类型
|
||||
* @param data.rwId 派发任务Id
|
||||
* @param data.pageNum
|
||||
* @param data.pageSize
|
||||
*/
|
||||
export function getPshXjProblemList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/getPshXjProblemList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询排水户巡查问题派发任务列表
|
||||
* @param data
|
||||
* @param data.shzt 任务状态
|
||||
* @param data.pageNum
|
||||
* @param data.pageSize
|
||||
*/
|
||||
export function getPshXjProblemTaskList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/getPshXjProblemTaskList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询街道考核任务列表
|
||||
* @param data
|
||||
* @param data.khTime 考核日期
|
||||
* @param data.pageNum
|
||||
* @param data.pageSize
|
||||
* @param data.status 考核状态:待派发|待接收|进行中|已完成
|
||||
* @param data.szjd 街道code
|
||||
*/
|
||||
export function getPshXjKhPhoneTaskList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/getPshXjKhPhoneTaskList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询待考核录列表
|
||||
* @param data
|
||||
* @param data.taskId 考核任务id
|
||||
*/
|
||||
export function getPshXjKhPhoneRecordList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/getPshXjKhPhoneRecordList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报考核任务
|
||||
* @param data
|
||||
* @param data.id id
|
||||
* @param data.taskId 考核任务id
|
||||
* @param data.pshId 排水户id
|
||||
* @param data.status 考核状态:合格,不合格
|
||||
* @param data.remark 考核描述
|
||||
* @param data.pic 考核照片;分号分割
|
||||
*/
|
||||
export function reportPshXjKhPhoneRecord(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/reportPshXjKhPhoneRecord',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 考核管理-任务操作(派发|接收|撤回)
|
||||
* @param data
|
||||
* @param data.jsdw 接收单位(reqType=1必填)
|
||||
* @param data.jsdwid 接收单位id(reqType=1必填)
|
||||
* @param data.jsrid 接收人id(reqType=2必填)
|
||||
* @param data.jsrname 接收人name(reqType=2必填)
|
||||
* @param data.pfrid 派发人id(reqType=1必填)
|
||||
* @param data.pfrname 派发人name(reqType=1必填)
|
||||
* @param data.pshIds 排水户id列表(reqType=1必填)
|
||||
* @param data.reqType 操作类型 1:派发 2:接收 3:派发撤回
|
||||
* @param data.taskId 考核任务id
|
||||
*/
|
||||
export function updatePshXjKhTaskStatus(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/api/v1/drainage/updatePshXjKhTaskStatus',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
103
src/api/supervisor.ts
Normal file
103
src/api/supervisor.ts
Normal file
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* 三方监管 API
|
||||
*
|
||||
* @module api/supervisor
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
// 查询设备当前状态
|
||||
export function getSupervisionEquipmentMileageStatus(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/getSupervisionEquipmentMileageStatus',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 监管检查项目查询
|
||||
export function getSupervisionCheckItemList(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/getSupervisionCheckItemList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 保存监管设备里程信息
|
||||
export function saveSupervisionEquipmentMileage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/saveSupervisionEquipmentMileage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 保存监管记录
|
||||
export function saveSupervisionRecords(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/saveSupervisionRecords',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 监管记录查询
|
||||
* @param data
|
||||
* @param data.type 类型
|
||||
* @param data.xzqhdm 行政区划代码
|
||||
* @param data.time 监管月份 : 年月
|
||||
* @param data.current 当前页码
|
||||
* @param data.size 每页条数
|
||||
*/
|
||||
export function getSupervisionRecordsMobilePage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/getSupervisionRecordsMobilePage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存监管记录问题上报
|
||||
* @param data
|
||||
* @param data.userid 用户id
|
||||
* @param data.facilitiesId 养护任务objectId
|
||||
* @param data.facilitiesName 养护任务名称
|
||||
* @param data.facilitiesType 养护任务类型
|
||||
* @param data.xzqhdm 行政区划代码
|
||||
* @param data.xzqh 行政区划
|
||||
* @param data.yhdw 养护单位
|
||||
* @param data.yhdwId 养护单位id
|
||||
* @param data.time 问题上报时间
|
||||
* @param data.x 个人位置
|
||||
* @param data.y 个人位置
|
||||
* @param data.address 详细地址
|
||||
* @param data.problemType 问题类型枚举
|
||||
* @param data.problemTypeName 问题类型名称
|
||||
* @param data.describe 问题描述
|
||||
* @param data.pic 图片url
|
||||
* @param data.jsdw 接收单位
|
||||
*/
|
||||
export function saveSupervisionRecordsProblem(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/saveSupervisionRecordsProblem',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 监管记录详情查询
|
||||
* @param params
|
||||
* @param params.id 监管记录id
|
||||
*/
|
||||
export function getSupervisionRecordsDetail(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/threePartySupervision/getSupervisionRecordsDetail',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
221
src/api/user.ts
221
src/api/user.ts
@@ -1,68 +1,50 @@
|
||||
/**
|
||||
* 用户相关 API
|
||||
* 用户相关接口
|
||||
*
|
||||
* 包含登录、获取用户信息、退出登录、重置密码等用户模块接口。
|
||||
* 包含登录、验证码、修改密码、用户查询等用户模块接口。
|
||||
* 匹配原始 JavaScript API(user.js)的完整行为。
|
||||
*
|
||||
* @module api/user
|
||||
*/
|
||||
|
||||
import { post, get } from '@/utils/http'
|
||||
import { http } from '@/utils/http'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { rsaLong } from '@/utils/rsaUtil'
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 请求参数类型
|
||||
// 类型定义
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 登录请求参数 */
|
||||
export interface LoginParams {
|
||||
/** 用户名 */
|
||||
export interface LoginUserInfo {
|
||||
username: string
|
||||
/** 密码 */
|
||||
password: string
|
||||
/** 验证码 */
|
||||
code?: string
|
||||
/** 验证码唯一标识 */
|
||||
uuid?: string
|
||||
code: string
|
||||
uuid: string
|
||||
}
|
||||
|
||||
/** 重置密码请求参数 */
|
||||
export interface ResetPasswordParams {
|
||||
/** 旧密码 */
|
||||
/** 修改密码请求参数 */
|
||||
export interface UpdatePwdUserInfo {
|
||||
oldPassword: string
|
||||
/** 新密码 */
|
||||
newPassword: string
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 响应数据类型
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/** 登录返回结果 */
|
||||
export interface LoginResult {
|
||||
/** 认证 Token */
|
||||
token: string
|
||||
/** 用户查询参数 */
|
||||
export interface UserQuery {
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
/** 用户信息 */
|
||||
export interface UserInfo {
|
||||
/** 用户 ID */
|
||||
userId: string | number
|
||||
/** 用户名 */
|
||||
userName: string
|
||||
/** 昵称 */
|
||||
nickName: string
|
||||
/** 头像地址 */
|
||||
avatar: string
|
||||
/** 手机号 */
|
||||
phonenumber?: string
|
||||
/** 邮箱 */
|
||||
email?: string
|
||||
/** 性别(0-男 1-女 2-未知) */
|
||||
sex?: string
|
||||
/** 部门名称 */
|
||||
deptName?: string
|
||||
/** 角色列表 */
|
||||
roles?: string[]
|
||||
/** 权限列表 */
|
||||
permissions?: string[]
|
||||
}
|
||||
|
||||
@@ -71,35 +53,174 @@ export interface UserInfo {
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
* 用户登录
|
||||
* @param params - 登录参数(用户名、密码、验证码等)
|
||||
* @returns 返回包含 Token 的登录结果
|
||||
* 登录
|
||||
*
|
||||
* 使用 RSA 加密构造请求体,包含 resource 对象:
|
||||
* - algorithm: 'RSA'
|
||||
* - ciphertext: rsaLong(encodeURIComponent(JSON.stringify({...})))
|
||||
*
|
||||
* 设置 headers.requireToken = false 跳过 Token 校验。
|
||||
*/
|
||||
export function login(params: LoginParams): Promise<LoginResult> {
|
||||
return post<LoginResult>('/login', params)
|
||||
export function login(userInfo: LoginUserInfo) {
|
||||
const uuid = userInfo.uuid
|
||||
const timestamp = new Date().valueOf()
|
||||
const code = userInfo.code
|
||||
const data = {
|
||||
id: uuid,
|
||||
uuid,
|
||||
code,
|
||||
timestamp,
|
||||
resource: {
|
||||
algorithm: 'RSA',
|
||||
ciphertext: rsaLong(
|
||||
encodeURIComponent(
|
||||
JSON.stringify({
|
||||
username: userInfo.username,
|
||||
password: userInfo.password,
|
||||
code: code,
|
||||
uuId: uuid,
|
||||
appId: '',
|
||||
timestamp,
|
||||
}),
|
||||
),
|
||||
),
|
||||
associatedData: '',
|
||||
nonce: '',
|
||||
},
|
||||
}
|
||||
return http.request({
|
||||
url: '/auth/login',
|
||||
headers: {
|
||||
requireToken: false,
|
||||
},
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证码
|
||||
* @returns 验证码图片
|
||||
*/
|
||||
export function getCodeImg() {
|
||||
return http.request({
|
||||
url: '/code',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
*
|
||||
* 使用 RSA 加密新旧密码,构造与登录类似的 resource 结构。
|
||||
*/
|
||||
export function updateUserPwd(userInfo: UpdatePwdUserInfo) {
|
||||
const uuid = uuidv4()
|
||||
const timestamp = new Date().valueOf()
|
||||
const data = {
|
||||
id: uuid,
|
||||
timestamp,
|
||||
resource: {
|
||||
algorithm: 'RSA',
|
||||
ciphertext: rsaLong(
|
||||
encodeURIComponent(
|
||||
JSON.stringify({
|
||||
oldPassword: userInfo.oldPassword,
|
||||
newPassword: userInfo.newPassword,
|
||||
timestamp,
|
||||
}),
|
||||
),
|
||||
),
|
||||
associatedData: '',
|
||||
nonce: '',
|
||||
},
|
||||
}
|
||||
return http.request({
|
||||
url: '/system/user/profile/updatePwd',
|
||||
method: 'put',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户信息
|
||||
* @returns 用户详细信息
|
||||
*/
|
||||
export function getUserInfo(): Promise<UserInfo> {
|
||||
return get<UserInfo>('/getInfo')
|
||||
export function getUserInfo() {
|
||||
return http.request({
|
||||
url: '/system/user/getInfo',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
* @returns Promise<void>
|
||||
* 查询用户列表
|
||||
* @param query - 查询参数
|
||||
*/
|
||||
export function logout(): Promise<void> {
|
||||
return post<void>('/logout')
|
||||
export function listUser(query: UserQuery) {
|
||||
return http.request({
|
||||
url: '/system/user/list',
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
* @param params - 旧密码和新密码
|
||||
* @returns Promise<void>
|
||||
* 根据用户 ID 查询上三级部门负责人
|
||||
* @param userId - 用户 ID
|
||||
*/
|
||||
export function resetPassword(params: ResetPasswordParams): Promise<void> {
|
||||
return post<void>('/system/user/profile/resetPwd', params)
|
||||
export function getHierarchicalLeader(userId: string | number) {
|
||||
return http.request({
|
||||
url: `/system/user/getHierarchicalLeader/${userId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据部门 IDs 查询用户列表
|
||||
* @param deptIds - 部门 ID 数组
|
||||
*/
|
||||
export function getUserListByDeptIds(deptIds: (string | number)[]) {
|
||||
const query = deptIds.map((id) => `deptIds=${id}`).join('&')
|
||||
return http.request({
|
||||
url: `/system/user/getUserListByDeptIds?${query}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户 IDs 查询用户列表
|
||||
* @param userIds - 用户 ID 数组
|
||||
*/
|
||||
export function getUserListByIds(userIds: (string | number)[]) {
|
||||
const query = userIds.map((id) => `userIds=${id}`).join('&')
|
||||
return http.request({
|
||||
url: `/system/user/getUserListByIds?${query}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据岗位 IDs 查询用户列表
|
||||
* @param postIds - 岗位 ID 数组
|
||||
*/
|
||||
export function getUserListByPostIds(postIds: (string | number)[]) {
|
||||
const query = postIds.map((id) => `postIds=${id}`).join('&')
|
||||
return http.request({
|
||||
url: `/system/user/getUserListByPostIds?${query}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据角色 IDs 查询用户列表
|
||||
* @param roleIds - 角色 ID 数组
|
||||
*/
|
||||
export function getUserListByRoleIds(roleIds: (string | number)[]) {
|
||||
const query = roleIds.map((id) => `roleIds=${id}`).join('&')
|
||||
return http.request({
|
||||
url: `/system/user/getUserListByRoleIds?${query}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export default login
|
||||
|
||||
340
src/api/workflow.ts
Normal file
340
src/api/workflow.ts
Normal file
@@ -0,0 +1,340 @@
|
||||
/**
|
||||
* 工作流 API
|
||||
*
|
||||
* 包含流程详情、审批、待办/已办/发起、退回、催办、
|
||||
* 委派、转办、监督、节点超时等接口。
|
||||
* 大部分接口不使用 SW_PATH,直接走 /icp-bpm-manage 前缀。
|
||||
*
|
||||
* @module api/workflow
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
/**
|
||||
* 查询流程详情(不带 taskId 则查询当前任务)
|
||||
* @param params - { procInsId: string, taskId?: string }
|
||||
*/
|
||||
export function getProcessDetail(params: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/process/detail',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取审批人列表
|
||||
* @param data - { procInsId: string, taskId: string }
|
||||
*/
|
||||
export function getApproveList(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/getApproveList',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 同意 — 结束当前任务节点
|
||||
* @param data - { taskId, procInsId, userId, nextUserIds, comment }
|
||||
*/
|
||||
export function finishedTaskNode(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/finished',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 不同意 — 拒绝当前任务节点
|
||||
* @param data - { taskId, procInsId, userId, comment }
|
||||
*/
|
||||
export function rejectTask(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/reject',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束流程
|
||||
* @param data - { taskId, procInsId, userId }
|
||||
*/
|
||||
export function stopTask(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/process/stop',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询我的待办
|
||||
* @param data - { processName?, params?, userInfo, pageNum?, pageSize? }
|
||||
*/
|
||||
export function getMyTodoList(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/my/todo',
|
||||
method: 'post',
|
||||
data: {
|
||||
pageNum: 1,
|
||||
pageSize: 5,
|
||||
...data,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询我的已办
|
||||
* @param data - { processName?, params?, userInfo, pageNum?, pageSize? }
|
||||
*/
|
||||
export function getMyFinishedList(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/my/finished',
|
||||
method: 'post',
|
||||
data: {
|
||||
pageNum: 1,
|
||||
pageSize: 5,
|
||||
...data,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询我发起的
|
||||
* @param data - { processName?, params?, userInfo, pageNum?, pageSize? }
|
||||
*/
|
||||
export function getMyStartList(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/process/my',
|
||||
method: 'post',
|
||||
data: {
|
||||
pageNum: 1,
|
||||
pageSize: 5,
|
||||
...data,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询可回退的节点
|
||||
* @param data - { procInsId, taskId, userId }
|
||||
*/
|
||||
export function getReturnNodes(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/process/returnNodes',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 退回到指定节点
|
||||
* @param data - { procInsId, taskId, userId, targetKey, comment }
|
||||
*/
|
||||
export function returnTask(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/return',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 取回 / 撤回
|
||||
* @param data - { procInsId, taskId, userId }
|
||||
*/
|
||||
export function revokeTask(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/revoke',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 催办
|
||||
* @param data - { proInsId, enable?, msgType?, msgText?, name? }
|
||||
*/
|
||||
export function urgingTask(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/urging',
|
||||
method: 'post',
|
||||
data: {
|
||||
enable: true,
|
||||
msgType: 'INTERNAL',
|
||||
msgText: '催办',
|
||||
name: '催办',
|
||||
...data,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新流程状态(挂起 / 激活)
|
||||
* @param params - { instanceId, state? }
|
||||
*/
|
||||
export function updateProcessState(params: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/process/updateState',
|
||||
method: 'put',
|
||||
params: {
|
||||
state: 'suspended',
|
||||
...params,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
* @param instanceIds - 流程实例 id(多个逗号分隔)
|
||||
* @param params - { force?, reason? }
|
||||
*/
|
||||
export function deleteProcessInstance(instanceIds: string, params: any = {}) {
|
||||
return http.request({
|
||||
url: `/icp-bpm-manage/api/v1/process/instance/${instanceIds}`,
|
||||
method: 'delete',
|
||||
params: {
|
||||
force: 'true',
|
||||
reason: '',
|
||||
...params,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 加签(委派任务)
|
||||
* @param userId - 要委派的用户 id
|
||||
* @param taskId - 流程节点 id
|
||||
*/
|
||||
export function setTaskDelegateUser(userId: string, taskId: string) {
|
||||
return http.request({
|
||||
url: `/icp-bpm-manage/api/v1/task/delegate/${taskId}/${userId}`,
|
||||
method: 'put',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 转办任务
|
||||
* @param acceptUserId - 接受人 id
|
||||
* @param currentUserId - 当前人 id
|
||||
* @param taskId - 任务 id
|
||||
*/
|
||||
export function setTaskTransfer(acceptUserId: string, currentUserId: string, taskId: string) {
|
||||
return http.request({
|
||||
url: `/icp-bpm-manage/api/v1/task/transfer/${taskId}/${currentUserId}/${acceptUserId}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
* @param params - { pageNum?, pageSize?, nickName?, status? }
|
||||
*/
|
||||
export function getUserList(params: any = {}) {
|
||||
return http.request({
|
||||
url: '/system/user/list',
|
||||
method: 'get',
|
||||
params: {
|
||||
pageNum: 1,
|
||||
nickName: '',
|
||||
pageSize: 9999999,
|
||||
status: 0,
|
||||
...params,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加监督意见
|
||||
* @param data - { userId, procInsId, remark }
|
||||
*/
|
||||
export function addSuperviseComment(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/supervise/comment',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消监督
|
||||
* @param data - { userId, proInsId }
|
||||
*/
|
||||
export function cancelSupervise(data: any) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/supervise/cancel',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务指定属性
|
||||
* @param taskId - 任务 id
|
||||
* @param attributeNames - 属性名称数组
|
||||
*/
|
||||
export function getTaskAttribute(taskId: string, attributeNames: string[]) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/getTaskAttribute',
|
||||
method: 'get',
|
||||
params: {
|
||||
taskId,
|
||||
attributeNames: attributeNames.join(','),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务下一节点指定属性
|
||||
* @param taskId - 任务 id
|
||||
* @param attributeNames - 属性名称数组
|
||||
*/
|
||||
export function getNextTaskAttribute(taskId: string, attributeNames: string[]) {
|
||||
return http.request({
|
||||
url: '/icp-bpm-manage/api/v1/task/getNextTaskAttribute',
|
||||
method: 'get',
|
||||
params: {
|
||||
taskId,
|
||||
attributeNames: attributeNames.join(','),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询工单流程详情
|
||||
* @param procInsId - 流程实例 id
|
||||
*/
|
||||
export function getProcessDetailNew(procInsId: string) {
|
||||
return http.request({
|
||||
url: `${SW_PATH}/workOrder/getProcessDetail`,
|
||||
method: 'get',
|
||||
params: {
|
||||
procInsId,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置节点超时时间
|
||||
* @param params - { proInsId, taskId, type?, timeout }
|
||||
*/
|
||||
export function setNodeTimeout(params: any) {
|
||||
const { proInsId, taskId, type = 'cs', timeout } = params
|
||||
// 将截止时间转换为 cron 表达式(秒 分 时 日 月 年)
|
||||
const cronExpress = dayjs(timeout).format('s m H D M ?')
|
||||
return http.request({
|
||||
url: `${SW_PATH}/workOrder/setNodeTimeout`,
|
||||
method: 'get',
|
||||
params: {
|
||||
proInsId,
|
||||
taskId,
|
||||
type,
|
||||
cronExpress,
|
||||
},
|
||||
})
|
||||
}
|
||||
68
src/api/xjgl.ts
Normal file
68
src/api/xjgl.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* 工程上报管理 API(巡检管理)
|
||||
*
|
||||
* @module api/xjgl
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 工程上报数据保存
|
||||
* @param data - { address, endTime, msg, startTime, userId, username, pic, remark, shape, cjdw, jsdw }
|
||||
*/
|
||||
export function saveSwDataEngineeringReporting(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/engineeringReportingData/saveSwDataEngineeringReporting',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 工程上报数据分页查询
|
||||
* @param data - { current, size }
|
||||
*/
|
||||
export function getSwDataEngineeringReportingPage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/engineeringReportingData/getSwDataEngineeringReportingPage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 工程上报数据更新
|
||||
* @param data - { id, endTime }
|
||||
*/
|
||||
export function updateSwDataEngineeringReporting(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/engineeringReportingData/updateSwDataEngineeringReporting',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 工程上报跟踪数据保存
|
||||
* @param data - { pic, remark, reportingid, status, time }
|
||||
*/
|
||||
export function saveSwDataEngineeringReportingDetail(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/engineeringReportingData/saveSwDataEngineeringReportingDetail',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 工程上报详情
|
||||
* @param params - { id }
|
||||
*/
|
||||
export function getSwDataEngineeringReportingVo(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/engineeringReportingData/getSwDataEngineeringReportingVo',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
68
src/api/yxkjzyRecords.ts
Normal file
68
src/api/yxkjzyRecords.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* 有限空间作业记录 API
|
||||
*
|
||||
* @module api/yxkjzyRecords
|
||||
*/
|
||||
|
||||
import { http } from '@/utils/http'
|
||||
import { SW_PATH } from '@/config/apiConfig'
|
||||
|
||||
/**
|
||||
* 有限空间作业分页查询
|
||||
* @param data - { current, order?, name?, sidx?, size?, sort?, xzqhdm? }
|
||||
*/
|
||||
export function getSwDataYxkjzyPage(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/getSwDataYxkjzyPage',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 有限空间作业详情
|
||||
* @param params - { id }
|
||||
*/
|
||||
export function getSwDataYxkjzy(params: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/getSwDataYxkjzy',
|
||||
method: 'get',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 有限空间作业数据提交
|
||||
* @param data - { id, xzqhdm, userid }
|
||||
*/
|
||||
export function saveSwDataYxkjzySubmit(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/saveSwDataYxkjzySubmit',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 有限空间作业修改
|
||||
* @param data - { id, shzt }
|
||||
*/
|
||||
export function updateSwDataYxkjzy(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/updateSwDataYxkjzy',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 有限空间作业检查井修改
|
||||
* @param data - { id, pic }
|
||||
*/
|
||||
export function updateSwDataYxkjzyManholes(data: any) {
|
||||
return http.request({
|
||||
url: SW_PATH + '/yxkjzyData/updateSwDataYxkjzyManholes',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
12
src/config/apiConfig.ts
Normal file
12
src/config/apiConfig.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* API 配置常量
|
||||
*
|
||||
* 从 window.globalConfig 读取运行时配置,
|
||||
* 提供 SW_PATH 等服务路径前缀供 API 模块使用。
|
||||
*
|
||||
* @module config/apiConfig
|
||||
*/
|
||||
|
||||
/** 服务路径前缀(如 /wisdomwatersm),用于拼接业务接口 URL */
|
||||
export const SW_PATH: string =
|
||||
(typeof window !== 'undefined' && window.globalConfig?.api?.swPath) || ''
|
||||
@@ -37,6 +37,8 @@ export interface ApiConfig {
|
||||
baseURL: string
|
||||
/** API 主机地址(图片上传下载等场景) */
|
||||
host: string
|
||||
/** 服务路径前缀(如 /wisdomwatersm) */
|
||||
swPath: string
|
||||
/** WebSocket 连接地址 */
|
||||
wsURL?: string
|
||||
/** 请求超时时间(毫秒) */
|
||||
|
||||
@@ -12,9 +12,8 @@ import { ref, computed } from 'vue'
|
||||
import { useTokenStore } from './token'
|
||||
import {
|
||||
login as loginApi,
|
||||
logout as logoutApi,
|
||||
getUserInfo as getUserInfoApi,
|
||||
type LoginParams,
|
||||
type LoginUserInfo,
|
||||
type UserInfo,
|
||||
} from '@/api'
|
||||
|
||||
@@ -95,18 +94,20 @@ export const useUserStore = defineStore('user', () => {
|
||||
/**
|
||||
* 用户登录
|
||||
*
|
||||
* 调用登录接口获取 Token,并写入 Token Store。
|
||||
* 调用 RSA 加密登录接口获取 Token,并写入 Token Store。
|
||||
* 登录成功后自动调用 getUserInfo 获取用户详细信息。
|
||||
*
|
||||
* @param params - 登录参数(用户名、密码、验证码等)
|
||||
* @returns 登录成功后返回的 Token
|
||||
*/
|
||||
async function login(params: LoginParams): Promise<string> {
|
||||
async function login(params: LoginUserInfo): Promise<string> {
|
||||
const tokenStore = useTokenStore()
|
||||
const res = await loginApi(params)
|
||||
tokenStore.setToken(res.token)
|
||||
const res: any = await loginApi(params)
|
||||
// 登录响应: { code, msg, data: { token } } 或直接 { token }
|
||||
const token = res.data?.token ?? res.token
|
||||
tokenStore.setToken(token)
|
||||
await getUserInfo()
|
||||
return res.token
|
||||
return token
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,28 +117,35 @@ export const useUserStore = defineStore('user', () => {
|
||||
* roles 和 permissions 列表。
|
||||
*/
|
||||
async function getUserInfo(): Promise<void> {
|
||||
const info = await getUserInfoApi()
|
||||
userInfo.value = info
|
||||
roles.value = info.roles ?? []
|
||||
permissions.value = info.permissions ?? []
|
||||
const info: any = await getUserInfoApi()
|
||||
userInfo.value = info.data ?? info
|
||||
roles.value = (info.data ?? info).roles ?? []
|
||||
permissions.value = (info.data ?? info).permissions ?? []
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录成功后设置 Token 并加载用户信息
|
||||
*
|
||||
* 供登录页面直接调用(绕过 store.login 的 RSA 加密)。
|
||||
*
|
||||
* @param token - 从登录接口返回的 access_token
|
||||
*/
|
||||
function setTokenFromLogin(token: string): void {
|
||||
const tokenStore = useTokenStore()
|
||||
tokenStore.setToken(token)
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*
|
||||
* 调用后端退出接口,清除 Token Store 中的 Token,
|
||||
* 并将当前 Store 状态重置为初始值。
|
||||
* 清除 Token Store 中的 Token,并将当前 Store 状态重置为初始值。
|
||||
* 原始后端无服务端登出接口,仅清除前端状态。
|
||||
*/
|
||||
async function logout(): Promise<void> {
|
||||
const tokenStore = useTokenStore()
|
||||
try {
|
||||
await logoutApi()
|
||||
} finally {
|
||||
// 无论接口调用成功与否,前端都必须清除登录状态
|
||||
tokenStore.clearToken()
|
||||
$reset()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前用户是否拥有指定权限
|
||||
@@ -186,6 +194,7 @@ export const useUserStore = defineStore('user', () => {
|
||||
login,
|
||||
getUserInfo,
|
||||
logout,
|
||||
setTokenFromLogin,
|
||||
hasPermission,
|
||||
hasRole,
|
||||
$reset,
|
||||
|
||||
8
src/types/encryptlong.d.ts
vendored
Normal file
8
src/types/encryptlong.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
declare module 'encryptlong' {
|
||||
export class JSEncrypt {
|
||||
setPublicKey(key: string): void
|
||||
encryptLong(text: string): string | false
|
||||
encrypt(text: string): string | false
|
||||
decrypt(text: string): string | false
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,10 @@
|
||||
* Token 管理以及类型安全的请求方法。
|
||||
*
|
||||
* - baseURL 从 window.globalConfig.api.baseURL 读取,回退到 '/dev-api'
|
||||
* - 请求拦截器自动附加 Authorization Token
|
||||
* - 响应拦截器自动解包数据并统一错误提示
|
||||
* - 请求拦截器自动附加 Authorization Token(无 "Bearer " 前缀)
|
||||
* - requireToken: false 时跳过 Token 附加
|
||||
* - 响应拦截器校验 code === 200 || code === 0
|
||||
* - 内置 uploadFile 方法用于文件上传
|
||||
*
|
||||
* @module utils/http
|
||||
*/
|
||||
@@ -25,7 +27,7 @@ import { showFailToast } from 'vant'
|
||||
|
||||
/** 后端统一响应结构 */
|
||||
export interface ApiResponse<T = unknown> {
|
||||
/** 状态码,200 表示成功 */
|
||||
/** 状态码,200 或 0 表示成功 */
|
||||
code: number
|
||||
/** 响应数据 */
|
||||
data: T
|
||||
@@ -71,13 +73,13 @@ export function removeToken(): void {
|
||||
* Axios 实例
|
||||
*
|
||||
* - baseURL:优先读取 window.globalConfig.api.baseURL,不存在时使用 '/dev-api'
|
||||
* - timeout:30 秒超时
|
||||
* - timeout:60 秒超时(匹配原始行为)
|
||||
*/
|
||||
const http: AxiosInstance = axios.create({
|
||||
baseURL:
|
||||
(typeof window !== 'undefined' && window.globalConfig?.api?.baseURL) ||
|
||||
'/dev-api',
|
||||
timeout: 30_000,
|
||||
timeout: 60_000,
|
||||
})
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
@@ -88,13 +90,18 @@ const http: AxiosInstance = axios.create({
|
||||
* 请求拦截器
|
||||
*
|
||||
* 在每次请求发出前,自动从 localStorage 读取 Token
|
||||
* 并附加到请求头的 Authorization 字段中。
|
||||
* 并附加到请求头的 Authorization 字段中(无 "Bearer " 前缀)。
|
||||
* 当配置 headers.requireToken === false 时跳过 Token 附加。
|
||||
*/
|
||||
http.interceptors.request.use(
|
||||
(config: InternalAxiosRequestConfig) => {
|
||||
// requireToken 为 false 时跳过(如登录接口)
|
||||
if (config.headers?.requireToken === false) {
|
||||
return config
|
||||
}
|
||||
const token = getToken()
|
||||
if (token && config.headers) {
|
||||
config.headers.Authorization = `Bearer ${token}`
|
||||
config.headers.Authorization = token
|
||||
}
|
||||
return config
|
||||
},
|
||||
@@ -110,36 +117,48 @@ http.interceptors.request.use(
|
||||
/**
|
||||
* 响应拦截器
|
||||
*
|
||||
* - 成功(code === 200):解包返回 response.data.data
|
||||
* - 业务异常:弹出错误提示并 reject
|
||||
* - 网络异常:弹出错误提示并 reject
|
||||
* - 文件/blob/arraybuffer 响应直接透传
|
||||
* - 成功(code === 200 || code === 0):返回 response.data 完整对象 {code, msg, data}
|
||||
* - 401:清除 Token,延时跳转登录
|
||||
* - 其他错误码:弹出错误提示并 reject
|
||||
*/
|
||||
let redirectTimer: ReturnType<typeof setTimeout> | null = null
|
||||
|
||||
http.interceptors.response.use(
|
||||
(response): AxiosResponse | Promise<AxiosResponse> => {
|
||||
(response: AxiosResponse): AxiosResponse | Promise<AxiosResponse> => {
|
||||
// 文件下载等特殊响应(blob / arraybuffer)直接返回
|
||||
if (
|
||||
response.config.responseType === 'blob' ||
|
||||
response.config.responseType === 'arraybuffer'
|
||||
) {
|
||||
return response
|
||||
}
|
||||
|
||||
const res = response.data as ApiResponse
|
||||
|
||||
// 文件下载等特殊响应(非 JSON)直接返回
|
||||
if (response.config.responseType === 'blob') {
|
||||
return response
|
||||
// 成功:code === 200 或 code === 0
|
||||
if (res.code === 200 || res.code === 0) {
|
||||
return response.data
|
||||
}
|
||||
|
||||
if (res.code === 200) {
|
||||
// 解包:将 response.data 替换为业务数据
|
||||
response.data = res.data
|
||||
return response
|
||||
// 401 未授权:跳转登录
|
||||
if (res.code === 401) {
|
||||
showFailToast(res.msg || '登录已过期,请重新登录')
|
||||
removeToken()
|
||||
if (redirectTimer) clearTimeout(redirectTimer)
|
||||
redirectTimer = setTimeout(() => {
|
||||
window.location.href = '#/login'
|
||||
}, 500)
|
||||
return Promise.reject(response.data)
|
||||
}
|
||||
|
||||
// 业务错误码处理
|
||||
// 其他业务错误
|
||||
const errMsg = res.msg || '请求失败'
|
||||
showFailToast(errMsg)
|
||||
|
||||
// Token 过期等特殊错误码可在此扩展处理
|
||||
// if (res.code === 401) { removeToken(); /* 跳转登录 */ }
|
||||
|
||||
return Promise.reject(new Error(errMsg))
|
||||
return Promise.reject(response.data)
|
||||
},
|
||||
(error: unknown) => {
|
||||
let msg = '网络错误,请稍后重试'
|
||||
let msg = '接口请求失败'
|
||||
|
||||
if (axios.isAxiosError(error)) {
|
||||
const resData = error.response?.data as ApiResponse | undefined
|
||||
@@ -154,7 +173,10 @@ http.interceptors.response.use(
|
||||
if (status === 401) {
|
||||
msg = '登录已过期,请重新登录'
|
||||
removeToken()
|
||||
// TODO: 跳转登录页
|
||||
if (redirectTimer) clearTimeout(redirectTimer)
|
||||
redirectTimer = setTimeout(() => {
|
||||
window.location.href = '#/login'
|
||||
}, 500)
|
||||
} else if (status === 403) {
|
||||
msg = '没有操作权限'
|
||||
} else if (status === 404) {
|
||||
@@ -171,6 +193,27 @@ http.interceptors.response.use(
|
||||
},
|
||||
)
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 文件上传方法(挂载在 http 实例上)
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
*
|
||||
* 使用 multipart/form-data 格式上传文件。
|
||||
* 匹配原始 uploadFile 行为。
|
||||
*
|
||||
* @param formData - 包含文件的 FormData 对象
|
||||
* @returns Promise<ApiResponse>
|
||||
*/
|
||||
;(http as any).uploadFile = (formData: FormData) => {
|
||||
return http.post('/file/file-minio/object/upload', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// 类型安全的请求方法
|
||||
// ══════════════════════════════════════════════
|
||||
@@ -233,5 +276,8 @@ export async function del<T>(
|
||||
return http.delete(url, config) as Promise<T>
|
||||
}
|
||||
|
||||
/** 导出原始的 Axios 实例,供特殊场景(如文件上传进度监听)使用 */
|
||||
/** 导出 http 实例(命名导出,供 API 模块使用) */
|
||||
export { http }
|
||||
|
||||
/** 导出原始的 Axios 实例作为默认导出,供特殊场景使用 */
|
||||
export default http
|
||||
|
||||
25
src/utils/rsaUtil.ts
Normal file
25
src/utils/rsaUtil.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* RSA 长文本加密工具
|
||||
*
|
||||
* 匹配原始 rsaUtil.js 的完整行为。
|
||||
* 使用 encryptlong 对长文本进行分段加密。
|
||||
*/
|
||||
|
||||
import { JSEncrypt as EncryptLong } from 'encryptlong'
|
||||
|
||||
/**
|
||||
* 公钥 - 与后端加密通信的密钥
|
||||
*/
|
||||
const PUBLIC_KEY =
|
||||
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCExx/4MM/1MXOGt0XFT6zDmAVNbuyuFY3y/+YlBJxFUreQBnAcuq76sg6h40ZmffAARjuomcHzCCM7WbZp3rfuP7qBxERgvTbADKmt4q05b4ddl7q19EjULHIcbfKjD+m8q8iqX2Ygwj10vLSiDUBE78HWGd3Zwy4O8zKoohsFAwIDAQAB'
|
||||
|
||||
/**
|
||||
* RSA 长文本加密
|
||||
* @param str - 待加密的字符串
|
||||
* @returns 加密后的密文
|
||||
*/
|
||||
export const rsaLong = (str: string): string => {
|
||||
const encryptor = new EncryptLong()
|
||||
encryptor.setPublicKey(PUBLIC_KEY)
|
||||
return encryptor.encryptLong(str) as string
|
||||
}
|
||||
@@ -9,8 +9,8 @@ import { ref, onMounted, onUnmounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { getCaptcha } from '@/api/common'
|
||||
import { showToast, Checkbox } from 'vant'
|
||||
import { getCodeImg, login } from '@/api/user'
|
||||
import { showToast } from 'vant'
|
||||
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
@@ -26,70 +26,59 @@ const password = ref('')
|
||||
const code = ref('')
|
||||
const uuid = ref('')
|
||||
const codeUrl = ref('')
|
||||
const captchaEnabled = ref(false)
|
||||
const captchaEnabled = ref(true) // 默认开启,调接口后更新
|
||||
const loading = ref(false)
|
||||
const savePsw = ref(true)
|
||||
const isInputActive = ref(false)
|
||||
|
||||
// 恢复记住的账号密码
|
||||
username.value = localStorage.getItem('yuto-user') || ''
|
||||
password.value = localStorage.getItem('yuto-password') || ''
|
||||
// 恢复记住的账号密码(key 对齐原始 zhsw-user / zhsw-password)
|
||||
username.value = localStorage.getItem('zhsw-user') || ''
|
||||
password.value = localStorage.getItem('zhsw-password') || ''
|
||||
|
||||
// ── 获取验证码 ──
|
||||
async function fetchCaptcha(): Promise<void> {
|
||||
try {
|
||||
const res = await getCaptcha()
|
||||
captchaEnabled.value = res.captchaEnabled
|
||||
if (res.captchaEnabled) {
|
||||
// ── 获取验证码(对齐原始 getCodeImgs) ──
|
||||
function getCodeImgs(): void {
|
||||
getCodeImg().then((res: any) => {
|
||||
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||
if (captchaEnabled.value) {
|
||||
codeUrl.value = 'data:image/gif;base64,' + res.img
|
||||
uuid.value = res.uuid
|
||||
}
|
||||
} catch {
|
||||
// 验证码获取失败,不阻塞登录流程
|
||||
}
|
||||
}).catch(() => { /* 验证码获取失败不阻塞 */ })
|
||||
}
|
||||
|
||||
// ── 提交登录 ──
|
||||
async function onSubmit(): Promise<void> {
|
||||
if (!username.value) {
|
||||
showToast('请输入账号')
|
||||
return
|
||||
}
|
||||
if (!password.value) {
|
||||
showToast('请输入密码')
|
||||
return
|
||||
}
|
||||
if (captchaEnabled.value && !code.value) {
|
||||
showToast('请输入验证码')
|
||||
return
|
||||
}
|
||||
// ── 提交登录(对齐原始 onSubmit) ──
|
||||
function onSubmit(): void {
|
||||
if (!username.value) { showToast('请输入账号'); return }
|
||||
if (!password.value) { showToast('请输入密码'); return }
|
||||
if (captchaEnabled.value && !code.value) { showToast('请输入验证码'); return }
|
||||
|
||||
loading.value = true
|
||||
try {
|
||||
await userStore.login({
|
||||
// 对齐原始:始终传 code 和 uuid
|
||||
login({
|
||||
username: username.value,
|
||||
password: password.value,
|
||||
code: captchaEnabled.value ? code.value : undefined,
|
||||
uuid: captchaEnabled.value ? uuid.value : undefined,
|
||||
})
|
||||
|
||||
// 记住密码
|
||||
localStorage.setItem('yuto-user', username.value)
|
||||
code: code.value,
|
||||
uuid: uuid.value,
|
||||
} as any).then((res: any) => {
|
||||
// 原始响应: { code: 200, data: { access_token: '...' } }
|
||||
const token = res.data?.access_token ?? res.access_token
|
||||
userStore.setTokenFromLogin(token)
|
||||
localStorage.setItem('zhsw-user', username.value)
|
||||
if (savePsw.value) {
|
||||
localStorage.setItem('yuto-password', password.value)
|
||||
localStorage.setItem('zhsw-password', password.value)
|
||||
} else {
|
||||
localStorage.removeItem('yuto-password')
|
||||
localStorage.setItem('zhsw-password', '')
|
||||
}
|
||||
|
||||
showToast('登录成功')
|
||||
router.replace('/home')
|
||||
} catch {
|
||||
}).catch(() => {
|
||||
// 错误已在拦截器中统一处理
|
||||
} finally {
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
code.value = ''
|
||||
fetchCaptcha()
|
||||
}
|
||||
uuid.value = ''
|
||||
getCodeImgs()
|
||||
})
|
||||
}
|
||||
|
||||
// ── 隐私政策 ──
|
||||
@@ -109,7 +98,7 @@ onMounted(() => {
|
||||
version.value = appStore.globalConfig.system.version || version.value
|
||||
}
|
||||
window.addEventListener('resize', handleResize)
|
||||
fetchCaptcha()
|
||||
getCodeImgs()
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
@@ -172,7 +161,7 @@ onUnmounted(() => {
|
||||
class="login-captcha-img"
|
||||
:src="codeUrl"
|
||||
alt="验证码"
|
||||
@click="fetchCaptcha"
|
||||
@click="getCodeImgs"
|
||||
/>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
import { ref, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { showSuccessToast, showFailToast } from 'vant'
|
||||
import { resetPassword } from '@/api'
|
||||
import { updateUserPwd } from '@/api'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
@@ -60,7 +60,7 @@ async function handleSubmit(): Promise<void> {
|
||||
|
||||
loading.value = true
|
||||
try {
|
||||
await resetPassword({
|
||||
await updateUserPwd({
|
||||
oldPassword: pwdForm.oldPassword,
|
||||
newPassword: pwdForm.newPassword,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user