任务新增所属学科
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
v-model="dialogVisible"
|
||||
diaTitle="推送报告"
|
||||
width="80%"
|
||||
:height="500"
|
||||
height="80%"
|
||||
@close="closeFun"
|
||||
show-footer
|
||||
>
|
||||
@@ -102,6 +102,6 @@ onMounted(() => {});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.table-box {
|
||||
height: 50vh;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -20,10 +20,20 @@
|
||||
<div class="attachments">
|
||||
<div class="file" v-for="item in attachmentFiles" :key="item.id">
|
||||
<span>{{ item.name }}</span>
|
||||
<el-icon @click="downloadFileById(item.id)"><Download /></el-icon>
|
||||
<el-icon size="18" @click="downloadFileById(item.id)"><Download /></el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #form-pMemberList>
|
||||
<el-select disabled v-model="demandInfo.pMemberList" filterable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</TableForm>
|
||||
<template #footer>
|
||||
<div>
|
||||
@@ -43,12 +53,16 @@ import { getDemandDetailApi } from '@/api/project/demand';
|
||||
import { getMemberListIds } from '@/utils/task';
|
||||
import { dataQueryDirApi } from '@/api/data/data';
|
||||
import { downloadFileById } from '@/utils/file';
|
||||
import { CommonStore } from '@/stores/common';
|
||||
import { listDeptApi } from '@/api/system/departMent';
|
||||
|
||||
const props = defineProps<{
|
||||
showDialog: boolean;
|
||||
demandUid: string;
|
||||
}>();
|
||||
|
||||
const commonStore = CommonStore();
|
||||
|
||||
const dialogVisible = computed({
|
||||
get() {
|
||||
return props.showDialog;
|
||||
@@ -80,6 +94,8 @@ const getDemandInfo = async () => {
|
||||
tableFormRef.value.setOptionsFun('phaseId', [
|
||||
{ label: res.data.phaseName, value: res.data.phaseId },
|
||||
]);
|
||||
const simTypeList: any = commonStore.getDictData(res.data.demandType);
|
||||
tableFormRef.value.setOptionsFun('simType', simTypeList.A);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -96,13 +112,25 @@ const getAttachments = async () => {
|
||||
};
|
||||
}) || [];
|
||||
};
|
||||
|
||||
const deptOptions = ref<any[]>([]);
|
||||
const getListDept = async () => {
|
||||
const res: any = await listDeptApi({ current: 1, size: 999 });
|
||||
if (res.code === 200) {
|
||||
deptOptions.value = res.data.data.map((item: { deptName: any; userId: any }) => {
|
||||
return {
|
||||
label: item.deptName,
|
||||
value: String(item.userId),
|
||||
};
|
||||
});
|
||||
}
|
||||
};
|
||||
watch(
|
||||
() => props.demandUid,
|
||||
(val) => {
|
||||
if (val) {
|
||||
getDemandInfo();
|
||||
getAttachments();
|
||||
getListDept();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
:exportParams="{ ...params, sortOrder: 1 }"
|
||||
fullHeight
|
||||
:exportDict="{
|
||||
demandType: 'DEMANED_TYPE',
|
||||
demandType: 'DEMAND_TYPE',
|
||||
simType: 'DEMAND_TYPE1',
|
||||
achieveStatus: 'RESULT_ACHIEVE_STATUS',
|
||||
demandStatus: 'DEMAND_EXE_STATUS',
|
||||
|
||||
@@ -46,7 +46,9 @@
|
||||
<template #actualProgress="{ row }">
|
||||
{{ TASK_PROGRESS_STATUS.O[row.actualProgress] }}
|
||||
</template>
|
||||
|
||||
<template #discipline="{ row }">
|
||||
{{ DISCIPLINE_TYPE.O[row.discipline] }}
|
||||
</template>
|
||||
<template #taskName="{ row }">
|
||||
<span class="task-name" @click="nameClickFun(row)">
|
||||
{{ row.taskName }}
|
||||
@@ -203,10 +205,11 @@ const props = defineProps({
|
||||
|
||||
const emits = defineEmits(['show']);
|
||||
|
||||
const { TASK_APPROVE_STATUS, TASK_PROGRESS_STATUS, TASK_ABNORMAL } = useDict(
|
||||
const { TASK_APPROVE_STATUS, TASK_PROGRESS_STATUS, TASK_ABNORMAL, DISCIPLINE_TYPE } = useDict(
|
||||
'TASK_APPROVE_STATUS',
|
||||
'TASK_PROGRESS_STATUS',
|
||||
'TASK_ABNORMAL'
|
||||
'TASK_ABNORMAL',
|
||||
'DISCIPLINE_TYPE'
|
||||
);
|
||||
|
||||
const commonStore = CommonStore();
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
show-footer
|
||||
>
|
||||
<BaseTable
|
||||
:loading="loadingInterface"
|
||||
ref="tableRef"
|
||||
showIndex
|
||||
:headData="headData"
|
||||
@@ -42,6 +41,16 @@
|
||||
</el-tree-select>
|
||||
</div>
|
||||
</template>
|
||||
<template #discipline="{ row }">
|
||||
<el-select class="loadcase-lib" v-show="row.insertMode !== 'lib'" v-model="row.discipline">
|
||||
<el-option
|
||||
v-for="item in DISCIPLINE_TYPE.A"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
<template #insertMode="{ row }">
|
||||
<el-radio-group v-model="row.insertMode">
|
||||
<el-radio value="lib" size="large">从工况库选任务</el-radio>
|
||||
@@ -89,9 +98,11 @@
|
||||
</el-select>
|
||||
</template>
|
||||
<template #selectTask="{ row }">
|
||||
<!-- {{ row.libTaskList }} -->
|
||||
<div class="line-content" v-show="row.insertMode === 'lib'">
|
||||
<span class="required-tag" v-if="row.insertMode === 'lib'">*</span>
|
||||
<el-select-v2
|
||||
v-if="row.libTaskList"
|
||||
v-model="row.chooseTaskList"
|
||||
:options="row.libTaskList"
|
||||
placeholder="请选择"
|
||||
@@ -144,7 +155,7 @@
|
||||
</Dialog>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, nextTick, onMounted, ref } from 'vue';
|
||||
import { computed, onMounted, ref } from 'vue';
|
||||
import Dialog from '@/components/common/dialog/index.vue';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import {
|
||||
@@ -159,6 +170,7 @@ import { filterTask, getIdMap } from '@/views/task/projectDetail/components/proj
|
||||
import { tagSortList } from '@/utils/enum/node';
|
||||
import { getMemberListIds } from '@/utils/task';
|
||||
import { issuedTaskApi } from '@/api/project/demand';
|
||||
import { useDict } from '@/utils/useDict';
|
||||
|
||||
const props = defineProps({
|
||||
diaVisible: {
|
||||
@@ -166,12 +178,14 @@ const props = defineProps({
|
||||
default: false,
|
||||
},
|
||||
checkedList: {
|
||||
type: Array,
|
||||
type: Array as any,
|
||||
default: () => [],
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(['update:diaVisible']);
|
||||
|
||||
const { DISCIPLINE_TYPE } = useDict('DISCIPLINE_TYPE');
|
||||
|
||||
const tableRef = ref();
|
||||
|
||||
const diaVisible = computed({
|
||||
@@ -194,7 +208,7 @@ const headData = ref<any[]>([
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
title: '上层节点',
|
||||
title: '上层节点1',
|
||||
key: 'insertLevel',
|
||||
isShow: true,
|
||||
inputMode: 'input',
|
||||
@@ -202,6 +216,15 @@ const headData = ref<any[]>([
|
||||
inForm: false,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
title: '所属学科2',
|
||||
key: 'discipline',
|
||||
isShow: true,
|
||||
inputMode: 'input',
|
||||
type: 1,
|
||||
inForm: false,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
title: '插入模式',
|
||||
key: 'insertMode',
|
||||
@@ -300,6 +323,7 @@ const confirmFun = async () => {
|
||||
endTime: demandItem.endTime,
|
||||
eMemberList: demandItem.eMemberList,
|
||||
pMemberList: pMemberListStr,
|
||||
aMemberList: getMemberListIds(demandItem.aMemberList),
|
||||
};
|
||||
});
|
||||
params.push({
|
||||
@@ -318,6 +342,8 @@ const confirmFun = async () => {
|
||||
eMemberList: demandItem.eMemberList,
|
||||
pMemberList: pMemberListStr,
|
||||
nodeId: parentNodeInfo.uuid,
|
||||
discipline: demandItem.discipline,
|
||||
aMemberList: getMemberListIds(demandItem.aMemberList),
|
||||
},
|
||||
],
|
||||
demandId: demandItem.uuid,
|
||||
@@ -361,13 +387,18 @@ const queryPoolListFun = async () => {
|
||||
loadcaseLibList.value = [];
|
||||
}
|
||||
if (loadcaseLibList.value.length > 0) {
|
||||
for (let index = 0; index < props.checkedList.length; index++) {
|
||||
(props.checkedList[index] as any).indexTreeData = await getIndexTreeData(
|
||||
props.checkedList[index]
|
||||
const poolInfo = { currentLoadcaseLib: loadcaseLibList.value[0] };
|
||||
queryLoadcaseLibVersionsFun(poolInfo);
|
||||
for (let index = 0; index < checkedDemandList.value.length; index++) {
|
||||
(checkedDemandList.value[index] as any).indexTreeData = await getIndexTreeData(
|
||||
checkedDemandList.value[index]
|
||||
);
|
||||
(props.checkedList[index] as any).currentLoadcaseLib = loadcaseLibList.value[0];
|
||||
queryLoadcaseLibVersionsFun(props.checkedList[index]);
|
||||
// (props.checkedList[index] as any).currentLoadcaseLib = loadcaseLibList.value[0];
|
||||
const newCheckedInfo: any = { ...checkedDemandList.value[index], ...poolInfo };
|
||||
checkedDemandList.value[index] = newCheckedInfo;
|
||||
}
|
||||
|
||||
console.log('poolInfo', poolInfo);
|
||||
}
|
||||
};
|
||||
const getIndexTreeData = async (info: any) => {
|
||||
@@ -406,27 +437,24 @@ const getLoadcaseList = async (row: any) => {
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const checkedDemandList = ref<any[]>([]);
|
||||
onMounted(async () => {
|
||||
checkedDemandList.value = props.checkedList.map((item: any) => {
|
||||
return {
|
||||
...item,
|
||||
insertMode: 'lib',
|
||||
taskName: item.demandName,
|
||||
chooseTaskList: [],
|
||||
eMemberList: getMemberListIds(item.eMemberList),
|
||||
planTime: [item.beginTime, item.endTime],
|
||||
};
|
||||
});
|
||||
loadingInterface.value = true;
|
||||
await queryPoolListFun();
|
||||
loadingInterface.value = false;
|
||||
|
||||
setTimeout(() => {
|
||||
nextTick(() => {
|
||||
tableRef.value.setDataFun(
|
||||
props.checkedList.map((item: any) => {
|
||||
return {
|
||||
...item,
|
||||
insertMode: 'lib',
|
||||
taskName: item.demandName,
|
||||
chooseTaskList: [],
|
||||
eMemberList: getMemberListIds(item.eMemberList),
|
||||
planTime: [item.beginTime, item.endTime],
|
||||
};
|
||||
})
|
||||
);
|
||||
});
|
||||
tableRef.value.setDataFun(checkedDemandList.value);
|
||||
}, 500);
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
:api="demandListApi"
|
||||
exportFileName="我确认的需求"
|
||||
:actionList="actionList"
|
||||
@show="sendTaskFun"
|
||||
>
|
||||
<template #leftOptions>
|
||||
<el-button
|
||||
@@ -59,6 +58,16 @@
|
||||
</template>
|
||||
</el-tree-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属学科:">
|
||||
<el-select class="loadcase-lib" :teleported="false" v-model="sendForm.discipline">
|
||||
<el-option
|
||||
v-for="item in DISCIPLINE_TYPE.A"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="插入模式:">
|
||||
<el-radio-group v-model="insertTaskMode">
|
||||
<el-radio value="lib" size="large">从工况库选任务</el-radio>
|
||||
@@ -132,7 +141,7 @@
|
||||
<el-form-item label="计划开始时间">
|
||||
<el-date-picker
|
||||
v-model="sendForm.beginTime"
|
||||
type="datetime"
|
||||
type="datetimerange"
|
||||
placeholder="选择日期"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
@@ -187,6 +196,7 @@ import batchSendTask from './components/batchSendTask.vue';
|
||||
import { getMemberListIds } from '@/utils/task';
|
||||
import { enableConfigByTenant, TENANT_ENUM } from '@/tenants/tenant';
|
||||
import { syncDemandList } from '../taskPage';
|
||||
import { useDict } from '@/utils/useDict';
|
||||
// const commonStore = CommonStore();
|
||||
|
||||
const taskParams = ref({ type: 1 });
|
||||
@@ -197,6 +207,8 @@ const attachmentsVisible = ref(false);
|
||||
|
||||
const loadingInterface = ref(false);
|
||||
|
||||
const { DISCIPLINE_TYPE } = useDict('DISCIPLINE_TYPE');
|
||||
|
||||
const actionList = ref([
|
||||
{
|
||||
title: '分发',
|
||||
@@ -332,6 +344,7 @@ const sendTaskConfirmFun = () => {
|
||||
endTime: sendForm.endTime,
|
||||
pMemberList: pMemberListStr,
|
||||
eMemberList: sendForm.eMemberList,
|
||||
aMemberList: getMemberListIds(sendForm.aMemberList),
|
||||
};
|
||||
});
|
||||
params = {
|
||||
@@ -350,6 +363,7 @@ const sendTaskConfirmFun = () => {
|
||||
endTime: sendForm.endTime,
|
||||
pMemberList: pMemberListStr,
|
||||
eMemberList: sendForm.eMemberList,
|
||||
aMemberList: getMemberListIds(sendForm.aMemberList),
|
||||
},
|
||||
],
|
||||
demandId: sendForm.uuid,
|
||||
@@ -382,6 +396,7 @@ const sendTaskFun = async (row: any) => {
|
||||
sendForm.beginTime = '';
|
||||
sendForm.endTime = '';
|
||||
sendForm.eMemberList = '';
|
||||
sendForm.aMemberList = row.aMemberList;
|
||||
|
||||
const taskTree = await getTaskTreeFun(row.projectId, row.phaseId);
|
||||
indexTreeData.value = filterTask(taskTree);
|
||||
|
||||
@@ -59,7 +59,5 @@ export const syncDemandList = async () => {
|
||||
});
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('同步成功');
|
||||
} else {
|
||||
ElMessage.error(res.message || '同步失败');
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user