分发任务界面开发
This commit is contained in:
@@ -3,6 +3,11 @@ import { get, post } from '@/api/request';
|
|||||||
const env = import.meta.env;
|
const env = import.meta.env;
|
||||||
const PREFIX = env.VITE_API_PREFIX_PROJECT;
|
const PREFIX = env.VITE_API_PREFIX_PROJECT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param type: 0 我执行的 1我关注的 2所有任务 3我负责的
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
export const queryTaskListApi = (params: any) => {
|
export const queryTaskListApi = (params: any) => {
|
||||||
return post(`${PREFIX}task/list`, params);
|
return post(`${PREFIX}task/list`, params);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ export default [
|
|||||||
name: 'TaskConfirm',
|
name: 'TaskConfirm',
|
||||||
component: () => import('@/views/task/simulationTask/confirmTask/index.vue'),
|
component: () => import('@/views/task/simulationTask/confirmTask/index.vue'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '我分发的',
|
||||||
|
path: '/task/send',
|
||||||
|
name: 'TaskSend',
|
||||||
|
component: () => import('@/views/task/simulationTask/mySend/index.vue'),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '我执行的',
|
title: '我执行的',
|
||||||
path: '/task/execute',
|
path: '/task/execute',
|
||||||
|
|||||||
12
src/utils/enum/data.ts
Normal file
12
src/utils/enum/data.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
export enum DIR_TYPE {
|
||||||
|
/** 知识库文件夹 */
|
||||||
|
KNOWLEDGE = 1,
|
||||||
|
/** 项目节点文件夹 */
|
||||||
|
PROJECT_NODE = 2,
|
||||||
|
/** 头像库文件夹 */
|
||||||
|
AVATAR = 3,
|
||||||
|
/** 仿真参数库文件夹 */
|
||||||
|
SIMULATION_PARAM = 4,
|
||||||
|
/** 训练模型文件夹 */
|
||||||
|
TRAINING_MODEL = 5,
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ const lang = {
|
|||||||
'我的任务': 'My Task',
|
'我的任务': 'My Task',
|
||||||
'我发起的': 'I Initiated',
|
'我发起的': 'I Initiated',
|
||||||
'我确认的': 'I Confirmed',
|
'我确认的': 'I Confirmed',
|
||||||
|
'我分发的': 'I Distributed',
|
||||||
'我执行的': 'I Executed',
|
'我执行的': 'I Executed',
|
||||||
'我关注的': 'I Followed',
|
'我关注的': 'I Followed',
|
||||||
'所有任务': 'All Tasks',
|
'所有任务': 'All Tasks',
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ const lang = {
|
|||||||
'我的任务': '我的任务',
|
'我的任务': '我的任务',
|
||||||
'我发起的': '我发起的',
|
'我发起的': '我发起的',
|
||||||
'我确认的': '我确认的',
|
'我确认的': '我确认的',
|
||||||
|
'我分发的': '我分发的',
|
||||||
'我执行的': '我执行的',
|
'我执行的': '我执行的',
|
||||||
'我关注的': '我关注的',
|
'我关注的': '我关注的',
|
||||||
'所有任务': '所有任务',
|
'所有任务': '所有任务',
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="top-icons">
|
<div class="top-icons">
|
||||||
<el-button link @click="goProjectListFun">返回列表</el-button>
|
<el-button link @click="goProjectListFun">返回列表</el-button>
|
||||||
{{ currentProjectInfo.exeStatus }}12
|
|
||||||
<el-button :disable="currentProjectInfo.exeStatus === PROJECT_EXE_STATUS_CODE.CLOSED" icon="setting" @click="openEditBasicDialogFun">项目设置</el-button>
|
<el-button :disable="currentProjectInfo.exeStatus === PROJECT_EXE_STATUS_CODE.CLOSED" icon="setting" @click="openEditBasicDialogFun">项目设置</el-button>
|
||||||
<el-button icon="operation" @click="openEditNodeDialogFun">阶段设置</el-button>
|
<el-button icon="operation" @click="openEditNodeDialogFun">阶段设置</el-button>
|
||||||
<el-button icon="calendar" @click="openAddTaskDialogFun">仿真策划</el-button>
|
<el-button icon="calendar" @click="openAddTaskDialogFun">仿真策划</el-button>
|
||||||
@@ -266,6 +265,9 @@ const closeProject = async() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.gl-page-content {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
.app-container {
|
.app-container {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
|
|||||||
201
src/views/task/simulationTask/mySend/index.vue
Normal file
201
src/views/task/simulationTask/mySend/index.vue
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
<template>
|
||||||
|
<div class="gl-page-content">
|
||||||
|
<taskTable
|
||||||
|
showIndex
|
||||||
|
ref="exeTableRef"
|
||||||
|
tableName="SIMULATION_TASK_SEND_LIST"
|
||||||
|
:params="{type:0}"
|
||||||
|
:api="queryTaskListApi"
|
||||||
|
:actionsWidth="tableActionsLength['2-2']"
|
||||||
|
>
|
||||||
|
<template #tableActions="{ row }">
|
||||||
|
<div class="gl-table-actions">
|
||||||
|
<el-link type="primary" @click="editTaskFun(row)">编辑</el-link>
|
||||||
|
<el-link type="danger" @click="deleteTaskFun(row.uuid)">删除</el-link>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</taskTable>
|
||||||
|
<!-- <BaseTable
|
||||||
|
ref="exeTableRef"
|
||||||
|
tableName="SIMULATION_TASK_EXECUTE_LIST"
|
||||||
|
:api="queryTaskListApi"
|
||||||
|
:params="{type:0}"
|
||||||
|
:searchLimitNum="3"
|
||||||
|
>
|
||||||
|
<template #tableActions="{ row }">
|
||||||
|
<div class="actions">
|
||||||
|
<el-link v-if="row.status === TASK_PROCESS_STATUS.NO_STARTED" type="danger" @click="changeTaskStatus(row, TASK_PROCESS_STATUS.REJECTED)">驳回</el-link>
|
||||||
|
<el-link v-if="row.status === TASK_PROCESS_STATUS.NO_STARTED" type="danger" @click="changeTaskStatus(row, TASK_PROCESS_STATUS.IN_PROGRESS)">启动</el-link>
|
||||||
|
<el-link v-if="row.status === TASK_PROCESS_STATUS.IN_PROGRESS" type="danger" @click="changeTaskStatus(row, TASK_PROCESS_STATUS.PAUSED)">暂停</el-link>
|
||||||
|
<el-link v-if="row.status === TASK_PROCESS_STATUS.IN_PROGRESS" type="danger" @click="changeTaskStatus(row, TASK_PROCESS_STATUS.COMPLETED)">完成</el-link>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</BaseTable> -->
|
||||||
|
<Dialog
|
||||||
|
v-model="formVisible"
|
||||||
|
:loading="loadingInterface"
|
||||||
|
diaTitle="编辑任务"
|
||||||
|
:width="500"
|
||||||
|
:height="500"
|
||||||
|
@close="closeFun"
|
||||||
|
show-footer
|
||||||
|
>
|
||||||
|
<TableForm
|
||||||
|
ref="tableFormRef"
|
||||||
|
tableName="SIMULATION_TASK_SEND_LIST"
|
||||||
|
showDisabled
|
||||||
|
@load="formLoad"
|
||||||
|
>
|
||||||
|
</TableForm>
|
||||||
|
<template #rightfoot>
|
||||||
|
<el-button @click="closeFun">取消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmFun">确认</el-button>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { queryTaskListApi, updateTaskStatusApi } from '@/api/project/task';
|
||||||
|
// import BaseTable from '@/components/common/table/baseTable.vue';
|
||||||
|
import { TASK_CALCULATE_STATUS, TASK_CALCULATE_STATUS_OPTIONS, TASK_PROCESS_STATUS, TASK_PROCESS_STATUS_OPTIONS } from '@/utils/enum/task';
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
|
import taskTable from '../components/taskTable.vue';
|
||||||
|
import { nextTick, onMounted, ref } from 'vue';
|
||||||
|
import Dialog from '@/components/common/dialog/index.vue';
|
||||||
|
import TableForm from '@/components/common/table/tableForm.vue';
|
||||||
|
import { tableActionsLength } from '@/utils/common';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
|
const exeTableRef = ref();
|
||||||
|
|
||||||
|
const loadingInterface = ref(false);
|
||||||
|
|
||||||
|
// SIMULATION_TASK_SEND_LIST
|
||||||
|
// const headData = ref<any[]>([
|
||||||
|
// { title: '任务名称', key: 'taskName', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '任务状态', key: 'taskStatus', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '风险状态', key: 'achievement', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '任务进度', key: 'progress', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '审批状态', key: 'approvalStatus', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '仿真负责人', key: 'simLeader', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '项目', key: 'project', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '学科', key: 'discipline', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '计划结束时间', key: 'endTime', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// { title: '实际结束时间', key: 'actualEndTime', isShow: true, inputMode: 'input', type: 1, inForm: false, required: true },
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
const formVisible = ref(false);
|
||||||
|
const tableFormRef = ref();
|
||||||
|
|
||||||
|
const closeFun = () => {
|
||||||
|
formVisible.value = false;
|
||||||
|
};
|
||||||
|
const editRow = ref();
|
||||||
|
const editTaskFun = (row: any) => {
|
||||||
|
formVisible.value = true;
|
||||||
|
editRow.value = row;
|
||||||
|
nextTick(() => {
|
||||||
|
tableFormRef.value.setFormDataFun({ ...row, achieveStatus: row.achieveStatus + '', eMemberList: row.eMemberList ? row.eMemberList.map((item: any) => item.id).join(',') : '' });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteTaskFun = (uuid:string) => {
|
||||||
|
console.log('uuid', uuid);
|
||||||
|
};
|
||||||
|
const formLoad = () => {
|
||||||
|
console.log('formLoad', tableFormRef.value);
|
||||||
|
// nextTick(() => {
|
||||||
|
const exeStatusList = TASK_PROCESS_STATUS_OPTIONS.map((item: any) => {
|
||||||
|
return {
|
||||||
|
label: item.label,
|
||||||
|
value: item.value,
|
||||||
|
disabled: disposeDisabledExeStatus(editRow.value.exeStatus, item),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const achieveStatusList = TASK_CALCULATE_STATUS_OPTIONS.map((item: any) => {
|
||||||
|
return {
|
||||||
|
label: item.label,
|
||||||
|
value: item.value,
|
||||||
|
disabled: disposeDisabledAchieveStatus(editRow.value.achieveStatus, item),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
tableFormRef.value.setOptionsFun('exeStatus', exeStatusList);
|
||||||
|
tableFormRef.value.setOptionsFun('achieveStatus', achieveStatusList);
|
||||||
|
// });
|
||||||
|
};
|
||||||
|
const disposeDisabledExeStatus = (status: string, option: { value: TASK_PROCESS_STATUS; }) => {
|
||||||
|
if (status === TASK_PROCESS_STATUS.COMPLETED) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (status === TASK_PROCESS_STATUS.IN_PROGRESS) {
|
||||||
|
return [TASK_PROCESS_STATUS.NO_STARTED].includes(option.value);
|
||||||
|
}
|
||||||
|
if (status === TASK_PROCESS_STATUS.NO_STARTED) {
|
||||||
|
return [TASK_PROCESS_STATUS.PAUSED].includes(option.value);
|
||||||
|
}
|
||||||
|
if (status === TASK_PROCESS_STATUS.PAUSED) {
|
||||||
|
return ![TASK_PROCESS_STATUS.IN_PROGRESS].includes(option.value);
|
||||||
|
}
|
||||||
|
if (status === TASK_PROCESS_STATUS.REJECTED) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const disposeDisabledAchieveStatus = (status: string, option: { value: TASK_CALCULATE_STATUS; }) => {
|
||||||
|
if (status === TASK_CALCULATE_STATUS.NO_CALCULATE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (status === TASK_CALCULATE_STATUS.QUALIFIED) {
|
||||||
|
return [TASK_CALCULATE_STATUS.NO_CALCULATE].includes(option.value);
|
||||||
|
}
|
||||||
|
if (status === TASK_CALCULATE_STATUS.UNQUALIFIED) {
|
||||||
|
return [TASK_CALCULATE_STATUS.NO_CALCULATE].includes(option.value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const confirmFun = async() => {
|
||||||
|
if (await tableFormRef.value.validateFun()) {
|
||||||
|
loadingInterface.value = true;
|
||||||
|
const fromData:any = tableFormRef.value.getFormDataFun();
|
||||||
|
// console.log('tableFormRef.value.getFormDataFun()', fromData);
|
||||||
|
const params:{
|
||||||
|
taskId: string;
|
||||||
|
exeStatus: string;
|
||||||
|
achieveStatus: string;
|
||||||
|
process: number;
|
||||||
|
finishTime?: string;
|
||||||
|
} = {
|
||||||
|
...fromData,
|
||||||
|
taskId: fromData.uuid,
|
||||||
|
exeStatus: fromData.exeStatus,
|
||||||
|
achieveStatus: fromData.achieveStatus,
|
||||||
|
process: fromData.progress,
|
||||||
|
};
|
||||||
|
if (fromData.exeStatus === TASK_PROCESS_STATUS.COMPLETED) {
|
||||||
|
params.finishTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
}
|
||||||
|
const res:any = await updateTaskStatusApi(params);
|
||||||
|
if (res.code === 200) {
|
||||||
|
// row.exeStatus = status;
|
||||||
|
ElMessage({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
});
|
||||||
|
formVisible.value = false;
|
||||||
|
console.log('exeTableRef.value', exeTableRef.value);
|
||||||
|
exeTableRef.value.tableRef.resetFun();
|
||||||
|
} else {
|
||||||
|
ElMessage({
|
||||||
|
message: '任务数据更新失败!',
|
||||||
|
type: 'error',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
loadingInterface.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
Reference in New Issue
Block a user