Skip to content

项目管理

新建项目

项目字段fieldsValues 传值说明

字段说明传值说明
1单行文本文本
2多行文本文本
3单选下拉选项的 value
4人名输入框人名;来自用户列表 username
5日期日期格式为 YYYY-MM-DD/YYYY-MM/YYYY
6数值型数值
ts
/**新建项目 */
function createProject(data: {
  describe?: string //项目描述
  fieldsValues: {
    fieldsId: string
    fieldsValue: string
  }[] //项目字段值
  latitude: number //项目所在的纬度
  longitude: number //项目所在的经度
  name: string //项目名称
  ownerUserId: string //项目所有者id
}) {
  return request({
    url: '/admin/tx/project',
    method: 'post',
    data
  })
}

项目字段

项目字段是项目的属性,可以用来描述项目的特征,如项目名称、项目描述、项目地址等。项目字段可以是单行文本、多行文本、单选下拉、人名输入框、日期、数值型等类型。

新建项目视图时依赖项目字段。

获取项目字段列表

ts
/** 获取项目字段列表*/
// {
//   "code": 0,
//   "msg": null,
//   "data": [
//     {
//       "id": "59e30641abffbfe8bb896564cacf454c",
//       "name": "sd",
//       "describe": null,
//       "type": 1,
//       "createBy": "admin",
//       "createTime": "2025-01-08 17:21:55",
//       "updateBy": "admin",
//       "updateTime": "2025-01-08 17:21:55",
//       "delFlag": "0",
//       "tenantId": "1",
//       "classify": 2,
//       "enable": 1,
//       "fieldValue": null,
//       "condition": null
//     }
//   ],
//   "ok": true
// }
export function fetchProjectFieldsList(query?: {
  current?: string //页码
  size?: string //每页条数
}) {
  return request({
    url: '/admin/tx/project/fields/list',
    method: 'get',
    params: query
  })
}

新建/更新/删除项目字段

项目字段

字段typefieldValuecondition
单行文本1××
多行文本2××
单选下拉3JSON 字符串,对象类型为 selectFieldValue×
人名输入框4××
日期5×JSON 字符串,对象类型为 dateSubformCondition
数值型6×JSON 字符串,对象类型为 numberSubformCondition
ts
type addProjectFieldType = {
  name: string
  describe?: string
  enable: 1
} & (
  | {
      type: 1 //单行文本
    }
  | {
      type: 2 //多行文本
    }
  | {
      type: 3 //单选下拉
      fieldValue: string //JSON字符串,对象类型为selectFieldValue
    }
  | {
      type: 4 //人名输入框
    }
  | {
      type: 5 //日期
      condition: string //JSON字符串,对象类型为dateSubformCondition
    }
  | {
      type: 6 //数值型
      condition: string //JSON字符串,对象类型为numberSubformCondition
    }
)
type dateSubformCondition = {
  type: 'y' | 'ym' | 'ymd'
}
type numberSubformCondition = {
  isInterger: boolean
}
type selectFieldValue = {
  key: string //自己生成uuid
  value: string
}[]
ts
/** 添加项目字段设置中的字段*/
export function addProjectField(data?: addProjectFieldType) {
  return request({
    url: '/admin/tx/project/fields/add',
    method: 'post',
    data
  })
}
/** 更新项目字段设置中的字段*/
export function updateProjectField(data: { id: string; [x: string]: any }) {
  return request({
    url: '/admin/tx/project/fields/update',
    method: 'put',
    data
  })
}
/** 删除项目字段设置中的字段*/
export function deleteProjectField(id: string) {
  return request({
    url: '/admin/tx/project/fields/delete',
    method: 'get',
    params: { id }
  })
}

更新项目详情中每个字段的值

ts
/** 更新项目详情中每个字段的值*/
//单选下拉字段的值为选项的value,日期字段的格式为YYYY-MM-DD/YYYY-MM/YYYY,数值型字段类型也为字符串
export function editProjectFields(data: {
  fieldsId: string
  fieldsValue: string
  projectId: string
}) {
  return request({
    url: '/admin/tx/project/updateProjectFields',
    method: 'put',
    data
  })
}

项目信息

ts
/**
 * 获取项目信息
 * @param id 项目id
 */
export function getProjectInfo(id: string) {
  return request({
    url: `/admin/tx/project/${id}`,
    method: 'get'
  })
}
/**
 * 项目信息类型
 */
type ProjectInfo = {
  name: string // 项目名称
  describe?: string // 项目描述
  memberList: memberList[] // 成员列表
  managerList: managerList[] // 管理员列表
  fileCount: number // 文件数量
  fileSizeTotal: number // 文件总大小
  publishCount: number // 已发布文件总数
  fieldsValues: {
    fieldsId: string
    fieldsValue: string
  }[] // 项目字段值
  coverPath?: string // 封面路径
  longitude: number // 经度
  latitude: number // 纬度
}
type memberList = {
  id: string
  roleId: string
  projectId: string
  name: string
  username: string
  userId: string
}
type managerList = {
  id: string
  roleId: string
  projectId: string
  name: string
  username: string
  userId: string
}

修改项目信息

更新项目名称&描述

ts
/**
 * 更新项目名称&描述
 * @param data
 * @param data.id 项目id
 * @param data.name 项目名称
 * @param data.describe 项目描述
 */
export function updateProjectInfo(data: {
  id: string
  name: string
  describe: string
}) {
  return request({
    url: '/admin/tx/project',
    method: 'put',
    data
  })
}

修改项目位置

ts
/**
 * 修改项目位置
 * @param data
 * @param data.id 项目id
 * @param data.latitude 项目纬度
 * @param data.longitude 项目经度
 */
export function editProjectLocation(data: {
  id: string
  latitude: number
  longitude: number
}) {
  return request({
    url: '/admin/tx/project/updateProjectPosition',
    method: 'put',
    data
  })
}

修改项目封面

ts
/**上传文件 */
// const fd = new FormData();
// fd.append('file', file);
//res.data.url
export function uploadSysFile(FormData: any) {
  return request({
    url: '/admin/sys-file/upload',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: FormData
  })
}
/**
 * 修改项目封面,用上面的url
 * @param data
 * @param data.id 项目id
 * @param data.coverPath 封面路径
 */
export function editProjectCover(data: { id: string; coverPath: string }) {
  return request({
    url: '/admin/tx/project/updateProjectCover',
    method: 'put',
    data
  })
}

项目成员

项目角色见项目默认角色设置

ts
/**
 * 获取项目成员
 * @param projectId 项目id
 * @param name 姓名
 * @param username 用户名
 * @param size 每页条数
 * @param current 页码
 */
export function getProjectUserList(params: {
  projectId: string
  name?: string
  username?: string
  size?: any
  current?: any
}) {
  return request({
    url: `/admin/tx/project/user/page`,
    method: 'get',
    params
  })
}
/**
 * 获取部门成员列表
 * @param username 用户名
 */
function getDeptPeopleTree(username?: string) {
  return request({
    url: '/admin/dept/tree/have/people',
    method: 'get',
    params: { username }
  })
}
/**
 * 添加项目成员
 * @param data
 * @param data.projectId 项目id
 * @param data.userIds 用户ids,多个用逗号隔开
 * @param data.roleId 项目角色id
 */
function addProjectUser(data: {
  projectId: string
  userIds: string
  roleId: string
}) {
  return request({
    url: '/admin/tx/project/user/batch/add',
    method: 'post',
    data
  })
}
/**
 * 删除项目成员
 * @param data 项目中的用户id数组
 */
function batchRemoveProjectUser(data: Array<string>) {
  return request({
    url: '/admin/tx/project/user/batch/remove/',
    method: 'post',
    data
  })
}

删除项目

ts
/**
 * 删除项目
 * @param params
 * @param params.projectId 项目id
 */
function userDeleteProject(params: { projectId: string }) {
  return request({
    url: '/admin/tx/project/delete',
    method: 'get',
    params
  })
}

退出项目

ts
/**
 * 当前用户退出项目
 * @param params
 * @param params.projectId 项目id
 */
function userExitProject(params: { projectId: string }) {
  return request({
    url: '/admin/tx/project/quit',
    method: 'get',
    params
  })
}

项目视图

项目视图列表

ts
function getViewModelList(params: { enable: string }) {
  return request({
    url: `/admin/tx/project/view/model/list`,
    method: 'get',
    params
  })
}

新增/更新/删除项目视图

ts
/**
 * 新增项目视图
 * @param data
 * @param data.name 视图名称
 * @param data.fieldsIds 项目字段id,多个用逗号隔开
 */
function addProjectView(data: {
  name: string //视图名称
  fieldsIds: string //项目字段id,多个用逗号隔开
}) {
  return request({
    url: '/admin/tx/project/view/model/add',
    method: 'post',
    data
  })
}
/**
 * 更新项目视图
 * @param data
 * @param data.viewModelId 视图id
 * @param data.name 视图名称
 * @param data.fieldsIds 项目字段id,多个用逗号隔开
 */
function updateProjectView(data: {
  viewModelId: string
  name: string
  fieldsIds: string
}) {
  return request({
    url: '/admin/tx/project/view/model/update',
    method: 'put',
    data
  })
}
/**
 * 删除项目视图
 * @param viewModelId 视图id
 */
function deleteProjectView(viewModelId: string) {
  return request({
    url: `/admin/tx/project/view/model/delete`,
    method: 'get',
    params: {
      viewModelId: viewModelId
    }
  })
}

视图查询项目

ts
/**
 * 项目视图模式查询
 * @param params
 * @param params.current 当前页
 * @param params.size 每页条数
 * @param params.viewModelId 视图id
 * @param params.queryFieldParentId 父级id,默认为'0'
 * @param params.queryFieldValue 字段值
 */
function getProjectByViewModel(params: {
  current: string
  size: string
  viewModelId: string
  queryFieldParentId?: string //父级id,默认为'0'
  queryFieldValue?: string
}) {
  return request({
    url: `/admin/tx/project/pageByViewModel`,
    method: 'get',
    params
  })
}

/**
 * @description:项目视图模式查询树结构
 * @return {*}
 */
function getTreeByViewModel(params: { viewModelId: string }) {
  return request({
    url: `/admin/tx/project/treeByViewModel`,
    method: 'get',
    params
  })
}

示例

ts
getProjectByViewModel({
  current: '1',
  size: '10',
  viewModelId: '59e30641abffbfe8bb896564cacf454c',
  queryFieldParentId: '0',
  queryFieldValue: ''
})
// {
//   "code": 0,
//   "msg": null,
//   "data": [
//     {
//       "isFolder": true,
//       "memberList": [],
//       "fieldsId": "754c09edda05b26f165507c715871a48",//项目字段id
//       "children": [],
//       "fieldsValue": "1",//项目字段值
//       "fieldsType": 3,
//       "isShow": true
//     },
//     {
//       "fileSizeTotal": "64798230903",
//       "isFolder": false,
//       "memberList": [
//          ...
//       ],
//       "createTime": "2025-01-15 13:16:08",
//       "managerList": [
//            ...
//       ],
//       "projectName": "测试项目",
//       "projectId": "093ebcc30dfdac27794ef634e5951052",
//       "fileCount": 24
//     }
//   ],
//   "ok": true
// }

// 获取isFolder为true的fieldsId和fieldsValue
getTreeByViewModel({
  current: '1',
  size: '10',
  viewModelId: '59e30641abffbfe8bb896564cacf454c',
  queryFieldParentId: '754c09edda05b26f165507c715871a48',
  queryFieldValue: '1'
})

Released under the MIT License.