From 608575c5303042f9079b9e3cd82a3aec35161cda Mon Sep 17 00:00:00 2001 From: haha Date: Sun, 20 Aug 2023 00:25:52 +0800 Subject: [PATCH] update code --- src/api/buildNode/index.js | 131 +++++++++ src/api/index.js | 4 +- src/pages/init.js | 12 +- src/pages/progress/buildNodeDlg.vue | 415 ++++++++++++++++++++++++++++ src/pages/progress/nodeItem.vue | 74 +++++ src/pages/projectDetail.vue | 46 +-- src/pages/projectProgress.vue | 117 ++++++-- src/pages/style/index.less | 9 + src/utils/tools.js | 10 + 9 files changed, 734 insertions(+), 84 deletions(-) create mode 100644 src/api/buildNode/index.js create mode 100644 src/pages/progress/buildNodeDlg.vue create mode 100644 src/pages/progress/nodeItem.vue create mode 100644 src/utils/tools.js diff --git a/src/api/buildNode/index.js b/src/api/buildNode/index.js new file mode 100644 index 0000000..6991656 --- /dev/null +++ b/src/api/buildNode/index.js @@ -0,0 +1,131 @@ +import request from "@/utils/request"; +import { tryToJson } from "../../utils/tools"; +import $dt from "dayjs"; + +// 节点计划预警 +const selectScheduledAlerts = (data) => { + return request({ + url: "bgscreen/projectBuildNode/selectScheduledAlerts", + method: "post", + data: data, + }); +}; + +// 获取当前节点及叶子节点 +const selectCurrent = (data) => { + return request({ + url: "bgscreen/projectBuildNode/selectCurrent", + method: "post", + data: data, + }); +}; + +const listByProject=(projectId)=>{ + return new Promise(resolve=>{ + request({ + url: `bgscreen/projectBuildNode/listByProject?projectId=${projectId}`, + method: "get", + }).then(d=>{ + let tmps = (d.data || []).map(it => { + it.lvl = it.baseBuildNode.nodeLvl; + it.parentLvl = it.lvl.substring(0, it.lvl.length - 2); + it.nodeText = it.baseBuildNode.nodeText; + it.file = tryToJson(it.files, []); + it.expend=true; + return it; + }); + let objs = tmps.filter(d => d.parentLvl.length == 0); + objs.forEach(it => { + it.children = tmps.filter(item => item.parentLvl == it.lvl) + it.children.forEach(item => { + item.children = tmps.filter(item3 => item3.parentLvl == item.lvl); + }); + }) + resolve(objs); + }) + }); +} + +const covertData = (objs) => { + let tmps = objs.map((it) => { + it.lvl = it.baseBuildNode.nodeLvl; + it.parentLvl = it.lvl.substring(0, it.lvl.length - 2); + it.nodeText = it.baseBuildNode.nodeText; + it.file = tryToJson(it.files, []); + return it; + }); + return tmps.map((it) => { + let dt0 = +$dt($dt(new Date()).format("YYYY-MM-DD")); //当时时间 + let dt1 = it.planStartDate ? +$dt(it.planStartDate) : 0; //计划开始 + let dt2 = it.planEndDate ? +$dt(it.planEndDate) : 0; //计划结束 + let dt3 = it.startDate ? +$dt(it.startDate) : 0; //实际开始 + let dt4 = it.endDate ? +$dt(it.endDate) : 0; //实际结束 + if (it.lvl.length == 2) { + if (!it.planStartDate || !it.planEndDate) { + it.finish = ""; + it.finishState = -1; + return it; + } + if (it.endDate) { + if (dt4 > dt2) { + it.finishState = 1; + it.finish = "逾期" + (dt4 - dt2) / 3600 / 1000 / 24 + "天"; + } else { + it.finish = "正常完工"; + it.finishState = 3; + } + } else { + if (it.startDate) { + if (dt2 >= dt0) { + it.finish = "进行中"; + it.finishState = 2; + } else { + it.finishState = 1; + it.finish = "逾期" + (dt2 - dt0) / 3600 / 1000 / 24 + "天"; + } + } else { + it.finish = "未开工"; + it.finishState = 4; + } + } + } else { + if (!it.planStartDate &&!it.planEndDate &&!it.startDate &&!it.endDate) { + it.finish = ""; + it.finishState = -1; + return it; + } + if (it.planStartDate && !it.startDate) { + it.finish = "未开工"; + it.finishState = 4; + return it; + } + if (!it.endDate) { + it.finish = "进行中"; + it.finishState = 2; + } + if(it.endDate && !it.planEndDate){ + it.finish = "正常完工"; + it.finishState = 3; + return it; + } + if(it.endDate && it.planEndDate){ + if(dt4>dt2){ + it.finishState = 1; + it.finish = "逾期" + (dt4 - dt2) / 3600 / 1000 / 24 + "天"; + } else { + it.finish = "正常完工"; + it.finishState = 3; + } + } + } + + return it; + }); +}; + +export default { + selectScheduledAlerts, + selectCurrent, + covertData, + listByProject +}; diff --git a/src/api/index.js b/src/api/index.js index eae8e6c..4bc8b3a 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -10,6 +10,7 @@ import dict from './dict/index' import attendance from './attendance/index' import insurance from './insurance/index' import journalism from './journalism/index' +import buildNode from './buildNode' export default { project, dept, @@ -22,5 +23,6 @@ export default { dict, attendance, insurance, - journalism + journalism, + buildNode } \ No newline at end of file diff --git a/src/pages/init.js b/src/pages/init.js index c9fdae3..9e1c7f9 100644 --- a/src/pages/init.js +++ b/src/pages/init.js @@ -3,19 +3,11 @@ import Api from '../api/index' import dayjs from 'dayjs' import './style/index.less' import dayfilter from '@/utils/dayfilter' +import {tryToJson} from '../utils/tools' dayfilter(Vue); Vue.prototype.$api=Api; Vue.prototype.$bus=new Vue(); Vue.prototype.$apiPath="/jhapi" Vue.prototype.$dt=dayjs; -Vue.prototype.$tryToJson=(str,def=null)=>{ - if(!str){ - return def; - } - try{ - return JSON.parse(str); - }catch(e){ - return def; - } -} +Vue.prototype.$tryToJson=tryToJson window.jhcaches={}; \ No newline at end of file diff --git a/src/pages/progress/buildNodeDlg.vue b/src/pages/progress/buildNodeDlg.vue new file mode 100644 index 0000000..88f67ab --- /dev/null +++ b/src/pages/progress/buildNodeDlg.vue @@ -0,0 +1,415 @@ + + + + + \ No newline at end of file diff --git a/src/pages/progress/nodeItem.vue b/src/pages/progress/nodeItem.vue new file mode 100644 index 0000000..9fd4a08 --- /dev/null +++ b/src/pages/progress/nodeItem.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/src/pages/projectDetail.vue b/src/pages/projectDetail.vue index 5c2a23d..fdc2048 100644 --- a/src/pages/projectDetail.vue +++ b/src/pages/projectDetail.vue @@ -746,50 +746,8 @@ export default { }, getProjectBuildNode() { this.getProjectId(id => { - this.$api.project.getProjectBuildNode(id).then(d => { - let tmps = (d.data || []).map(it => { - it.lvl = it.baseBuildNode.nodeLvl; - it.parentLvl = it.lvl.substring(0, it.lvl.length - 2); - it.nodeText = it.baseBuildNode.nodeText; - it.file = this.$tryToJson(it.files, []); - return it; - }).filter(it => it.lvl.length == 2); - this.projectBuildNode = tmps.map(it => { - let dt0 = + this.$dt(this.$dt(new Date()).format("YYYY-MM-DD"));//当时时间 - let dt1 = it.planStartDate ? +this.$dt(it.planStartDate) : 0;//计划开始 - let dt2 = it.planEndDate ? +this.$dt(it.planEndDate) : 0;//计划结束 - let dt3 = it.startDate ? +this.$dt(it.startDate) : 0;//实际开始 - let dt4 = it.endDate ? +this.$dt(it.endDate) : 0;//实际结束 - if (!it.planStartDate || !it.planEndDate) { - it.finish = ""; - it.finishState = -1; - return it; - } - if (it.endDate) { - if (dt4 > dt2) { - it.finishState = 1; - it.finish = "逾期" + ((dt4 - dt2) / 3600 / 1000 / 24) + "天"; - } else { - it.finish = "正常完工"; - it.finishState = 3; - } - } else { - if (it.startDate) { - if (dt2 >= dt0) { - it.finish = "进行中"; - it.finishState = 2; - } else { - it.finishState = 1; - it.finish = "逾期" + ((dt2 - dt0) / 3600 / 1000 / 24) + "天"; - } - } else { - it.finish = "未开工"; - it.finishState = 4; - } - } - - return it; - }); + this.$api.project.getProjectBuildNode(id).then(d => { + this.projectBuildNode = this.$api.buildNode.covertData(d.data || []).filter(it => it.lvl.length == 2); }); this.getDeptWorksList(); }); diff --git a/src/pages/projectProgress.vue b/src/pages/projectProgress.vue index d89f072..cf44c7d 100644 --- a/src/pages/projectProgress.vue +++ b/src/pages/projectProgress.vue @@ -56,7 +56,7 @@ - +
- -
在建项目本周进展
-
-
- -
+ +
在建项目节点明细
+ +
-
{{ prjInfo.projectName }}
-