From 31d78dd4e988cfce8f0a16678f2041849cc0dce3 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 06 六月 2025 18:07:52 +0800 Subject: [PATCH] 工作台 --- src/views/components/noticeTable.vue | 160 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 124 insertions(+), 36 deletions(-) diff --git a/src/views/components/noticeTable.vue b/src/views/components/noticeTable.vue index 319ebda..9e173d3 100644 --- a/src/views/components/noticeTable.vue +++ b/src/views/components/noticeTable.vue @@ -1,6 +1,6 @@ <template> - <div> - <div class="flex justify-between mb-[15px]"> + <div style="position: relative"> + <div class="flex justify-between mb-[15px]" style="align-items: center;margin-bottom: 5px"> <div class="block mb-3 font-semibold fonts">寰呭姙浜嬮」</div> <div class="flex text-[12px]"> <div @@ -9,6 +9,13 @@ @click="switchTab('process')" > 娴佺▼寰呭姙 + </div> + <div + :class="{ active: currentTab === 'wait' }" + class="tab" + @click="switchTab('wait')" + > + 瀹圭己寰呭姙 </div> <div :class="{ active: currentTab === 'schedule' }" @@ -20,13 +27,14 @@ </div> </div> <el-table + v-loading="tableLoading" :data="tableData" :header-cell-style="{ background: '#F5F7FC', color: '#454B5E', fontSize: '12px' }" - height="280" + min-height="280" max-height="280" > <el-table-column @@ -37,6 +45,7 @@ :min-width="column.minWidth" :prop="column.prop" :show-overflow-tooltip="true" + :formatter="column.formatter" > </el-table-column> @@ -44,48 +53,57 @@ align="center" fixed="right" label="鎿嶄綔" - min-width="150" + min-width="90" > - <template #default="scope"> + <template slot-scope="scope"> <el-button - plain size="small" - type="primary" + type="text" @click="handleDetail(scope.row)" > 鏌ョ湅</el-button > <el-button - plain size="small" - type="primary" + type="text" @click="handleUpdate(scope.row)" > - 澶勭疆</el-button + 澶勭悊</el-button > </template> </el-table-column> </el-table> - <pagination - v-show="total >= 0" + <div style="position: absolute; bottom: 0px;width: 100%;"> + <div style="width: 100%;display: flex;flex-direction: row-reverse;align-items: center"> + <pagination + style="width: 100%" + v-show="total > 0" + :page-sizes="[4]" :limit="queryParams.pageSize" - :page="queryParams.pageNum" + :page="queryParams.currentPage" :total="total" - @pagination="getList" - /> + @pagination="pageChange" + /> + </div> + </div> </div> </template> <script> -import { getProjectProcessTodo, getDetailByProcessInsId } from "@/api/projectProcess/projectProcess.js"; +import { + getProjectProcessTodo, + getDetailByProcessInsId, + getProjectProcessWait +} from "@/api/projectProcess/projectProcess.js"; import { getProjectPlanToDoList } from "@/api/projectPlan"; export default { data() { return { + tableLoading: false, currentTab: "process", total: 0, queryParams: { - pageNum: 1, - pageSize: 5, + currentPage: 1, + pageSize: 4, }, tableData: [], currentTableHeaders: [], @@ -93,11 +111,25 @@ { label: "娴佺▼鐜妭", prop: "taskName", minWidth: 150, align: "left" }, { label: "鐢宠椤圭洰", - prop: "processName", + prop: "projectName", minWidth: 150, align: "left", }, - { label: "瀹℃壒浜�", prop: "handlerName", minWidth: 100, align: "left" }, + { + label: "澶勭悊浜�", + prop: "handlerName", + minWidth: 100, + align: "left", + formatter: (row) => { + if (row.handlerType === 'USER') { + return row.handlerName.join('銆�') + } else if (row.handlerType === 'DEPT') { + return row.handlerUnitName.join('銆�') + } else if (row.handlerType === 'ROLE') { + return row.handlerUnitName.join('銆�') + } + } + }, { label: "瀹屾垚鎯呭喌", prop: "taskStatus", minWidth: 143, align: "left" }, { label: "鍓╀綑鏃堕棿", @@ -106,6 +138,37 @@ align: "left", }, ], + waitTableHeaders: [ + { label: "娴佺▼鐜妭", prop: "taskName", minWidth: 150, align: "left" }, + { + label: "鐢宠椤圭洰", + prop: "projectName", + minWidth: 150, + align: "left", + }, + { + label: "澶勭悊浜�", + prop: "promoterName", + minWidth: 100, + align: "left", + formatter: (row) => { + if (row.handlerType === 'USER') { + return row.promoterName.join('銆�') + } else if (row.handlerType === 'DEPT') { + return row.promoterUnitName.join('銆�') + } else if (row.handlerType === 'ROLE') { + return row.promoterUnitName.join('銆�') + } + } + }, + // { label: "瀹屾垚鎯呭喌", prop: "taskStatus", minWidth: 143, align: "left" }, + // { + // label: "鍓╀綑鏃堕棿", + // prop: "remainingTime", + // minWidth: 143, + // align: "left", + // }, + ], scheduleTableHeaders: [ { label: "寰呭姙浜嬮」", @@ -145,34 +208,51 @@ this.getList(); }, methods: { + pageChange(data) { + this.queryParams.currentPage = data.page + this.getList() + }, async getList() { var resp; - this.total = 0; - this.tableData = []; + this.tableLoading = true if (this.currentTab == "process") { resp = await getProjectProcessTodo(this.queryParams); if (resp.code === 200) { this.total = resp.total; this.tableData = resp.taskList; + this.tableLoading = false } + } else if (this.currentTab == "wait") { + resp = await getProjectProcessWait(this.queryParams); + if (resp.code === 200) { + this.total = resp.total; + this.tableData = resp.data; + this.tableLoading = false + } } else { resp = await getProjectPlanToDoList(this.queryParams); if (resp.code === 200) { this.total = resp.total; this.tableData = resp.data; + this.tableLoading = false } } }, async handleDetail(row) { - if (this.currentTab == "process") { + if (this.currentTab == "process" || this.currentTab == "wait") { const resp = await getDetailByProcessInsId({ processDefId: row.processDefId, processInsId: row.processInsId }); if (resp.code === 200 && resp.data.length > 0) { const projectProcess = resp.data[0] + sessionStorage.removeItem("projectProDetail") this.$router.push({ path: '/projectFlow/detail', query: { - projectId: projectProcess.projectId, - processDefId: row.processDefId + projectId: projectProcess.projectId, + processDefId: row.processDefId, + processInsId: row.processInsId, + deployId: row.deployId, + processName: row.processName, + selectTabId: this.currentTab == "process" ? 2 : 3 } }) } @@ -187,17 +267,22 @@ } }, async handleUpdate(row) { - if (this.currentTab == "process") { + if (this.currentTab == "process" || this.currentTab == "wait") { const resp = await getDetailByProcessInsId({ processDefId: row.processDefId, processInsId: row.processInsId }); if (resp.code === 200 && resp.data.length > 0) { - const projectProcess = resp.data[0] - this.$router.push({ - path: '/projectFlow/detail', - query: { - projectId: projectProcess.projectId, - processDefId: row.processDefId - } - }) + const projectProcess = resp.data[0] + sessionStorage.removeItem("projectProDetail") + this.$router.push({ + path: '/projectFlow/detail', + query: { + projectId: projectProcess.projectId, + processDefId: row.processDefId, + processInsId: row.processInsId, + deployId: row.deployId, + processName: row.processName, + selectTabId: this.currentTab == "process" ? 2 : 3 + } + }) } } else { row.id = row.planId; @@ -212,7 +297,7 @@ switchTab(tab) { this.currentTab = tab; this.currentTableHeaders = - tab == "process" ? this.processTableHeaders : this.scheduleTableHeaders; + tab == "process" ? this.processTableHeaders : tab == "wait" ? this.waitTableHeaders : this.scheduleTableHeaders; this.getList(); }, }, @@ -221,10 +306,13 @@ <style lang="scss" scoped> .tab { - padding: 8px; + padding: 6px; border: 1px solid #dbdeea; cursor: pointer; width: 72px; + display: flex; + justify-content: center; + align-items: center; } .active { -- Gitblit v1.8.0