项目管理
新建项目
项目字段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
})
}
新建/更新/删除项目字段
项目字段
字段 | type | fieldValue | condition |
---|---|---|---|
单行文本 | 1 | × | × |
多行文本 | 2 | × | × |
单选下拉 | 3 | JSON 字符串,对象类型为 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'
})