From be607308e10347b8af900c4bf7a715023b9395e8 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 21 三月 2025 16:04:42 +0800
Subject: [PATCH] 首页消息
---
src/views/projectEngineering/projectLibrary/index.vue | 306 ++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 228 insertions(+), 78 deletions(-)
diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue
index 07fd71e..4e15aeb 100644
--- a/src/views/projectEngineering/projectLibrary/index.vue
+++ b/src/views/projectEngineering/projectLibrary/index.vue
@@ -180,15 +180,17 @@
<VisibilityToolbar
v-model:showSearch="showSearch"
:columns="defaultColumns"
+ :hiddenTotal="hiddenTotal"
@queryTable="handleQuery"
@update:sort="handleUpdateSort"
@update:columns="handleUpdateColumns"
@update:resetSort="handleResetSort"
+ @update:page="handlePage"
></VisibilityToolbar>
</div>
</div>
</el-form>
-
+<!-- <el-button type="primary" @click="save">鍒濆鍖栨坊鍔爈ist.js</el-button>-->
<el-table
:key="tableKey"
ref="elTable"
@@ -202,10 +204,9 @@
<el-table-column type="selection" width="55" align="center"/>
<!-- 鍔ㄦ�佸垪 -->
<el-table-column
- v-for="item in columns"
- :key="item.id"
+ v-for="item in columnsNew"
v-if="item.visible"
- :prop="item.id"
+ :prop="item.columns"
:label="item.label"
:min-width="item.minWidth"
>
@@ -216,58 +217,94 @@
<template v-if="item.slotName === 'projectStatus'">
<dict-tag :options="dict.type.sys_project_status" :value="scope.row.projectStatus"/>
</template>
- <!-- projectColorCode鎻掓Ы -->
- <template v-if="item.slotName === 'projectColorCode'">
+ <!-- coding鎻掓Ы -->
+ <template v-if="item.slotName === 'coding'">
<dict-tag :options="dict.type.sys_project_code" :value="scope.row.coding"/>
</template>
<!-- projectType鎻掓Ы -->
<template v-if="item.slotName === 'projectType'">
<dict-tag :options="dict.type.sys_project_type" :value="scope.row.projectType"/>
</template>
+ <!-- attractInvestment鎻掓Ы -->
+ <template v-if="item.slotName === 'attractInvestment'">
+ <dict-tag :options="dict.type.attract_investment" :value="scope.row.attractInvestment"/>
+ </template>
+ <!-- constructionNature鎻掓Ы -->
+ <template v-if="item.slotName === 'constructionNature'">
+ <dict-tag :options="dict.type.construction_nature" :value="scope.row.constructionNature"/>
+ </template>
<!-- investType鎻掓Ы -->
<template v-if="item.slotName === 'investType'">
<dict-tag :options="dict.type.sys_investment_type" :value="scope.row.investType"/>
</template>
- <!-- investType鎻掓Ы -->
+ <!-- importanceType鎻掓Ы -->
<template v-if="item.slotName === 'importanceType'">
<dict-tag :options="dict.type.sys_key_categories" :value="scope.row.importanceType"/>
</template>
+ <!-- plannedStartDate -->
+ <template v-if="item.slotName === 'plannedStartDate'">
+ {{ scope.row.plannedStartDate ? scope.row.plannedStartDate.split('-')[0] + '骞�' : '' }}
+ </template>
+ <!-- usedStatus鎻掓Ы -->
+ <template v-if="item.slotName === 'usedStatus'">
+ <dict-tag :options="dict.type.sys_used_status" :value="scope.row.usedStatus"/>
+ </template>
<!-- planStartTime -->
- <template v-if="item.slotName === 'planStartTime'">
- {{ scope.row.planStartTime ? scope.row.planStartTime.split('-')[0] + '骞�' : '' }}
+ <template v-else-if="item.slotName === 'planStartTime'">
+ {{ scope.row.planStartTime ? scope.row.planStartTime.split(' ')[0] : '' }}
</template>
</template>
+ <!-- 杞崲璁″垝寮�宸ユ牱寮� 绌烘牸鍒囧壊鏁扮粍 -->
+
<!-- 榛樿鏄剧ず -->
- <span v-else>{{ scope.row[item.id] }}</span>
+ <span v-else>{{ scope.row[item.columns] }}</span>
</template>
</el-table-column>
-
+ <el-table-column v-if="this.$route.query.projectPhase==6" label="瀹℃牳澶囨敞" width="140" align="center" prop="remark"/>
<!-- 鎿嶄綔鍒� -->
<el-table-column label="鎿嶄綔" width="140" align="center">
<template slot-scope="scope">
- <el-button
- size="medium"
- type="text"
- icon="el-icon-view"
- @click="handleDetail(scope.row)"
- >
- </el-button>
- <el-button
- v-if="isReserve"
- size="medium"
- type="text"
- icon="el-icon-edit"
- @click="handleUpdate(scope.row)"
- >
- </el-button>
- <el-button
- v-if="isReserve"
- size="medium"
- type="text"
- icon="el-icon-delete"
- @click="handleDelete(scope.row)"
- >
- </el-button>
+ <el-tooltip class="item" effect="dark" content="瀹℃牳" placement="top">
+ <el-button
+ v-if="scope.row.auditRole && $route.query.projectPhase==='6' && scope.row.usedStatus === 1"
+ size="medium"
+ type="text"
+ icon="el-icon-circle-check"
+ @click="handleDetail(scope.row)"
+ >
+ </el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="璇︽儏" placement="top">
+ <el-button
+ size="medium"
+ type="text"
+ icon="el-icon-view"
+ @click="handleDetail(scope.row)"
+ >
+ </el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+ <el-button
+ v-if="isReserve"
+ v-hasRole="['user']"
+ size="medium"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ >
+ </el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鍒犻櫎" placement="top">
+ <el-button
+ v-if="isReserve"
+ size="medium"
+ type="text"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ >
+ </el-button>
+ </el-tooltip>
+
</template>
</el-table-column>
</el-table>
@@ -277,29 +314,30 @@
:total="total"
:page.sync="queryParams.currentPage"
:limit.sync="queryParams.pageSize"
- @pagination="getList"
+ @pagination="() => getList(null)"
/>
<FileDialog
:fileDialogVisible.sync="fileDialogVisible"
:isImportOrExport="isImportOrExport"
@fileDialogCancel="fileDialogCancel"
- :currentColumns="columns"
+ :currentColumns="columnsNew"
:dataIdList="ids"
/>
</div>
</template>
<script>
-import {listProject, getProject, delProject, addProject, updateProject} from "@/api/projectEngineering/projectInfo";
+import {listProject, getProject, delProject, addProject, updateProject,getHiddenList,addList,getAll} from "@/api/projectEngineering/projectInfo";
import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
import Cookies from "js-cookie";
+import {getChildList} from "@/api/system/dict/data";
export default {
dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases',
'sys_funding_type', 'sys_association_status', 'sys_project_status', 'sys_project_code',
- 'sys_project_tags', 'sys_key_categories', 'sys_project_type'],
+ 'sys_project_tags', 'sys_key_categories', 'sys_project_type','sys_used_status', 'construction_nature', 'attract_investment'],
name: "ProjectInfo",
components: {
FileDialog
@@ -313,8 +351,13 @@
//椤圭洰鐘舵�佺瓫閫夋潯浠�
isProjectCategory: false,
//琛ㄥご
- columns: [],
+ columnsNew: [],
+ //鏄鹃殣缁勪欢鐨勮〃澶撮泦鍚�
defaultColumns: [],
+ //閲嶇疆琛ㄥご
+ resetColumns:[],
+ //鏄鹃殣缁勪欢鐨勬煡璇㈡�绘暟
+ hiddenTotal: 0,
//鎺у埗鏇村绛涢�夋樉闅�
popoverValue: false,
// 閬僵灞�
@@ -341,16 +384,21 @@
queryParams: {
currentPage: 1,
pageSize: 10,
+ center: 0, // 1 浠h〃椤圭洰涓績
projectName: null,
projectCode: null,
projectStartTime: null,
projectEndTime: null,
},
+ //鏄鹃殣鍒楄〃鏌ヨ鍙傛暟
+ pageQueryParams:{
+ currentPage: 1,
+ },
moreQueryParams: {
projectType: '', // 椤圭洰绫诲瀷
importanceType: '', // 閲嶇偣鍒嗙被
projectStatus: '', // 椤圭洰鐘舵��
- projectColorCode: '', // 椤圭洰鐮�
+ coding: '', // 椤圭洰鐮�
investmentType: '', // 璧勯噾绫诲瀷
projectPhase: '', // 椤圭洰闃舵
investType: '', // 鎶曡祫绫诲埆
@@ -373,27 +421,103 @@
},
created() {
this.queryParams.importanceType = this.$route.query.importanceType;
- const projectCategory = this.$route.query.projectCategory;
- if (!projectCategory || projectCategory === '1') {
+ const projectPhase = this.$route.query.projectPhase;
+ if (projectPhase === '6') {
+ this.queryParams.center = 1
+ }
+ if (!projectPhase || projectPhase === '1' || projectPhase === '6') {
this.isReserve = true;
}
- if (projectCategory) {
+ if (projectPhase) {
this.isProjectCategory = true;
}
- const columns = current.map((item, index) => {
- item.index = index + 1;
- item.key = index;
- item.serialNumber = index + 1;
- return item;
- });
- this.columns = columns;
- this.defaultColumns = JSON.parse(JSON.stringify(columns));
- this.getList();
+ this.hiddenColumnsList();
+ this.pageHiddenColumnsList();
+ this.getList(this.$route.query.projectPhase == '5' || this.$route.query.projectPhase == '6' ? null : this.$route.query.projectPhase);
},
beforeDestroy() {
this.removeStore();
},
methods: {
+
+ //鏌ヨ鍚庣鎵�鏈夎〃澶存暟鎹�
+ hiddenColumnsList(){
+ getAll().then(res =>{
+ const projectPhase = this.$route.query.projectPhase;
+ //杞崲
+ res.data.forEach((item,index)=>{
+ item.index = index + 1;
+ item.label = item.name;
+
+ if(item.display === '0'){
+ item.visible = false
+ }else {
+ item.visible = true;
+ }
+ if(item.columns ==='usedStatus' ){
+ if(projectPhase !== '6') {
+ item.visible = false
+ } else {
+ item.visible = true
+ }
+ }
+ });
+ this.columnsNew = res.data;
+ })
+ },
+ pageHiddenColumnsList(){
+ getHiddenList(this.pageQueryParams).then(res =>{
+ this.buildColumns(res.data);
+ this.hiddenTotal = res.total;
+ })
+ },
+ //闅愯棌鍒楄〃缈婚〉
+ handlePage(page){
+ this.pageQueryParams.currentPage = page;
+ getHiddenList(this.pageQueryParams).then(res =>{
+ this.buildColumns(res.data);
+ })
+ },
+ buildColumns(data){
+ const projectPhase = this.$route.query.projectPhase;
+ //杞崲
+ data.forEach((item,index)=>{
+ item.index = index + 1;
+ item.label = item.name;
+ if(item.display === '0'){
+ item.visible = false
+ }else {
+ item.visible = true;
+ }
+ if(item.columns ==='usedStatus' ){
+ if(projectPhase !== '6') {
+ item.visible = false
+ } else {
+ item.visible = true
+ }
+ }
+ });
+ //鍒嗛〉鏁版嵁浼犲叆鏄鹃殣缁勪欢
+ this.defaultColumns = data;
+ },
+ // async getProjectSubType(projectType, projectSubType) {
+ // if (!projectType || !projectSubType) {
+ // return ''
+ // }
+ // let value = '';
+ // // 鏍规嵁椤圭洰绫诲瀷鏌ュ瓙绫诲瀷
+ // const projectTypeItem = this.dict.type.sys_project_type.find(item => item.raw.dictValue === projectType);
+ // if (projectTypeItem) {
+ // const res = await getChildList(projectTypeItem.raw.dictCode);
+ // const target = res.data.filter(item => item.dictValue === projectSubType);
+ // if (target && target.length > 0) {
+ // value = target[0].dictLabel;
+ // console.log(value);
+ // }
+ // }
+ // console.log("鎷垮埌鍊间簡", value);
+ // return value;
+ // },
/** 淇敼鎸夐挳鎿嶄綔 */
handleUpdate(row) {
this.removeStore();
@@ -401,7 +525,8 @@
},
handleDetail(row) {
this.removeStore();
- this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id,disabled: 'true' }});
+ const audit = this.$route.query.projectPhase==='6'? 1:0
+ this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id,disabled: 'true',audit: audit }});
},
// 鏂板椤甸潰
add() {
@@ -417,46 +542,69 @@
localStorage.removeItem("policyInfoForm")
localStorage.removeItem("documentsInfoForm")
},
+
+ // save(){
+ // const list =current.map((item, index) => {
+ // item.name = item.label;
+ // item.sort = index + 1;
+ // item.columns = item.id;
+ // item.id = 0;
+ // if(item.slotName === undefined){
+ // item.slotName = null;
+ // }
+ // if(item.visible){
+ // item.display = "1";
+ // }else {
+ // item.display ="0";
+ // }
+ // return item;
+ // });
+ // console.log(list)
+ // addList(list).then(res=>{
+ // console.log(res.msg)
+ // })
+ //
+ // },
// 閲嶇疆鎺掑簭鐨勬柟娉�
handleResetSort() {
- this.defaultColumns = currentRest.map((item, index) => {
- item.index = index + 1;
- item.key = index;
- item.serialNumber = index + 1
- return item;
- });
- this.columns = currentRest.map((item, index) => {
- item.index = index + 1;
- item.key = index;
- item.serialNumber = index + 1
- return item;
- });
- //寮哄埗table娓叉煋
+ this.hiddenColumnsList();
+ this.pageHiddenColumnsList();
this.tableKey = this.tableKey + 1;
},
// 鏇存柊鍒楃殑鏂规硶
handleUpdateColumns(row) {
- // this.currentColumns = row;
- this.columns = this.columns.map(item => {
- if (item.key === row.key) {
+ //鏇挎崲鍏冪礌
+ this.columnsNew = this.columnsNew.map(item => {
+ if (item.columns === row.columns) {
return row;
}
return item;
});
+
},
+ //鐐瑰嚮鎺掑簭鍔犲噺鏇存柊
handleUpdateSort(row) {
- console.log(this.columns, '鎺掑簭鍓嶇殑鍒�');
- this.columns = this.columns.map(item => {
- if (item.key === row.key) {
+ //鏇挎崲琛ㄥご鍏冪礌
+ this.columnsNew = this.columnsNew.map(item => {
+ if (item.id === row.id) {
return row;
}
return item;
});
- this.defaultColumns = JSON.parse(JSON.stringify(this.columns)).sort((a, b) => a.index - b.index);
- this.columns.sort((a, b) => a.serialNumber - b.serialNumber);
+ //鏇挎崲浼犲叆鏄鹃殣缁勪欢鏁版嵁
+ this.defaultColumns = this.defaultColumns.map(item => {
+ if (item.id === row.id) {
+ return row;
+ }
+ return item;
+ });
+ //鏄鹃殣鎺掑簭
+ this.defaultColumns.sort((a, b) => a.sort - b.sort);
+ //涓婚〉琛ㄥご鏁版嵁鎺掑簭
+ this.columnsNew.sort((a, b) => a.sort - b.sort);
+
//寮哄埗table娓叉煋
this.tableKey = this.tableKey + 1;
- console.log(this.columns, '鎺掑簭鍚庣殑鍒�');
},
// 鍏抽棴鏂囦欢澶勭悊寮规鐨勬柟娉�
fileDialogCancel() {
@@ -472,9 +620,11 @@
this.popoverValue = false;
},
/** 鏌ヨ椤圭洰绠$悊鍩虹淇℃伅鍒楄〃 */
- getList() {
+ getList(projectPhase) {
this.loading = true;
- this.queryParams.projectCategory = this.$route.query.projectCategory;
+ if (projectPhase) {
+ this.queryParams.projectPhase = projectPhase;
+ }
if (this.timeRange) {
this.queryParams.projectStartTime = this.timeRange[0]
this.queryParams.projectEndTime = this.timeRange[1]
@@ -534,7 +684,7 @@
/** 鎼滅储鎸夐挳鎿嶄綔 */
handleQuery() {
this.queryParams.currentPage = 1;
- this.getList();
+ this.getList(null);
},
/** 閲嶇疆鎸夐挳鎿嶄綔 */
resetQuery() {
--
Gitblit v1.8.0