项目承接主体功能开发

This commit is contained in:
weibl
2026-01-21 09:42:18 +08:00
parent 6cf56bf139
commit f993d789a7
4 changed files with 55 additions and 12 deletions

View File

@@ -41,3 +41,7 @@ export const exportDemandApi = (params: any, filename: string) => {
export const getDemandDetailApi = (params: any) => {
return get(`${PREFIX}demand/detail`, params);
};
export const queryDemandFilesApi = (params: any) => {
return post(`${PREFIX}demand/queryDemandFiles`, params);
};

View File

@@ -176,7 +176,7 @@
</template>
<script setup lang="ts">
import { ref, onMounted, nextTick, computed } from 'vue';
import { ref, onMounted, nextTick, computed, provide } from 'vue';
import { Plus } from '@element-plus/icons-vue';
import TreeCaseTable from '@/components/common/treeCaseTable/treeTable.vue';
import { getTagKeyMap, NODE_TYPE } from '@/utils/enum/node';
@@ -260,6 +260,11 @@ const props = withDefaults(defineProps<Props>(), {
showNodeCompleteNum: false,
});
const checkMethod = () => {
return false;
};
provide('checkMethod', checkMethod);
const emits = defineEmits(['checkboxChange']);
const tagKeyMap = getTagKeyMap();
@@ -356,7 +361,7 @@ const onNodeDetailConfirmFun = (formData: any) => {
...formData,
depth: checkRowData[0]?.depth + 1,
beginTime: formData.planTime ? formData.planTime[0] : '',
endTime: formData.planTime ? formData.endTime[1] : '',
endTime: formData.planTime ? formData.planTime[1] : '',
// eMemberList: getMemberListByIds(formData.eMemberList)
};

View File

@@ -96,6 +96,15 @@ const addOrEditProject = async () => {
if (await tableFormRef.value.validateFun()) {
loadingInterface.value = true;
const projectForm = tableFormRef.value.getFormDataFun();
// EP的项目主体字段 放到拓展字段
projectForm.extras = projectForm.extras.map((item: any) => {
if (item.propertyName === 'projectUndertaker') {
item.propertyValue = editRowInfo.value.projectUndertaker;
}
return {
...item,
};
});
let result;
if (projectForm.planTime) {
@@ -177,6 +186,7 @@ const editNode = async (projectForm: any) => {
};
const closeFun = () => {
loadingInterface.value = false;
emits('update:modelValue', false);
};
@@ -197,6 +207,8 @@ const epProjectSelectFun = (row: any) => {
nodeCode: row.projectNum,
nodeName: row.projectName,
projectId: row.id,
// EP的项目主体字段 放到拓展字段
projectUndertaker: row.projectUndertaker,
};
// tableFormRef.value.setFormDataFun({
// ...tableFormRef.value.getFormDataFun(),

View File

@@ -28,7 +28,7 @@
:loading="loadingInterface"
:diaTitle="isCreateDialog ? '创建需求' : '编辑需求'"
:width="800"
:height="550"
:height="650"
@close="closeFun"
show-footer
>
@@ -85,6 +85,7 @@ import { enableConfigByTenant, TENANT_ENUM } from '@/tenants/tenant';
import { syncDemandList } from '../taskPage';
import { getChildrenNodeListApi } from '@/api/project/node';
import type { Options } from '@/types';
import { listDeptApi } from '@/api/system/departMent';
const env = import.meta.env;
const PREFIX = env.VITE_API_PREFIX_PROJECT;
@@ -159,6 +160,12 @@ const editFormInfo = ref<any>({});
const visibleDialog = async (isCreate: boolean, row?: any) => {
formVisible.value = true;
isCreateDialog.value = isCreate;
loadingInterface.value = true;
if (isCreate) {
nextTick(() => {
tableFormRef.value.resetFun();
});
}
if (!isCreateDialog.value) {
const res: any = await dataQueryDirApi({ uuid: row.uuid, current: 1, size: 99 });
row.attachments =
@@ -229,6 +236,7 @@ const visibleDialog = async (isCreate: boolean, row?: any) => {
// });
}
emits('visibleDialog', { isCreate, row });
loadingInterface.value = false;
};
const deleteDemandFun = async (uuid: number) => {
@@ -358,8 +366,9 @@ const oldAttachments = ref<any[]>([]);
const changeFun = async (val: any, type: string) => {
const formData = tableFormRef.value.getFormDataFun();
editFormInfo.value = { ...formData };
// editFormInfo.value = { ...formData };
if (val.key === 'projectId') {
console.log('val', val);
let nodeType = '';
let nextKey = '';
let nodeId = '';
@@ -367,14 +376,28 @@ const changeFun = async (val: any, type: string) => {
nodeType = NODE_TYPE.PHASE;
nextKey = 'phaseId';
nodeId = val.data.projectId;
let pMemberId = '';
for (let index = 0; index < val.data.extras.length; index++) {
if (val.val.extras[index]?.propertyName === 'projectUndertaker') {
const deptList = await listDeptApi({ current: 1, size: 999 });
const dept = deptList.data.data.find((item: any) => {
return item.deptName === val.val.extras[index].propertyValue;
});
if (dept) {
pMemberId = dept.userId;
}
}
}
formData.pMemberList = pMemberId;
}
if (nodeId) {
const optionList = await getPhaseList(nodeType, nodeId);
tableFormRef.value.setOptionsFun(nextKey, optionList);
if (nextKey === 'phaseId' && optionList.length > 0) {
formData.phaseId = optionList[0].value;
formData.workspace = (await getWorkSpaceList(formData.phaseId)).value;
formData.workspaceName = (await getWorkSpaceList(formData.phaseId)).label;
const workspaceInfo = await getWorkSpaceList(formData.phaseId);
formData.workspace = workspaceInfo.value;
formData.workspaceName = workspaceInfo.label;
formData.extras = setWorkSpaceValue(
formData.extras,
formData.workspace,
@@ -398,9 +421,9 @@ const changeFun = async (val: any, type: string) => {
if (val.key === 'phaseId') {
if (formData.phaseId) {
// formData.workspace = await getWorkSpaceList(formData.phaseId);
formData.workspace = (await getWorkSpaceList(formData.phaseId)).value;
formData.workspaceName = (await getWorkSpaceList(formData.phaseId)).label;
const workspaceInfo = await getWorkSpaceList(formData.phaseId);
formData.workspace = workspaceInfo.value;
formData.workspaceName = workspaceInfo.label;
formData.extras = setWorkSpaceValue(
formData.extras,
formData.workspace,
@@ -420,9 +443,8 @@ const changeFun = async (val: any, type: string) => {
if (val.key === 'workspace') {
if (formData.workspace) {
console.log('val', val);
formData.workspace = val.val;
// formData.workspaceName = val.data.workspaceName;
formData.workspaceName = new Date().getTime();
formData.workspace = val.val.value;
formData.workspaceName = val.val.label;
formData.extras = setWorkSpaceValue(
formData.extras,
formData.workspace,