|
|
@@ -227,6 +227,7 @@
|
|
|
<div class="title"><span class="icon"></span>完成率排行榜</div>
|
|
|
<el-table
|
|
|
:data="finishingList"
|
|
|
+ ref="finishTable"
|
|
|
style="width: 100%"
|
|
|
:header-cell-style="{
|
|
|
background: 'rgba(240, 243, 247, 1)',
|
|
|
@@ -241,7 +242,12 @@
|
|
|
width="80"
|
|
|
/>
|
|
|
<el-table-column align="center" prop="name" label="部门名称" />
|
|
|
- <el-table-column align="center" prop="num" label="完成率/%" />
|
|
|
+ <el-table-column align="center" label="完成率/%">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.num">{{ scope.row.num * 100 }}%</span>
|
|
|
+ <span v-else>0%</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -482,6 +488,7 @@
|
|
|
:row-class-name="tableRowClassName"
|
|
|
:data="warnCollectList"
|
|
|
style="width: 100%"
|
|
|
+ ref="detailref"
|
|
|
:header-cell-style="{
|
|
|
background: 'rgba(240, 243, 247, 1)',
|
|
|
height: '40px',
|
|
|
@@ -887,11 +894,33 @@
|
|
|
/>
|
|
|
<el-table-column
|
|
|
align="center"
|
|
|
+ width="120"
|
|
|
+ prop=""
|
|
|
+ tooltip-effect
|
|
|
+ label="更新进度附件"
|
|
|
+ >
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.row.fileUrl2">
|
|
|
+ <div v-for="i in scope.row.fileUrl2.split(',')">
|
|
|
+ <div
|
|
|
+ style="color: rgba(33, 107, 255, 1); cursor: pointer"
|
|
|
+ @click="pdfChange(i)"
|
|
|
+ >
|
|
|
+ {{ i }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
prop="scoreStandard"
|
|
|
label="评价标准"
|
|
|
width="170"
|
|
|
/>
|
|
|
- <el-table-column align="center" prop="weight" label="权重" />
|
|
|
+ <el-table-column align="center" label="权重">
|
|
|
+ <template #default="scope"> {{ scope.row.weight }}% </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column
|
|
|
align="center"
|
|
|
prop="headerName"
|
|
|
@@ -940,7 +969,7 @@
|
|
|
prop="createTime"
|
|
|
label="发生时间"
|
|
|
/>
|
|
|
- <el-table-column align="center" prop="createBy" label="操作人" />
|
|
|
+ <el-table-column align="center" prop="createName" label="操作人" />
|
|
|
</el-table>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -1038,7 +1067,7 @@ const searchInput = reactive({
|
|
|
timeType: "最近7日",
|
|
|
updateBy: "", // 时间筛选
|
|
|
});
|
|
|
-const organize=ref() // 主办单位绑定的值
|
|
|
+const organize = ref(); // 主办单位绑定的值
|
|
|
const projectOriginData = ref([
|
|
|
{ name: "涉内", id: "涉内" },
|
|
|
{ name: "涉外", id: "涉外" },
|
|
|
@@ -1102,9 +1131,10 @@ const warnCollect = reactive({
|
|
|
});
|
|
|
const warnCollectList = ref();
|
|
|
// (明细)
|
|
|
-const currentPage = ref(1); // 当前页
|
|
|
-const pageSize = ref(10);
|
|
|
-const total = ref(40); // 当前总数
|
|
|
+const detailref = ref();
|
|
|
+const currentPageDetail = ref(1); // 当前页
|
|
|
+const pageSizeDetail = ref(10);
|
|
|
+const totalDetail = ref(10); // 当前总数
|
|
|
const selectData = reactive({
|
|
|
list: [],
|
|
|
}); // 多选框选择的数据
|
|
|
@@ -1237,7 +1267,7 @@ const users = async () => {
|
|
|
|
|
|
// 项目总览 (======================================================)
|
|
|
const projectWatch = async () => {
|
|
|
- loading.value = true;
|
|
|
+ // loading.value = true;
|
|
|
let data = {
|
|
|
organize: projectWatchSel.department,
|
|
|
};
|
|
|
@@ -1287,9 +1317,9 @@ const projectWatch = async () => {
|
|
|
state6.value = i.num;
|
|
|
}
|
|
|
});
|
|
|
- loading.value = false;
|
|
|
+ // loading.value = false;
|
|
|
} else {
|
|
|
- loading.value = false;
|
|
|
+ // loading.value = false;
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
showClose: true,
|
|
|
@@ -1346,7 +1376,7 @@ const rankingList = async () => {
|
|
|
});
|
|
|
console.log(ress, "部门完成率排行");
|
|
|
if (ress.data.code == 200) {
|
|
|
- finishingList.value = res.data.data;
|
|
|
+ finishingList.value = ress.data.data;
|
|
|
} else {
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
@@ -1361,10 +1391,26 @@ const rankingList = async () => {
|
|
|
// 预警消息推送汇总 (汇总)
|
|
|
const warningClick = (val) => {
|
|
|
warningFlag.value = val;
|
|
|
+ warnCollect.organize = ""; // 主办部门
|
|
|
+ warnCollect.projectName = ""; // 项目名称
|
|
|
+ warnCollect.projectFrom = ""; // 项目来源
|
|
|
+ warnCollect.projectLevel = ""; // 项目等级
|
|
|
+ warnCollect.state = ""; // 1、正常在办,2、预警在办,3、超时在办,4、正常办结,5、超时办结
|
|
|
+ warnCollect.coOrganize = ""; // 协办单位
|
|
|
+ warnCollect.sposonerName = ""; // 主办人
|
|
|
+ warnCollect.coSposonerName = ""; // 协办人
|
|
|
+ warnCollect.updateBy = "最近7日"; // 协办人
|
|
|
+ warnCollect.time = ""; // 协办人
|
|
|
warningList();
|
|
|
};
|
|
|
-const warningList = async () => {
|
|
|
- loading.value = true;
|
|
|
+const warningList = lodash.debounce(async () => {
|
|
|
+ currentPageDetail.value = 1;
|
|
|
+ warnData();
|
|
|
+}, 300);
|
|
|
+const warnData = async () => {
|
|
|
+ console.log(currentPageDetail.value,'当前页数');
|
|
|
+
|
|
|
+ // loading.value = true;
|
|
|
if (warningFlag.value == 1) {
|
|
|
let data = {
|
|
|
organize: warnCollect.organize, // 主办部门
|
|
|
@@ -1392,9 +1438,9 @@ const warningList = async () => {
|
|
|
console.log(res, "预警消息统计");
|
|
|
if (res.data.code == 200) {
|
|
|
warnCollectList.value = res.data.data;
|
|
|
- loading.value = false;
|
|
|
+ // loading.value = false;
|
|
|
} else {
|
|
|
- loading.value = false;
|
|
|
+ // loading.value = false;
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
showClose: true,
|
|
|
@@ -1403,6 +1449,10 @@ const warningList = async () => {
|
|
|
});
|
|
|
}
|
|
|
} else if (warningFlag.value == 2) {
|
|
|
+ let params = {
|
|
|
+ page: currentPageDetail.value,
|
|
|
+ rows: pageSizeDetail.value,
|
|
|
+ };
|
|
|
let data = {
|
|
|
organize: warnCollect.organize, // 主办部门
|
|
|
projectName: warnCollect.projectName, // 项目名称
|
|
|
@@ -1431,14 +1481,23 @@ const warningList = async () => {
|
|
|
tokenP: sessionStorage.getItem("tokenP"),
|
|
|
user_head: sessionStorage.getItem("userhead"),
|
|
|
},
|
|
|
+ params,
|
|
|
data,
|
|
|
});
|
|
|
console.log(res, "预警消息明细");
|
|
|
if (res.data.code == 200) {
|
|
|
- loading.value = false;
|
|
|
- warnCollectList.value = res.data.data;
|
|
|
+ // loading.value = false;
|
|
|
+ totalDetail.value = res.data.data.totalPage;
|
|
|
+ // warnCollectList.value = res.data.data.rows;
|
|
|
+ if (currentPageDetail.value > 1) {
|
|
|
+ warnCollectList.value = warnCollectList.value.concat(
|
|
|
+ res.data.data.rows
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ warnCollectList.value = res.data.data.rows;
|
|
|
+ }
|
|
|
} else {
|
|
|
- loading.value = false;
|
|
|
+ // loading.value = false;
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
showClose: true,
|
|
|
@@ -1449,6 +1508,40 @@ const warningList = async () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const detailTableScroll = (ele) => {
|
|
|
+ // ele : 绑定的表格元素
|
|
|
+ // console.log(ele.layout.table, "priceTable.value.bodyWrapper");
|
|
|
+ let table = ele.layout.table.refs.bodyWrapper;
|
|
|
+ table.addEventListener(
|
|
|
+ "scroll",
|
|
|
+ (e) => {
|
|
|
+ if (detailref.value) {
|
|
|
+ e.target.scrollTop = 0;
|
|
|
+ detailref.value = false;
|
|
|
+ console.log("置顶到顶部");
|
|
|
+ }
|
|
|
+ let scrollTop = e.target.scrollTop;
|
|
|
+ let scrollHeight = e.target.scrollHeight;
|
|
|
+ let clientHeight = e.target.clientHeight;
|
|
|
+ // console.log(scrollTop, "scrollTop");
|
|
|
+ // console.log(scrollHeight, "scrollHeight");
|
|
|
+ // console.log(clientHeight);
|
|
|
+ if (scrollTop + clientHeight == scrollHeight) {
|
|
|
+ console.log("滚动到底部了",currentPageDetail.value,totalDetail.value);
|
|
|
+
|
|
|
+ // 判断数据是否加载完
|
|
|
+ if (currentPageDetail.value < totalDetail.value) {
|
|
|
+ currentPageDetail.value++;
|
|
|
+ console.log(currentPageDetail.value, "加载完毕");
|
|
|
+ // 滚动到底部页面加一
|
|
|
+ warnData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ true
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
// 搜索功能
|
|
|
const searchBtn = lodash.debounce(async () => {
|
|
|
let project = document.getElementById("project");
|
|
|
@@ -1462,15 +1555,15 @@ const searchBtn = lodash.debounce(async () => {
|
|
|
// 问题清单 预警清单 (=================================================)
|
|
|
const problemClick = (val) => {
|
|
|
projectDesk.value = val;
|
|
|
- searchInput.projectName= null // 项目名称
|
|
|
- searchInput.projectFrom= null // 项目来源
|
|
|
- searchInput.projectLevel= null // 项目等级
|
|
|
- searchInput.state= null //
|
|
|
- organize.value=null
|
|
|
- searchInput.organize= null // 主办单位
|
|
|
- searchInput.sposonerName= null // 主办人
|
|
|
- searchInput.coOrganize= null // 协办单位
|
|
|
- searchInput.coSposonerName= null // 协办人
|
|
|
+ searchInput.projectName = null; // 项目名称
|
|
|
+ searchInput.projectFrom = null; // 项目来源
|
|
|
+ searchInput.projectLevel = null; // 项目等级
|
|
|
+ searchInput.state = null; //
|
|
|
+ organize.value = null;
|
|
|
+ searchInput.organize = null; // 主办单位
|
|
|
+ searchInput.sposonerName = null; // 主办人
|
|
|
+ searchInput.coOrganize = null; // 协办单位
|
|
|
+ searchInput.coSposonerName = null; // 协办人
|
|
|
searchBtn();
|
|
|
};
|
|
|
// 问题清单
|
|
|
@@ -1481,7 +1574,7 @@ const getList = async () => {
|
|
|
rows: pageSizeWarn.value, // 一页数据条数
|
|
|
};
|
|
|
let data = {
|
|
|
- // timeType: "",
|
|
|
+ // timeType: "",
|
|
|
project: {
|
|
|
projectName: searchInput.projectName, // 项目名称
|
|
|
projectFrom: searchInput.projectFrom, // 项目来源
|
|
|
@@ -1538,9 +1631,11 @@ const getList = async () => {
|
|
|
totalPageWarn.value = res.data.data.totalPage;
|
|
|
loading.value = false;
|
|
|
} else {
|
|
|
- // window.location.href =
|
|
|
- // "https://chtech.ncjti.edu.cn/kpi/template/api/sysUser/authorize";
|
|
|
loading.value = false;
|
|
|
+ if (res.data.message.indexOf("Handler dispatch failed") != -1) {
|
|
|
+ window.location.href =
|
|
|
+ "https://chtech.ncjti.edu.cn/kpi/template/api/sysUser/authorize";
|
|
|
+ }
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
showClose: true,
|
|
|
@@ -1856,7 +1951,7 @@ const tableRowClassName = ({ row, rowIndex }) => {
|
|
|
return "";
|
|
|
};
|
|
|
|
|
|
-onBeforeMount(() => {
|
|
|
+onBeforeMount(async () => {
|
|
|
api.value = store.state.user.api;
|
|
|
// console.log(router.currentRoute.value.query.token);
|
|
|
departmentList(); // 部门数据
|
|
|
@@ -1865,11 +1960,38 @@ onBeforeMount(() => {
|
|
|
warningList(); // 预警消息统计
|
|
|
users(); // 获取协办单位和人数据
|
|
|
// getList(); // 问题清单 预警清单
|
|
|
+ let params = {
|
|
|
+ page: 1, // 当前页
|
|
|
+ rows: 100, // 一页数据条数
|
|
|
+ };
|
|
|
+ let data = new FormData();
|
|
|
+ data.append("name", "");
|
|
|
+ let res = await axios({
|
|
|
+ method: "post",
|
|
|
+ url: api.value + "/api/sysConfig/queryPage",
|
|
|
+ headers: {
|
|
|
+ tokenP: sessionStorage.getItem("tokenP"),
|
|
|
+ user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ params: params,
|
|
|
+ data,
|
|
|
+ });
|
|
|
+ if (res.data.code == 200) {
|
|
|
+ cardInfo.progress = res.data.data.rows[2].configValue;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.data.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
});
|
|
|
onMounted(() => {
|
|
|
const timer = setTimeout(() => {
|
|
|
getList();
|
|
|
- }, 200);
|
|
|
+ }, 300);
|
|
|
+ detailTableScroll(detailref.value);
|
|
|
});
|
|
|
onUnmounted(() => {
|
|
|
// document.removeEventListener("keyup", Enters);
|
|
|
@@ -2279,6 +2401,7 @@ onUnmounted(() => {
|
|
|
margin-bottom: 20px;
|
|
|
.el-table--fit {
|
|
|
height: 280px;
|
|
|
+ // height: 100px;
|
|
|
:deep(.el-table__header-wrapper) {
|
|
|
background-color: #000;
|
|
|
font-size: 14px;
|