From 71a9eef518f2f2f1a1eb2fb90f2eb8ab7b155bc8 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 08 一月 2026 14:57:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津军泰伟业' into dev_天津军泰伟业
---
src/views/oaSystem/projectManagement/index.vue | 792 ++++++++++++++++++++++++++++----------------------------
1 files changed, 392 insertions(+), 400 deletions(-)
diff --git a/src/views/oaSystem/projectManagement/index.vue b/src/views/oaSystem/projectManagement/index.vue
index 2a0ec3a..a727c1b 100644
--- a/src/views/oaSystem/projectManagement/index.vue
+++ b/src/views/oaSystem/projectManagement/index.vue
@@ -1,54 +1,59 @@
<template>
<div class="app-container">
<!-- 椤堕儴鎼滅储鍜屾搷浣滄爮 -->
- <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="80px">
- <el-form-item label="椤圭洰鍚嶇О" prop="projectName">
- <el-input
- v-model="queryParams.projectName"
- placeholder="璇疯緭鍏ラ」鐩悕绉�"
- clearable
- style="width: 240px"
- @keyup.enter="handleQuery"
- />
+ <el-form :model="queryParams"
+ ref="queryRef"
+ :inline="true"
+ label-width="80px">
+ <el-form-item label="椤圭洰鍚嶇О"
+ prop="projectName">
+ <el-input v-model="queryParams.projectName"
+ placeholder="璇疯緭鍏ラ」鐩悕绉�"
+ clearable
+ style="width: 240px"
+ @keyup.enter="handleQuery" />
</el-form-item>
- <el-form-item label="璐熻矗浜�" prop="managerName">
- <el-input
- v-model="queryParams.managerName"
- placeholder="璇疯緭鍏ヨ礋璐d汉濮撳悕"
- clearable
- style="width: 240px"
- @keyup.enter="handleQuery"
- />
+ <el-form-item label="璐熻矗浜�"
+ prop="managerName">
+ <el-input v-model="queryParams.managerName"
+ placeholder="璇疯緭鍏ヨ礋璐d汉濮撳悕"
+ clearable
+ style="width: 240px"
+ @keyup.enter="handleQuery" />
</el-form-item>
- <el-form-item label="鐘舵��" prop="status">
- <el-select
- v-model="queryParams.status"
- placeholder="椤圭洰鐘舵��"
- clearable
- style="width: 150px"
- >
- <el-option label="瑙勫垝涓�" value="planning" />
- <el-option label="杩涜涓�" value="inProgress" />
- <el-option label="宸插畬鎴�" value="completed" />
- <el-option label="宸叉殏鍋�" value="paused" />
+ <el-form-item label="鐘舵��"
+ prop="status">
+ <el-select v-model="queryParams.status"
+ placeholder="椤圭洰鐘舵��"
+ clearable
+ style="width: 150px">
+ <el-option label="瑙勫垝涓�"
+ value="planning" />
+ <el-option label="杩涜涓�"
+ value="inProgress" />
+ <el-option label="宸插畬鎴�"
+ value="completed" />
+ <el-option label="宸叉殏鍋�"
+ value="paused" />
</el-select>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
- <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+ <el-button type="primary"
+ icon="Search"
+ @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="Refresh"
+ @click="resetQuery">閲嶇疆</el-button>
</el-form-item>
</el-form>
-
<!-- 宸ュ叿鏍� -->
- <el-row :gutter="10" class="mb8">
+ <el-row :gutter="10"
+ class="mb8">
<el-col :span="1.5">
- <el-button
- type="primary"
- plain
- icon="Plus"
- @click="handleAdd"
- v-hasPermi="['oaSystem:project:add']"
- >鏂板椤圭洰</el-button>
+ <el-button type="primary"
+ plain
+ icon="Plus"
+ @click="handleAdd"
+ v-hasPermi="['oaSystem:project:add']">鏂板椤圭洰</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
@@ -71,125 +76,99 @@
>鍒犻櫎椤圭洰</el-button>
</el-col> -->
<el-col :span="1.5">
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['oaSystem:project:export']"
- >瀵煎嚭椤圭洰</el-button>
+ <el-button type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['oaSystem:project:export']">瀵煎嚭椤圭洰</el-button>
</el-col>
</el-row>
-
<!-- 椤圭洰鍒楄〃琛ㄦ牸 -->
- <el-table
- v-loading="loading"
- :data="projectList"
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="50" align="center" />
- <el-table-column
- label="椤圭洰缂栧彿"
- align="center"
- prop="projectId"
- width="100"
- />
- <el-table-column
- label="椤圭洰鍚嶇О"
- align="center"
- prop="projectName"
- :show-overflow-tooltip="true"
- />
- <el-table-column
- label="璐熻矗浜�"
- align="center"
- prop="managerName"
- />
- <el-table-column
- label="寮�濮嬫棩鏈�"
- align="center"
- prop="startDate"
- width="120"
- />
- <el-table-column
- label="缁撴潫鏃ユ湡"
- align="center"
- prop="endDate"
- width="120"
- />
- <el-table-column
- label="鐘舵��"
- align="center"
- prop="status"
- width="90"
- >
+ <el-table v-loading="loading"
+ :data="projectList"
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection"
+ width="50"
+ align="center" />
+ <el-table-column label="椤圭洰缂栧彿"
+ align="center"
+ prop="projectId"
+ width="100" />
+ <el-table-column label="椤圭洰鍚嶇О"
+ align="center"
+ prop="projectName"
+ :show-overflow-tooltip="true" />
+ <el-table-column label="璐熻矗浜�"
+ align="center"
+ prop="managerName" />
+ <el-table-column label="寮�濮嬫棩鏈�"
+ align="center"
+ prop="startDate"
+ width="120" />
+ <el-table-column label="缁撴潫鏃ユ湡"
+ align="center"
+ prop="endDate"
+ width="120" />
+ <el-table-column label="鐘舵��"
+ align="center"
+ prop="status"
+ width="90">
<template #default="scope">
<el-tag :type="getStatusType(scope.row.status)">{{ getStatusText(scope.row.status) }}</el-tag>
</template>
</el-table-column>
- <el-table-column
- label="瀹屾垚搴�"
- align="center"
- prop="completionRate"
- width="100"
- >
+ <el-table-column label="瀹屾垚搴�"
+ align="center"
+ prop="completionRate"
+ width="100">
<template #default="scope">
- <el-progress :percentage="scope.row.completionRate" :stroke-width="6" />
+ <el-progress :percentage="scope.row.completionRate"
+ :stroke-width="6" />
</template>
</el-table-column>
- <el-table-column
- label="鎿嶄綔"
- align="center"
- width="180"
- class-name="small-padding fixed-width"
- >
+ <el-table-column label="鎿嶄綔"
+ align="center"
+ width="180"
+ class-name="small-padding fixed-width">
<template #default="scope">
- <el-button
- link
- type="primary"
- icon="Search"
- @click="handleView(scope.row)"
- v-hasPermi="['oaSystem:project:query']"
- >璇︽儏</el-button>
- <el-button
- link
- type="primary"
- icon="Edit"
- @click="handleUpdate(scope.row)"
- v-hasPermi="['oaSystem:project:edit']"
- >缂栬緫</el-button>
- <el-button
- link
- type="danger"
- icon="Delete"
- @click="handleDelete(scope.row)"
- v-hasPermi="['oaSystem:project:remove']"
- >鍒犻櫎</el-button>
+ <el-button link
+ type="primary"
+ icon="Search"
+ @click="handleView(scope.row)"
+ v-hasPermi="['oaSystem:project:query']">璇︽儏</el-button>
+ <el-button link
+ type="primary"
+ icon="Edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['oaSystem:project:edit']">缂栬緫</el-button>
+ <el-button link
+ type="danger"
+ icon="Delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['oaSystem:project:remove']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
-
<!-- 鍒嗛〉缁勪欢 -->
- <pagination
- v-show="total > 0"
- :total="total"
- v-model:page="queryParams.pageNum"
- v-model:limit="queryParams.pageSize"
- @pagination="getList"
- />
-
+ <pagination v-show="total > 0"
+ :total="total"
+ v-model:page="queryParams.pageNum"
+ v-model:limit="queryParams.pageSize"
+ @pagination="getList" />
<!-- 椤圭洰琛ㄥ崟瀵硅瘽妗� -->
- <el-dialog :title="title" v-model="open" width="600px" append-to-body>
- <project-form
- ref="projectFormRef"
- :form="form"
- :rules="rules"
- :visible="open"
- />
+ <el-dialog :title="title"
+ v-model="open"
+ width="600px"
+ append-to-body>
+ <project-form ref="projectFormRef"
+ :form="form"
+ :rules="rules"
+ :visible="open" />
<template #footer>
<div class="dialog-footer">
+ <el-button type="primary"
+ @click="submitForm">纭畾</el-button>
<el-button @click="cancel">鍙栨秷</el-button>
- <el-button type="primary" @click="submitForm">纭畾</el-button>
</div>
</template>
</el-dialog>
@@ -197,285 +176,298 @@
</template>
<script setup>
-import { ref, reactive, computed, onMounted } from 'vue';
-import { ElMessage, ElMessageBox } from 'element-plus';
-import Pagination from '@/components/Pagination';
-import ProjectForm from './components/projectForm.vue';
-import { useRouter } from 'vue-router';
-const { proxy } = getCurrentInstance();
-// 瀵煎叆椤圭洰绠$悊API鎺ュ彛
-import { listProject, addProject, updateProject, delProject, exportProject } from '@/api/oaSystem/projectManagement';
-// import { listUser } from '@/api/system/user'; // 瀵煎叆鐢ㄦ埛鍒楄〃API鎺ュ彛
+ import { ref, reactive, computed, onMounted } from "vue";
+ import { ElMessage, ElMessageBox } from "element-plus";
+ import Pagination from "@/components/Pagination";
+ import ProjectForm from "./components/projectForm.vue";
+ import { useRouter } from "vue-router";
+ const { proxy } = getCurrentInstance();
+ // 瀵煎叆椤圭洰绠$悊API鎺ュ彛
+ import {
+ listProject,
+ addProject,
+ updateProject,
+ delProject,
+ exportProject,
+ } from "@/api/oaSystem/projectManagement";
+ // import { listUser } from '@/api/system/user'; // 瀵煎叆鐢ㄦ埛鍒楄〃API鎺ュ彛
-// 鍒涘缓router瀹炰緥
-const router = useRouter();
+ // 鍒涘缓router瀹炰緥
+ const router = useRouter();
-// 琛ㄦ牸鏁版嵁
-const projectList = ref([]);
-const loading = ref(true);
-const total = ref(0);
-const queryParams = reactive({
- pageNum: 1,
- pageSize: 10,
- projectName: '',
- managerName: '',
- status: ''
-});
-
-// 琛ㄥ崟鏁版嵁
-const form = reactive({
- projectId: undefined,
- projectName: '',
- description: '',
- startDate: '',
- endDate: '',
- managerId: '',
- managerName: '',
- status: 'planning',
- completionRate: 0
-});
-
-// 琛ㄥ崟鏍¢獙瑙勫垯
-const rules = {
- projectName: [
- { required: true, message: '椤圭洰鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' },
- { min: 2, max: 50, message: '椤圭洰鍚嶇О闀垮害鍦� 2 鍒� 50 涓瓧绗�', trigger: 'blur' }
- ],
- startDate: [
- { required: true, message: '寮�濮嬫棩鏈熶笉鑳戒负绌�', trigger: 'change' }
- ],
- endDate: [
- { required: true, message: '缁撴潫鏃ユ湡涓嶈兘涓虹┖', trigger: 'change' }
- ],
- managerId: [
- { required: true, message: '璐熻矗浜轰笉鑳戒负绌�', trigger: 'blur' }
- ]
-};
-
-// 瀵硅瘽妗嗙姸鎬�
-const open = ref(false);
-const title = ref('');
-const projectFormRef = ref();
-const queryRef = ref();
-
-// 閫変腑鐘舵��
-const multiple = computed(() => {
- return selectedRowKeys.value.length === 0;
-});
-const single = computed(() => {
- return selectedRowKeys.value.length !== 1;
-});
-const selectedRowKeys = ref([]);
-
-// 鑾峰彇椤圭洰鍒楄〃
-const getList = async () => {
- loading.value = true;
- try {
- const { data } = await listProject(queryParams);
- projectList.value = data.records;
- total.value = data.total;
- } catch (error) {
- ElMessage.error('鑾峰彇椤圭洰鍒楄〃澶辫触');
- console.error('鑾峰彇椤圭洰鍒楄〃澶辫触:', error);
- } finally {
- loading.value = false;
- }
-};
-
-// 鎼滅储
-const handleQuery = () => {
- queryParams.pageNum = 1;
- getList();
-};
-
-// 閲嶇疆
-const resetQuery = () => {
- if (queryRef.value) {
- queryRef.value.resetFields();
- }
- handleQuery();
-};
-
-// 閫変腑琛屽彉鍖�
-const handleSelectionChange = (selection) => {
- selectedRowKeys.value = selection.map(item => item.projectId);
-};
-
-// 鏂板椤圭洰
-const handleAdd = () => {
- resetForm();
- open.value = true;
- title.value = '鏂板椤圭洰';
-};
-
-// 缂栬緫椤圭洰
-const handleUpdate = async (row) => {
- resetForm();
- const projectId = row.projectId || selectedRowKeys.value[0];
- try {
- // const { data } = await getProject(projectId);
- Object.assign(form, row);
- open.value = true;
- title.value = '缂栬緫椤圭洰';
- } catch (error) {
- ElMessage.error('鑾峰彇椤圭洰璇︽儏澶辫触');
- console.error('鑾峰彇椤圭洰璇︽儏澶辫触:', error);
- }
-};
-
-// 鍒犻櫎椤圭洰
-const handleDelete = async (row) => {
- // const projectIds = row.projectId ? [row.projectId] : selectedRowKeys.value;
- const projectNames = row.projectName ? [row.projectName] :
- projectList.value.filter(item => projectIds.includes(item.projectId)).map(item => item.projectName);
-
- const confirmMessage = `纭畾瑕佸垹闄ら」鐩� "${projectNames.join('銆�')}" 鍚楋紵`;
- await ElMessageBox.confirm(confirmMessage, '纭鎿嶄綔', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- }).catch(() => {
- throw new Error('鍙栨秷鍒犻櫎');
+ // 琛ㄦ牸鏁版嵁
+ const projectList = ref([]);
+ const loading = ref(true);
+ const total = ref(0);
+ const queryParams = reactive({
+ pageNum: 1,
+ pageSize: 10,
+ projectName: "",
+ managerName: "",
+ status: "",
});
-
- try {
- // if (projectIds.length === 1) {
- await delProject(row.projectId);
- // } else {
- // await delProjectBatch(projectIds);
- // }
- ElMessage.success('鍒犻櫎鎴愬姛');
- getList();
- } catch (error) {
- if (error.message !== '鍙栨秷鍒犻櫎') {
- ElMessage.error('鍒犻櫎澶辫触');
- console.error('鍒犻櫎椤圭洰澶辫触:', error);
+
+ // 琛ㄥ崟鏁版嵁
+ const form = reactive({
+ projectId: undefined,
+ projectName: "",
+ description: "",
+ startDate: "",
+ endDate: "",
+ managerId: "",
+ managerName: "",
+ status: "planning",
+ completionRate: 0,
+ });
+
+ // 琛ㄥ崟鏍¢獙瑙勫垯
+ const rules = {
+ projectName: [
+ { required: true, message: "椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 50,
+ message: "椤圭洰鍚嶇О闀垮害鍦� 2 鍒� 50 涓瓧绗�",
+ trigger: "blur",
+ },
+ ],
+ startDate: [
+ { required: true, message: "寮�濮嬫棩鏈熶笉鑳戒负绌�", trigger: "change" },
+ ],
+ endDate: [{ required: true, message: "缁撴潫鏃ユ湡涓嶈兘涓虹┖", trigger: "change" }],
+ managerId: [{ required: true, message: "璐熻矗浜轰笉鑳戒负绌�", trigger: "blur" }],
+ };
+
+ // 瀵硅瘽妗嗙姸鎬�
+ const open = ref(false);
+ const title = ref("");
+ const projectFormRef = ref();
+ const queryRef = ref();
+
+ // 閫変腑鐘舵��
+ const multiple = computed(() => {
+ return selectedRowKeys.value.length === 0;
+ });
+ const single = computed(() => {
+ return selectedRowKeys.value.length !== 1;
+ });
+ const selectedRowKeys = ref([]);
+
+ // 鑾峰彇椤圭洰鍒楄〃
+ const getList = async () => {
+ loading.value = true;
+ try {
+ const { data } = await listProject(queryParams);
+ projectList.value = data.records;
+ total.value = data.total;
+ } catch (error) {
+ ElMessage.error("鑾峰彇椤圭洰鍒楄〃澶辫触");
+ console.error("鑾峰彇椤圭洰鍒楄〃澶辫触:", error);
+ } finally {
+ loading.value = false;
}
- }
- // try {
- // await ElMessageBox.confirm(confirmMessage, '纭鎿嶄綔', {
- // confirmButtonText: '纭畾',
- // cancelButtonText: '鍙栨秷',
- // type: 'warning'
- // });
-
- // // 妯℃嫙缃戠粶寤惰繜
- // await new Promise(resolve => setTimeout(resolve, 300));
-
-
- // ElMessage.success('鍒犻櫎鎴愬姛');
- // getList();
- // } catch (error) {
- // if (error !== 'cancel') {
- // console.error('鍒犻櫎椤圭洰澶辫触:', error);
- // }
- // }
-};
+ };
-// 鏌ョ湅椤圭洰璇︽儏
-const handleView = (row) => {
- const projectId = row.projectId;
- // 璺宠浆鍒伴」鐩鎯呴〉闈�
- router.push({
- path: `/oaSystem/projectManagement/projectDetail/${projectId}`,
- query: { projectName: row.projectName }
- });
-};
+ // 鎼滅储
+ const handleQuery = () => {
+ queryParams.pageNum = 1;
+ getList();
+ };
-// 瀵煎嚭椤圭洰
-const handleExport = async () => {
+ // 閲嶇疆
+ const resetQuery = () => {
+ if (queryRef.value) {
+ queryRef.value.resetFields();
+ }
+ handleQuery();
+ };
+
+ // 閫変腑琛屽彉鍖�
+ const handleSelectionChange = selection => {
+ selectedRowKeys.value = selection.map(item => item.projectId);
+ };
+
+ // 鏂板椤圭洰
+ const handleAdd = () => {
+ resetForm();
+ open.value = true;
+ title.value = "鏂板椤圭洰";
+ };
+
+ // 缂栬緫椤圭洰
+ const handleUpdate = async row => {
+ resetForm();
+ const projectId = row.projectId || selectedRowKeys.value[0];
+ try {
+ // const { data } = await getProject(projectId);
+ Object.assign(form, row);
+ open.value = true;
+ title.value = "缂栬緫椤圭洰";
+ } catch (error) {
+ ElMessage.error("鑾峰彇椤圭洰璇︽儏澶辫触");
+ console.error("鑾峰彇椤圭洰璇︽儏澶辫触:", error);
+ }
+ };
+
+ // 鍒犻櫎椤圭洰
+ const handleDelete = async row => {
+ // const projectIds = row.projectId ? [row.projectId] : selectedRowKeys.value;
+ const projectNames = row.projectName
+ ? [row.projectName]
+ : projectList.value
+ .filter(item => projectIds.includes(item.projectId))
+ .map(item => item.projectName);
+
+ const confirmMessage = `纭畾瑕佸垹闄ら」鐩� "${projectNames.join("銆�")}" 鍚楋紵`;
+ await ElMessageBox.confirm(confirmMessage, "纭鎿嶄綔", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }).catch(() => {
+ throw new Error("鍙栨秷鍒犻櫎");
+ });
+
+ try {
+ // if (projectIds.length === 1) {
+ await delProject(row.projectId);
+ // } else {
+ // await delProjectBatch(projectIds);
+ // }
+ ElMessage.success("鍒犻櫎鎴愬姛");
+ getList();
+ } catch (error) {
+ if (error.message !== "鍙栨秷鍒犻櫎") {
+ ElMessage.error("鍒犻櫎澶辫触");
+ console.error("鍒犻櫎椤圭洰澶辫触:", error);
+ }
+ }
+ // try {
+ // await ElMessageBox.confirm(confirmMessage, '纭鎿嶄綔', {
+ // confirmButtonText: '纭畾',
+ // cancelButtonText: '鍙栨秷',
+ // type: 'warning'
+ // });
+
+ // // 妯℃嫙缃戠粶寤惰繜
+ // await new Promise(resolve => setTimeout(resolve, 300));
+
+ // ElMessage.success('鍒犻櫎鎴愬姛');
+ // getList();
+ // } catch (error) {
+ // if (error !== 'cancel') {
+ // console.error('鍒犻櫎椤圭洰澶辫触:', error);
+ // }
+ // }
+ };
+
+ // 鏌ョ湅椤圭洰璇︽儏
+ const handleView = row => {
+ const projectId = row.projectId;
+ // 璺宠浆鍒伴」鐩鎯呴〉闈�
+ router.push({
+ path: `/oaSystem/projectManagement/projectDetail/${projectId}`,
+ query: { projectName: row.projectName },
+ });
+ };
+
+ // 瀵煎嚭椤圭洰
+ const handleExport = async () => {
let ids = [];
if (selectedRowKeys.value.length > 0) {
ids = selectedRowKeys.value; // 瀵煎嚭閫変腑鐨勯」鐩�
} else {
ids = projectList.value.map(item => item.projectId); // 瀵煎嚭鎵�鏈夐」鐩�
}
- ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
- confirmButtonText: "纭",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
- .then(() => {
- proxy.download(`/oA/project/export/${ids.join(',')}`, {}, "椤圭洰鏁版嵁.xlsx");
- ElMessage.success("瀵煎嚭鎴愬姛");
- ids = [];
+ ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+ confirmButtonText: "纭",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
})
- .catch(() => {
- proxy.$modal.msg("宸插彇娑�");
- });
-};
-// 鎻愪氦琛ㄥ崟
-const submitForm = async () => {
- try {
- await projectFormRef.value.validate();
+ .then(() => {
+ proxy.download(
+ `/oA/project/export/${ids.join(",")}`,
+ {},
+ "椤圭洰鏁版嵁.xlsx"
+ );
+ ElMessage.success("瀵煎嚭鎴愬姛");
+ ids = [];
+ })
+ .catch(() => {
+ proxy.$modal.msg("宸插彇娑�");
+ });
+ };
+ // 鎻愪氦琛ㄥ崟
+ const submitForm = async () => {
+ try {
+ await projectFormRef.value.validate();
- if (form.projectId) {
- await updateProject(form);
- ElMessage.success('淇敼椤圭洰鎴愬姛');
- } else {
- console.log("form",form);
- await addProject(form);
- ElMessage.success('鏂板椤圭洰鎴愬姛');
+ if (form.projectId) {
+ await updateProject(form);
+ ElMessage.success("淇敼椤圭洰鎴愬姛");
+ } else {
+ console.log("form", form);
+ await addProject(form);
+ ElMessage.success("鏂板椤圭洰鎴愬姛");
+ }
+ open.value = false;
+ getList();
+ } catch (error) {
+ console.error("鎻愪氦琛ㄥ崟澶辫触:", error);
}
+ };
+
+ // 鍙栨秷
+ const cancel = () => {
open.value = false;
+ resetForm();
+ };
+
+ // 閲嶇疆琛ㄥ崟
+ const resetForm = () => {
+ form.projectId = undefined;
+ form.projectName = "";
+ form.description = "";
+ form.startDate = "";
+ form.endDate = "";
+ form.managerId = "";
+ form.managerName = "";
+ form.status = "planning";
+ form.completionRate = 0;
+ if (projectFormRef.value) {
+ projectFormRef.value.resetFields();
+ }
+ };
+
+ // 鑾峰彇鐘舵�佹爣绛剧被鍨�
+ const getStatusType = status => {
+ const statusTypeMap = {
+ planning: "info",
+ inProgress: "primary",
+ completed: "success",
+ paused: "warning",
+ };
+ return statusTypeMap[status] || "default";
+ };
+
+ // 鑾峰彇鐘舵�佹枃鏈�
+ const getStatusText = status => {
+ const statusTextMap = {
+ planning: "瑙勫垝涓�",
+ inProgress: "杩涜涓�",
+ completed: "宸插畬鎴�",
+ paused: "宸叉殏鍋�",
+ };
+ return statusTextMap[status] || status;
+ };
+
+ // 鍒濆鍖�
+ onMounted(() => {
getList();
- } catch (error) {
- console.error('鎻愪氦琛ㄥ崟澶辫触:', error);
- }
-};
-
-// 鍙栨秷
-const cancel = () => {
- open.value = false;
- resetForm();
-};
-
-// 閲嶇疆琛ㄥ崟
-const resetForm = () => {
- form.projectId = undefined;
- form.projectName = '';
- form.description = '';
- form.startDate = '';
- form.endDate = '';
- form.managerId = '';
- form.managerName = '';
- form.status = 'planning';
- form.completionRate = 0;
- if (projectFormRef.value) {
- projectFormRef.value.resetFields();
- }
-};
-
-// 鑾峰彇鐘舵�佹爣绛剧被鍨�
-const getStatusType = (status) => {
- const statusTypeMap = {
- planning: 'info',
- inProgress: 'primary',
- completed: 'success',
- paused: 'warning'
- };
- return statusTypeMap[status] || 'default';
-};
-
-// 鑾峰彇鐘舵�佹枃鏈�
-const getStatusText = (status) => {
- const statusTextMap = {
- planning: '瑙勫垝涓�',
- inProgress: '杩涜涓�',
- completed: '宸插畬鎴�',
- paused: '宸叉殏鍋�'
- };
- return statusTextMap[status] || status;
-};
-
-// 鍒濆鍖�
-onMounted(() => {
- getList();
-});
+ });
</script>
<style scoped>
-.app-container {
- padding: 20px;
-}
+ .app-container {
+ padding: 20px;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.3