Merge remote-tracking branch 'origin/master'
| | |
| | | }) |
| | | } |
| | | |
| | | // 审批 |
| | | export function examine(data) { |
| | | return request({ |
| | | url: '/api/project-plan-progress-report/examine', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | // 保存竣工报告、情况说明附件 |
| | | export function saveProjectProgressFileLists(data) { |
| | | return request({ |
| | |
| | | <template> |
| | | <div class="overview-bottom"> |
| | | <div class="abnormal" @click="showAbnormal"> |
| | | <div style="margin-bottom: 30px">异常项目情况统计</div> |
| | | <div> |
| | | <div class="abnormal-center"> |
| | | 流程异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >{{ |
| | | countExceptionProjectData.processExceptionProject |
| | | }}</span |
| | | > |
| | | </div> |
| | | <div class="abnormal-center"> |
| | | 资金异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >0</span |
| | | > |
| | | </div> |
| | | <div class="abnormal-center"> |
| | | 进度异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >0</span |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="abnormal-img"></div> |
| | | <div class="overview-bottom"> |
| | | <div class="abnormal" @click="showAbnormal"> |
| | | <div style="margin-bottom: 30px">异常项目情况统计</div> |
| | | <div> |
| | | <div class="abnormal-center"> |
| | | 流程异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >{{ |
| | | countExceptionProjectData.processExceptionProject |
| | | }}</span |
| | | > |
| | | </div> |
| | | <div class="overview-div custom-min-width"> |
| | | <div |
| | | v-for="i in calculation" |
| | | :key="i.text" |
| | | :style="setbcStyle(i.text)" |
| | | class="listings" |
| | | @click="showDetail(i.text)" |
| | | > |
| | | <div :style="setTextStyle(i.text)" class="title"> |
| | | {{ i.text }} |
| | | </div> |
| | | <div class="conter"> |
| | | <div :style="setTextColor(i.text)" class="mun"> |
| | | {{ i.mun }} |
| | | </div> |
| | | <div class="statistics"> |
| | | <div>{{ i.statistics }}</div> |
| | | <div :style="setTextColor(i.text)"> |
| | | {{ i.statisticsMun |
| | | }}<span style="font-size: 18px">亿</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title active"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | <div class="abnormal-center"> |
| | | 资金异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >0</span |
| | | > |
| | | </div> |
| | | <div class="abnormal-center"> |
| | | 进度异常项目:<span |
| | | style="font-size: 16px; font-weight: 700" |
| | | >0</span |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="abnormal-img"></div> |
| | | </div> |
| | | <div class="overview-div custom-min-width"> |
| | | <div |
| | | v-for="i in calculation" |
| | | :key="i.text" |
| | | :style="setbcStyle(i.text)" |
| | | class="listings" |
| | | @click="showDetail(i.text)" |
| | | > |
| | | <div :style="setTextStyle(i.text)" class="title"> |
| | | {{ i.text }} |
| | | </div> |
| | | <div class="conter"> |
| | | <div :style="setTextColor(i.text)" class="mun"> |
| | | {{ i.mun }} |
| | | </div> |
| | | <div class="statistics"> |
| | | <div>{{ i.statistics }}</div> |
| | | <div :style="setTextColor(i.text)"> |
| | | {{ |
| | | i.statisticsMun |
| | | }}<span style="font-size: 18px">亿</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="listings"> |
| | | <div class="title active"> |
| | | 储 |
| | | </div> |
| | | <div class="conter"> |
| | | <div class="mun">44</div> |
| | | <div class="statistics"> |
| | | <div>储备项目数量统计</div> |
| | | <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script > |
| | | <script> |
| | | export default { |
| | | name: "Index", |
| | | data() { |
| | | return {} |
| | | name: "Index", |
| | | data() { |
| | | return {} |
| | | }, |
| | | props: { |
| | | calculation: Array, |
| | | countExceptionProjectData: Object, |
| | | }, |
| | | watch: { |
| | | // calculation: { |
| | | // handler(val) { |
| | | // console.log("11111" + val); |
| | | |
| | | // }, |
| | | // }, |
| | | // countExceptionProjectData: { |
| | | // handler(val) { |
| | | // console.log("22222" + val); |
| | | |
| | | // }, |
| | | // }, |
| | | }, |
| | | methods: { |
| | | setTextStyle(text) { |
| | | if (text === '储') return 'background-color:#3369FF'; |
| | | if (text === '建') return 'background-color:#64ADFD'; |
| | | if (text === '省') return 'background-color:#FF5E57'; |
| | | if (text === '市') return 'background-color:#FFA83F'; |
| | | if (text === '新') return 'background-color:#5DD1E5'; |
| | | if (text === '竣') return 'background-color:#576BF5'; |
| | | if (text === '县') return 'background-color:#3369FF'; |
| | | if (text === '普') return 'background-color:#64ADFD'; |
| | | return ''; |
| | | }, |
| | | props: { |
| | | calculation: Array, |
| | | countExceptionProjectData: Object, |
| | | |
| | | setTextColor(text) { |
| | | if (text === '储') return 'color:#3369FF'; |
| | | if (text === '建') return 'color:#64ADFD'; |
| | | if (text === '省') return 'color:#FF5E57'; |
| | | if (text === '市') return 'color:#FFA83F'; |
| | | if (text === '新') return 'color:#5DD1E5'; |
| | | if (text === '竣') return 'color:#576BF5'; |
| | | if (text === '县') return 'color:#3369FF'; |
| | | if (text === '普') return 'color:#64ADFD'; |
| | | return ''; |
| | | }, |
| | | watch: { |
| | | // calculation: { |
| | | // handler(val) { |
| | | // console.log("11111" + val); |
| | | |
| | | // }, |
| | | // }, |
| | | // countExceptionProjectData: { |
| | | // handler(val) { |
| | | // console.log("22222" + val); |
| | | |
| | | // }, |
| | | // }, |
| | | setbcStyle(text) { |
| | | if (text === '储') return 'background-color:#EAF0FF'; |
| | | if (text === '建') return 'background-color:#EFF7FF'; |
| | | if (text === '省') return 'background-color:#FEEEED'; |
| | | if (text === '市') return 'background-color:#FFF6EB'; |
| | | if (text === '新') return 'background-color:#EEFAFC'; |
| | | if (text === '竣') return 'background-color:#EEF0FE'; |
| | | if (text === '县') return 'background-color:#EAF0FF'; |
| | | if (text === '普') return 'background-color:#EFF7FF'; |
| | | return ''; |
| | | }, |
| | | methods: { |
| | | setTextStyle(text) { |
| | | if (text === '储') return 'background-color:#3369FF'; |
| | | if (text === '建') return 'background-color:#64ADFD'; |
| | | if (text === '省') return 'background-color:#FF5E57'; |
| | | if (text === '市') return 'background-color:#FFA83F'; |
| | | if (text === '新') return 'background-color:#5DD1E5'; |
| | | if (text === '竣') return 'background-color:#576BF5'; |
| | | if (text === '县') return 'background-color:#3369FF'; |
| | | if (text === '普') return 'background-color:#64ADFD'; |
| | | return ''; |
| | | }, |
| | | // 跳转到异常项目 |
| | | showAbnormal() { |
| | | console.log('跳转异常项目'); |
| | | this.$router.push({ |
| | | path: 'projectEngineering/project/abnormalProject' |
| | | }); |
| | | }, |
| | | |
| | | setTextColor(text) { |
| | | if (text === '储') return 'color:#3369FF'; |
| | | if (text === '建') return 'color:#64ADFD'; |
| | | if (text === '省') return 'color:#FF5E57'; |
| | | if (text === '市') return 'color:#FFA83F'; |
| | | if (text === '新') return 'color:#5DD1E5'; |
| | | if (text === '竣') return 'color:#576BF5'; |
| | | if (text === '县') return 'color:#3369FF'; |
| | | if (text === '普') return 'color:#64ADFD'; |
| | | return ''; |
| | | }, |
| | | |
| | | setbcStyle(text) { |
| | | if (text === '储') return 'background-color:#EAF0FF'; |
| | | if (text === '建') return 'background-color:#EFF7FF'; |
| | | if (text === '省') return 'background-color:#FEEEED'; |
| | | if (text === '市') return 'background-color:#FFF6EB'; |
| | | if (text === '新') return 'background-color:#EEFAFC'; |
| | | if (text === '竣') return 'background-color:#EEF0FE'; |
| | | if (text === '县') return 'background-color:#EAF0FF'; |
| | | if (text === '普') return 'background-color:#EFF7FF'; |
| | | return ''; |
| | | }, |
| | | // 跳转到异常项目 |
| | | showAbnormal() { |
| | | console.log('跳转异常项目'); |
| | | this.$router.push({ |
| | | path: 'projectEngineering/project/abnormalProject' |
| | | }); |
| | | }, |
| | | |
| | | // 跳转到对应的项目库 |
| | | showDetail(text) { |
| | | console.log('跳转到对应的项目库', text); |
| | | switch (text) { |
| | | case '储': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/reserveProjects', |
| | | query: { |
| | | projectCategory: '1' |
| | | } |
| | | }); |
| | | break; |
| | | case '新': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/previousProjects', |
| | | query: { |
| | | projectCategory: '2' |
| | | } |
| | | }); |
| | | break; |
| | | case '建': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/implementationProject', |
| | | query: { |
| | | projectCategory: '3' |
| | | } |
| | | }); |
| | | break; |
| | | case '竣': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/completedProjects', |
| | | query: { |
| | | projectCategory: '4' |
| | | } |
| | | }); |
| | | break; |
| | | default: |
| | | break; |
| | | // 跳转到对应的项目库 |
| | | showDetail(text) { |
| | | console.log('跳转到对应的项目库', text); |
| | | switch (text) { |
| | | case '储': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/reserveProjects', |
| | | query: { |
| | | projectCategory: '1' |
| | | } |
| | | } |
| | | }); |
| | | break; |
| | | case '新': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/previousProjects', |
| | | query: { |
| | | projectCategory: '2' |
| | | } |
| | | }); |
| | | break; |
| | | case '建': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/implementationProject', |
| | | query: { |
| | | projectCategory: '3' |
| | | } |
| | | }); |
| | | break; |
| | | case '竣': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/completedProjects', |
| | | query: { |
| | | projectCategory: '4' |
| | | } |
| | | }); |
| | | break; |
| | | case '省': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/projectLibrary', |
| | | query: { |
| | | importanceType: 'provincial_key' |
| | | } |
| | | }); |
| | | break; |
| | | case '县': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/projectLibrary', |
| | | query: { |
| | | importanceType: 'shehong_key' |
| | | } |
| | | }); |
| | | break; |
| | | case '市': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/projectLibrary', |
| | | query: { |
| | | importanceType: 'suining_key' |
| | | } |
| | | }); |
| | | break; |
| | | case '普': |
| | | this.$router.push({ |
| | | path: '/projectEngineering/project/projectLibrary', |
| | | query: { |
| | | importanceType: 'normal' |
| | | } |
| | | }); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .overview-bottom { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .abnormal { |
| | | position: relative; |
| | | width: 25%; |
| | | min-width: 342px; |
| | | height: 200px; |
| | | background-image: url(../../assets/images/b.png); |
| | | background-size: 100% auto; |
| | | border-radius: 6px; |
| | | font-size: 16px; |
| | | color: #ffffff; |
| | | padding: 20px 0 0 20px; |
| | | .abnormal { |
| | | position: relative; |
| | | width: 25%; |
| | | min-width: 342px; |
| | | height: 200px; |
| | | background-image: url(../../assets/images/b.png); |
| | | background-size: 100% auto; |
| | | border-radius: 6px; |
| | | font-size: 16px; |
| | | color: #ffffff; |
| | | padding: 20px 0 0 20px; |
| | | |
| | | .abnormal-center { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .abnormal-img { |
| | | position: absolute; |
| | | right: 50px; |
| | | bottom: 20px; |
| | | width: 100px; |
| | | height: 100px; |
| | | background-image: url(../../assets/images/c.png); |
| | | } |
| | | .abnormal-center { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .custom-min-width { |
| | | min-width: 1250px; |
| | | width: 1250px; |
| | | .abnormal-img { |
| | | position: absolute; |
| | | right: 50px; |
| | | bottom: 20px; |
| | | width: 100px; |
| | | height: 100px; |
| | | background-image: url(../../assets/images/c.png); |
| | | } |
| | | } |
| | | |
| | | .listings { |
| | | width: 300px; |
| | | height: 90px; |
| | | border-radius: 6px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .title { |
| | | width: 45px; |
| | | height: 45px; |
| | | font-size: 24px; |
| | | border-radius: 8px; |
| | | line-height: 45px; |
| | | text-align: center; |
| | | margin-left: 15px; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | .active { |
| | | background-color: #3369ff; |
| | | } |
| | | |
| | | .conter { |
| | | margin-left: 10px; |
| | | |
| | | .mun { |
| | | font-size: 30px; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | .statistics { |
| | | width: 200px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | // .statistics-mun { |
| | | // // color: #3369FF; |
| | | // } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .overview-div { |
| | | .custom-min-width { |
| | | min-width: 1250px; |
| | | width: 1250px; |
| | | gap: 10px; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .listings { |
| | | width: 300px; |
| | | height: 90px; |
| | | border-radius: 6px; |
| | | display: flex; |
| | | margin-left: 10px; |
| | | align-items: center; |
| | | |
| | | .title { |
| | | width: 45px; |
| | | height: 45px; |
| | | font-size: 24px; |
| | | border-radius: 8px; |
| | | line-height: 45px; |
| | | text-align: center; |
| | | margin-left: 15px; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | .active { |
| | | background-color: #3369ff; |
| | | } |
| | | |
| | | .conter { |
| | | margin-left: 10px; |
| | | |
| | | .mun { |
| | | font-size: 30px; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | .statistics { |
| | | width: 200px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | // .statistics-mun { |
| | | // // color: #3369FF; |
| | | // } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .overview-div { |
| | | min-width: 1250px; |
| | | width: 1250px; |
| | | gap: 10px; |
| | | flex-wrap: wrap; |
| | | display: flex; |
| | | margin-left: 10px; |
| | | } |
| | | </style> |
| | |
| | | this.$message.success('获取地址成功'); |
| | | this.dialogMap = false; |
| | | } else { |
| | | this.$message.error('获取坐标失败'); |
| | | this.$message.error('请先点击地图选择地址'); |
| | | } |
| | | }, |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | queryParams: {}, |
| | | uploadRef: null, |
| | | targetColumn: [], |
| | | accept: `.zip`, |
| | |
| | | } |
| | | }, |
| | | handleDownloadFile() { |
| | | // fetch(`${process.env.VITE_APP_BASE_API}/project/info/export/template`, { |
| | | // method: 'GET', |
| | | // headers: self.upload.headers |
| | | // }) |
| | | // .then(response => response.blob()) |
| | | // .then(blob => { |
| | | // const url = window.URL.createObjectURL(blob); |
| | | // const a = document.createElement('a'); |
| | | // a.style.display = 'none'; |
| | | // a.href = url; |
| | | // a.download = `项目文件模板_${new Date().getTime()}.zip`; |
| | | // document.body.appendChild(a); |
| | | // a.click(); |
| | | // window.URL.revokeObjectURL(url); |
| | | // }) |
| | | // .catch(error => { |
| | | // console.error('文件下载失败:', error); |
| | | // }); |
| | | |
| | | const url = process.env.VUE_APP_BASE_API + '/project/info/export/template'; |
| | | axios.post(url, [], { // 发送一个空数组而不是空对象 |
| | | responseType: 'blob', // 告诉axios期望服务器返回的是blob类型 |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | Authorization: "Bearer " + getToken() |
| | | } |
| | | }) |
| | | .then(response => { |
| | | // 处理文件下载 |
| | | const blob = new Blob([response.data], { type: 'application/zip' }); // 指定MIME类型为zip |
| | | const url = window.URL.createObjectURL(blob); |
| | | const a = document.createElement('a'); |
| | | a.style.display = 'none'; |
| | | a.href = url; |
| | | a.download = `项目文件模板_${new Date().getTime()}.zip`; |
| | | document.body.appendChild(a); |
| | | a.click(); |
| | | document.body.removeChild(a); |
| | | window.URL.revokeObjectURL(url); |
| | | }) |
| | | .catch(error => { |
| | | console.error('There was an error!', error); |
| | | }); |
| | | this.download('/project/info/export/template', {}, `项目文件模板_${new Date().getTime()}.zip`) |
| | | }, |
| | | submitFileForm() { |
| | | if (this.uploadRef) { |
| | |
| | | this.$emit('fileDialogCancel'); |
| | | }, |
| | | handleDownloadTargetList() { |
| | | console.log('导出目标列表内容', this.currentColumns); |
| | | this.targetColumn = this.currentColumns.filter(item => item.visible); |
| | | this.queryParams.fieldList = this.currentColumns.filter(item => item.visible).map(item =>item.id); |
| | | this.queryParams.requireFile = false; |
| | | this.download('project/info/export', { |
| | | ...this.queryParams |
| | | }, `项目库${new Date().getTime()}.xlsx`) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.uploadRef = this.$refs.uploadRef; |
| | | }, |
| | | created() { |
| | | |
| | | this.isFileDialogVisible = this.fileDialogVisible; |
| | | } |
| | | }; |
| | |
| | | <template v-if="item.slotName === 'investType'"> |
| | | <dict-tag :options="dict.type.sys_investment_type" :value="scope.row.investType"/> |
| | | </template> |
| | | <!-- investType插槽 --> |
| | | <template v-if="item.slotName === 'importanceType'"> |
| | | <dict-tag :options="dict.type.sys_key_categories" :value="scope.row.importanceType"/> |
| | | </template> |
| | | <!-- planStartTime --> |
| | | <template v-if="item.slotName === 'planStartTime'"> |
| | | {{ scope.row.planStartTime ? scope.row.planStartTime.split('-')[0] + '年' : '' }} |
| | |
| | | }; |
| | | }, |
| | | created() { |
| | | this.queryParams.importanceType = this.$route.query.importanceType; |
| | | const projectCategory = this.$route.query.projectCategory; |
| | | if (!projectCategory || projectCategory === '1') { |
| | | this.isReserve = true; |
| | |
| | | }, |
| | | handleDetail(row) { |
| | | this.removeStore(); |
| | | this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id}}); |
| | | this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id,disabled: 'true' }}); |
| | | }, |
| | | // 新增页面 |
| | | add() { |
| | |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | const ids = row.id || this.ids; |
| | | this.$modal.confirm('是否确认删除项目管理基础信息编号为"' + ids + '"的数据项?').then(function () { |
| | | return delInfo(ids); |
| | | this.$modal.confirm('是否确认删除项目:"' + row.projectName + '"的数据项?').then(function () { |
| | | return delProject(ids); |
| | | }).then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | |
| | | {id: 'area', label: '行政区划', visible: false}, |
| | | {id: 'managementCentralizationList', label: '管理归口', visible: false}, |
| | | {id: 'projectApprovalType', label: '项目审批类型', visible: false}, |
| | | {id: 'importanceType', label: '重点分类', visible: false}, |
| | | {id: 'importanceType', label: '重点分类', slotName: 'importanceType', visible: false}, |
| | | {id: 'setTime', label: '立项时间', visible: false}, |
| | | {id: 'planCompleteTime', label: '计划竣工时间', visible: false}, |
| | | {id: 'winUnit', label: '中标单位', visible: false}, |
| | |
| | | {id: 'otherInvestmentTotal', label: '其他投资', visible: false} |
| | | ]; |
| | | export const currentRest = [ |
| | | { id: 'projectName', label: '项目名称', visible: true }, |
| | | { id: 'projectOwnerUnit', label: '业主单位', visible: true }, |
| | | { id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true }, |
| | | { id: 'projectCode', label: '项目代码', visible: true }, |
| | | { id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true }, |
| | | { id: 'projectPhase', label: '项目阶段', visible: true }, |
| | | { id: 'totalInvestment', label: '总投资额', visible: true }, |
| | | { id: 'yearInvestAmount', label: '本年计划投资', visible: true }, |
| | | { id: 'planStartTime', label: '项目年份', slotName: 'planStartTime', visible: true }, |
| | | { id: 'projectStatus', label: '项目状态', slotName: 'projectStatus', visible: true }, |
| | | { id: 'investType', label: '投资类别', slotName: 'investType', visible: true }, |
| | | { id: 'content', label: '建设内容', visible: false }, |
| | | { id: 'fundType', label: '资金类型', visible: false }, |
| | | { id: 'projectContactPerson', label: '项目联系人', visible: false }, |
| | | { id: 'contact', label: '联系方式', visible: false }, |
| | | { id: 'engineeringIdList', label: '关联工程', visible: false }, |
| | | { id: 'competentDepartmentList', label: '主管部门', visible: false }, |
| | | { id: 'area', label: '行政区划', visible: false }, |
| | | { id: 'managementCentralizationList', label: '管理归口', visible: false }, |
| | | { id: 'projectApprovalType', label: '项目审批类型', visible: false }, |
| | | { id: 'importanceType', label: '重点分类', visible: false }, |
| | | { id: 'setTime', label: '立项时间', visible: false }, |
| | | { id: 'planCompleteTime', label: '计划竣工时间', visible: false }, |
| | | { id: 'winUnit', label: '中标单位', visible: false }, |
| | | { id: 'winAmount', label: '中标金额', visible: false }, |
| | | { id: 'winTime', label: '中标时间', visible: false }, |
| | | { id: 'year', label: '年度投资计划', visible: false }, |
| | | { id: 'address', label: '项目地址', visible: false }, |
| | | { id: 'projectBudget', label: '项目预算', visible: false }, |
| | | { id: 'beCrossRegion', label: '建设地点是否跨域', visible: false }, |
| | | { id: 'constructionLocation', label: '项目建设地点', visible: false }, |
| | | { id: 'detailedAddress', label: '建设详细地址', visible: false }, |
| | | { id: 'beCompensationProject', label: '是否是补码项目', visible: false }, |
| | | { id: 'compensationReason', label: '补码原因', visible: false }, |
| | | { id: 'plannedStartDate', label: '计划开工时间', visible: false }, |
| | | { id: 'expectedCompletionDate', label: '拟建成时间', visible: false }, |
| | | { id: 'nationalIndustryClassification', label: '国际行业分类', visible: false }, |
| | | { id: 'industryClassification', label: '所属行业分类', visible: false }, |
| | | { id: 'projectNature', label: '项目建成性质', visible: false }, |
| | | { id: 'projectAttribute', label: '项目属性', visible: false }, |
| | | { id: 'useEarth', label: '是否使用土地', visible: false }, |
| | | { id: 'contentScale', label: '主要建设内容及规模', visible: false }, |
| | | { id: 'code', label: '建管平台代码', visible: false }, |
| | | { id: 'projectUnit', label: '项目单位', visible: false }, |
| | | { id: 'projectUnitType', label: '项目单位类型', visible: false }, |
| | | { id: 'registrationType', label: '登记注册类型', visible: false }, |
| | | { id: 'holdingSituation', label: '控股情况', visible: false }, |
| | | { id: 'certificateType', label: '证照类型', visible: false }, |
| | | { id: 'certificateNumber', label: '证件号码', visible: false }, |
| | | { id: 'registeredAddress', label: '注册地址', visible: false }, |
| | | { id: 'registeredCapital', label: '注册资金', visible: false }, |
| | | { id: 'legal_representative', label: '法人代表', visible: false }, |
| | | { id: 'fixedPhone', label: '固定电话', visible: false }, |
| | | { id: 'legalPersonIdcard', label: '法人身份证号', visible: false }, |
| | | { id: 'projectContactPerson', label: '项目联系人', visible: false }, |
| | | { id: 'phone', label: '移动电话', visible: false }, |
| | | { id: 'contactIdcard', label: '联系人身份证号', visible: false }, |
| | | { id: 'wechat', label: '微信号', visible: false }, |
| | | { id: 'contactAddress', label: '联系人通讯地址', visible: false }, |
| | | { id: 'postCode', label: '邮政编码', visible: false }, |
| | | { id: 'email', label: '电子邮箱', visible: false }, |
| | | { id: 'totalInvestment', label: '项目总投资额', visible: false }, |
| | | { id: 'principal', label: '项目本金', visible: false }, |
| | | { id: 'governmentInvestmentTotal', label: '政府投资', visible: false }, |
| | | { id: 'centralInvestmentTotal', label: '中央投资', visible: false }, |
| | | { id: 'centralBudgetInvestment', label: '中央预算投资', visible: false }, |
| | | { id: 'centralFiscalInvestment', label: '中央财政', visible: false }, |
| | | { id: 'centralSpecialBondInvestment', label: '中央专项债券筹集的专项建设资金', visible: false }, |
| | | { id: 'centralSpecialFundInvestment', label: '中央专项建设基金', visible: false }, |
| | | { id: 'provincialInvestmentTotal', label: '省级投资', visible: false }, |
| | | { id: 'provincialBudgetInvestment', label: '省预算内投资', visible: false }, |
| | | { id: 'provincialFiscalInvestment', label: '省财政性建设投资', visible: false }, |
| | | { id: 'provincialSpecialFundInvestment', label: '省专项建设资金', visible: false }, |
| | | { id: 'cityInvestmentTotal', label: '市(州)投资', visible: false }, |
| | | { id: 'cityBudgetInvestment', label: '市(州)预算内投资', visible: false }, |
| | | { id: 'cityFiscalInvestment', label: '市(州)财政性投资', visible: false }, |
| | | { id: 'citySpecialFundInvestment', label: '市(州)专项资金', visible: false }, |
| | | { id: 'countyInvestmentTotal', label: '县(市、区)投资', visible: false }, |
| | | { id: 'countyBudgetInvestment', label: '区(县)预算内投资', visible: false }, |
| | | { id: 'countyFiscalInvestment', label: '区(县)财政性建设资金', visible: false }, |
| | | { id: 'countySpecialFundInvestment', label: '区(县)专项资金', visible: false }, |
| | | { id: 'domesticLoanTotal', label: '国内贷款', visible: false }, |
| | | { id: 'bankLoan', label: '银行贷款', visible: false }, |
| | | { id: 'foreignInvestmentTotal', label: '外商投资', visible: false }, |
| | | { id: 'enterpriseSelfRaisedTotal', label: '企业自筹', visible: false }, |
| | | { id: 'otherInvestmentTotal', label: '其他投资', visible: false } |
| | | {id: 'projectName', label: '项目名称', visible: true}, |
| | | {id: 'projectOwnerUnit', label: '业主单位', visible: true}, |
| | | {id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true}, |
| | | {id: 'projectCode', label: '项目代码', visible: true}, |
| | | {id: 'projectType', label: '项目类型', slotName: 'projectType', visible: true}, |
| | | {id: 'projectPhase', label: '项目阶段', visible: true}, |
| | | {id: 'totalInvestment', label: '总投资额', visible: true}, |
| | | {id: 'yearInvestAmount', label: '本年计划投资', visible: true}, |
| | | {id: 'planStartTime', label: '项目年份', slotName: 'planStartTime', visible: true}, |
| | | {id: 'projectStatus', label: '项目状态', slotName: 'projectStatus', visible: true}, |
| | | {id: 'investType', label: '投资类别', slotName: 'investType', visible: true}, |
| | | {id: 'content', label: '建设内容', visible: false}, |
| | | {id: 'fundType', label: '资金类型', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'contact', label: '联系方式', visible: false}, |
| | | {id: 'engineeringIdList', label: '关联工程', visible: false}, |
| | | {id: 'competentDepartmentList', label: '主管部门', visible: false}, |
| | | {id: 'area', label: '行政区划', visible: false}, |
| | | {id: 'managementCentralizationList', label: '管理归口', visible: false}, |
| | | {id: 'projectApprovalType', label: '项目审批类型', visible: false}, |
| | | {id: 'importanceType', label: '重点分类', slotName: 'importanceType', visible: false}, |
| | | {id: 'setTime', label: '立项时间', visible: false}, |
| | | {id: 'planCompleteTime', label: '计划竣工时间', visible: false}, |
| | | {id: 'winUnit', label: '中标单位', visible: false}, |
| | | {id: 'winAmount', label: '中标金额', visible: false}, |
| | | {id: 'winTime', label: '中标时间', visible: false}, |
| | | {id: 'year', label: '年度投资计划', visible: false}, |
| | | {id: 'address', label: '项目地址', visible: false}, |
| | | {id: 'projectBudget', label: '项目预算', visible: false}, |
| | | {id: 'beCrossRegion', label: '建设地点是否跨域', visible: false}, |
| | | {id: 'constructionLocation', label: '项目建设地点', visible: false}, |
| | | {id: 'detailedAddress', label: '建设详细地址', visible: false}, |
| | | {id: 'beCompensationProject', label: '是否是补码项目', visible: false}, |
| | | {id: 'compensationReason', label: '补码原因', visible: false}, |
| | | {id: 'plannedStartDate', label: '计划开工时间', visible: false}, |
| | | {id: 'expectedCompletionDate', label: '拟建成时间', visible: false}, |
| | | {id: 'nationalIndustryClassification', label: '国际行业分类', visible: false}, |
| | | {id: 'industryClassification', label: '所属行业分类', visible: false}, |
| | | {id: 'projectNature', label: '项目建成性质', visible: false}, |
| | | {id: 'projectAttribute', label: '项目属性', visible: false}, |
| | | {id: 'useEarth', label: '是否使用土地', visible: false}, |
| | | {id: 'contentScale', label: '主要建设内容及规模', visible: false}, |
| | | {id: 'code', label: '建管平台代码', visible: false}, |
| | | {id: 'projectUnit', label: '项目单位', visible: false}, |
| | | {id: 'projectUnitType', label: '项目单位类型', visible: false}, |
| | | {id: 'registrationType', label: '登记注册类型', visible: false}, |
| | | {id: 'holdingSituation', label: '控股情况', visible: false}, |
| | | {id: 'certificateType', label: '证照类型', visible: false}, |
| | | {id: 'certificateNumber', label: '证件号码', visible: false}, |
| | | {id: 'registeredAddress', label: '注册地址', visible: false}, |
| | | {id: 'registeredCapital', label: '注册资金', visible: false}, |
| | | {id: 'legal_representative', label: '法人代表', visible: false}, |
| | | {id: 'fixedPhone', label: '固定电话', visible: false}, |
| | | {id: 'legalPersonIdcard', label: '法人身份证号', visible: false}, |
| | | {id: 'projectContactPerson', label: '项目联系人', visible: false}, |
| | | {id: 'phone', label: '移动电话', visible: false}, |
| | | {id: 'contactIdcard', label: '联系人身份证号', visible: false}, |
| | | {id: 'wechat', label: '微信号', visible: false}, |
| | | {id: 'contactAddress', label: '联系人通讯地址', visible: false}, |
| | | {id: 'postCode', label: '邮政编码', visible: false}, |
| | | {id: 'email', label: '电子邮箱', visible: false}, |
| | | {id: 'totalInvestment', label: '项目总投资额', visible: false}, |
| | | {id: 'principal', label: '项目本金', visible: false}, |
| | | {id: 'governmentInvestmentTotal', label: '政府投资', visible: false}, |
| | | {id: 'centralInvestmentTotal', label: '中央投资', visible: false}, |
| | | {id: 'centralBudgetInvestment', label: '中央预算投资', visible: false}, |
| | | {id: 'centralFiscalInvestment', label: '中央财政', visible: false}, |
| | | {id: 'centralSpecialBondInvestment', label: '中央专项债券筹集的专项建设资金', visible: false}, |
| | | {id: 'centralSpecialFundInvestment', label: '中央专项建设基金', visible: false}, |
| | | {id: 'provincialInvestmentTotal', label: '省级投资', visible: false}, |
| | | {id: 'provincialBudgetInvestment', label: '省预算内投资', visible: false}, |
| | | {id: 'provincialFiscalInvestment', label: '省财政性建设投资', visible: false}, |
| | | {id: 'provincialSpecialFundInvestment', label: '省专项建设资金', visible: false}, |
| | | {id: 'cityInvestmentTotal', label: '市(州)投资', visible: false}, |
| | | {id: 'cityBudgetInvestment', label: '市(州)预算内投资', visible: false}, |
| | | {id: 'cityFiscalInvestment', label: '市(州)财政性投资', visible: false}, |
| | | {id: 'citySpecialFundInvestment', label: '市(州)专项资金', visible: false}, |
| | | {id: 'countyInvestmentTotal', label: '县(市、区)投资', visible: false}, |
| | | {id: 'countyBudgetInvestment', label: '区(县)预算内投资', visible: false}, |
| | | {id: 'countyFiscalInvestment', label: '区(县)财政性建设资金', visible: false}, |
| | | {id: 'countySpecialFundInvestment', label: '区(县)专项资金', visible: false}, |
| | | {id: 'domesticLoanTotal', label: '国内贷款', visible: false}, |
| | | {id: 'bankLoan', label: '银行贷款', visible: false}, |
| | | {id: 'foreignInvestmentTotal', label: '外商投资', visible: false}, |
| | | {id: 'enterpriseSelfRaisedTotal', label: '企业自筹', visible: false}, |
| | | {id: 'otherInvestmentTotal', label: '其他投资', visible: false} |
| | | ]; |
| | |
| | | this.$refs.childRef.reset(); |
| | | }, |
| | | }, |
| | | mounted() { |
| | | if(this.$route.query.disabled){ |
| | | this.disabled = true |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="startTime" label="计划开始时间" width="160" align="center"> |
| | | <template #default="scope"> |
| | | <el-date-picker v-model="scope.row.startTime" type="date" placeholder="选择日期" size="small" style="width: 130px" /> |
| | | <el-date-picker v-model="scope.row.startTime" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 130px" |
| | | value-format="yyyy-MM-dd HH:mm:ss"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="endTime" label="计划完成时间" width="160" align="center"> |
| | | <template #default="scope"> |
| | | <el-date-picker v-model="scope.row.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" /> |
| | | <el-date-picker v-model="scope.row.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" value-format="yyyy-MM-dd HH:mm:ss"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :label="planInfoData.planTimeFlag === 0 ? '月度' : planInfoData.planTimeFlag === 1 ? '季度' : '年度' " width="100" align="center"> |
| | |
| | | </el-table> |
| | | <div style="display: flex; align-items: center;"> |
| | | <h1 style="margin: 0;"> |
| | | 截止本计划进度完成投资(万元): |
| | | 计划投资金额(万元): |
| | | </h1> |
| | | <el-input |
| | | placeholder="请输入投资金额" |
| | |
| | | import { getPlanInfoData, addPlanInfo, savePlanInfo } from "@/api/projectPlan/index"; |
| | | |
| | | export default { |
| | | name: "PlanInfo", |
| | | name: "planInfo", |
| | | data() { |
| | | return { |
| | | loading: true, |
| | |
| | | } |
| | | addPlanInfo(this.addData).then(response => { |
| | | this.handlePlanRecord() |
| | | this.$message.success('上报成功'); |
| | | }) |
| | | }, |
| | | // 重置当前行数据 |
| | |
| | | <el-card shadow="hover"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24" class="mb-4"> |
| | | <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px;">返回</el-button> |
| | | <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px; margin-left: 10px">返回</el-button> |
| | | <!--项目计划项--> |
| | | <el-table :data="tableData" border stripe style="width: 100%; margin-bottom: 20px"> |
| | | <el-table-column prop="index" label="序号" width="50" align="center"> |
| | |
| | | <el-input type="textarea" v-model="scope.row.manageApprovalReply" placeholder="请输入" rows="3" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="操作" align="center"> |
| | | <template #default="scope" v-if="!projectInfoData.managerFlag"> |
| | | <el-button size="small" @click="handleReply(scope.$index)">回复</el-button> |
| | | <el-button size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button> |
| | | </template> |
| | | <template v-if="projectInfoData.managerFlag" #default="scope"> |
| | | <el-button size="small" @click="handleSave(scope.$index)">保存</el-button> |
| | | <el-table-column fixed="right" label="操作" align="center" width="200"> |
| | | <template #default="scope"> |
| | | <el-button v-show="!projectInfoData.managerFlag" size="small" @click="handleReply(scope.$index)">回复</el-button> |
| | | <el-button v-show="!projectInfoData.managerFlag" size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button> |
| | | <el-button v-show="projectInfoData.managerFlag" size="small" @click="handleSave(scope.$index)">保存</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | import { getPlanInfoData, delayPlanInfo, getDepartmentApproval, getPlanLog, replyExamine, saveExamine } from "@/api/projectPlan/index"; |
| | | |
| | | export default { |
| | | name: "PlanInfoCheck", |
| | | name: "planInfoCheck", |
| | | data() { |
| | | return { |
| | | loading: true, |
| | |
| | | }, |
| | | /** 返回项目计划记录 */ |
| | | handlePlanRecord() { |
| | | this.$router.push({ |
| | | this.$router.replace({ |
| | | path: '/projectManage/planRecord', |
| | | query: { |
| | | data: this.projectInfoData |
| | |
| | | <el-col :span="24" class="mb-4" style="margin-top: 20px"> |
| | | <div style="margin-bottom: 10px"> |
| | | <span style="font-size: 20px; font-weight: bold;">季度计划</span> |
| | | <el-button type="primary" size="small" style="float: right" @click="handleAddSeasonPlan" v-show="!projectInfoData.managerFlag">查看</el-button> |
| | | <el-button type="primary" size="small" style="float: right" @click="handleAddSeasonPlan" v-show="!projectInfoData.managerFlag">新增</el-button> |
| | | </div> |
| | | <el-table :data="seasonRecords" border stripe style="width: 100%; margin-bottom: 20px"> |
| | | <!-- 表头 --> |
| | |
| | | }, |
| | | // 查看项目计划项 |
| | | handleCheckPlanInfo(row) { |
| | | console.log(this.projectInfoData); |
| | | this.$router.push({ |
| | | path: '/projectManage/planInfoCheck', |
| | | query: { |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList, getRecord, delRecord, addRecord, updateRecord } from "@/api/projectPlan/index"; |
| | | import { getList, getManagerFlag } from "@/api/projectPlan/index"; |
| | | |
| | | export default { |
| | | name: "Index", |
| | |
| | | this.open = true; |
| | | this.title = "添加项目计划记录"; |
| | | }, |
| | | /** 修改按钮操作 */ |
| | | handleUpdate(row) { |
| | | this.reset(); |
| | | const id = row.id || this.ids |
| | | getRecord(id).then(response => { |
| | | this.form = response.data; |
| | | this.open = true; |
| | | this.title = "修改项目计划记录"; |
| | | }); |
| | | }, |
| | | /** 提交按钮 */ |
| | | submitForm() { |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | if (this.form.id != null) { |
| | | updateRecord(this.form).then(response => { |
| | | this.$modal.msgSuccess("修改成功"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } else { |
| | | addRecord(this.form).then(response => { |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | const ids = row.id || this.ids; |
| | | this.$modal.confirm('是否确认删除项目计划记录编号为"' + ids + '"的数据项?').then(function() { |
| | | return delRecord(ids); |
| | | }).then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }).catch(() => {}); |
| | | }, |
| | | |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | this.download('plan/record/export', { |
| | |
| | | }, |
| | | /** 查看项目计划记录 */ |
| | | handlePlanRecord(row) { |
| | | this.$router.push({ |
| | | path: '/projectManage/progressRecord', |
| | | query: { |
| | | data: JSON.stringify(row) |
| | | } |
| | | // 获得主管标志 |
| | | getManagerFlag(row.id).then(res => { |
| | | this.managerFlag = res.data; |
| | | row.managerFlag = this.managerFlag; |
| | | this.$router.push({ |
| | | path: '/projectManage/progressRecord', |
| | | query: { |
| | | data: row |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="endTime" label="计划完成时间" align="center" /> |
| | | <el-table-column fixed="right" label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <el-table-column prop="endTime" label="计划完成时间" align="center" /> |
| | | <el-table-column fixed="right" label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <el-table-column prop="endTime" label="计划完成时间" align="center" /> |
| | | <el-table-column fixed="right" label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button> |
| | | <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button> |
| | | <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <el-date-picker v-model="progressReportData.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" readonly/> |
| | | </el-form-item> |
| | | <el-form-item label="实际完成时间:" :label-width="formLabelWidth"> |
| | | <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag"/> |
| | | <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/> |
| | | 至 |
| | | <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag"/> |
| | | <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/> |
| | | </el-form-item> |
| | | <el-form-item label="进度情况:" :label-width="formLabelWidth"> |
| | | <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="请输入" rows="3" :readonly="checkFlag" /> |
| | | <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="请输入" rows="3" :readonly="checkFlag && projectInfoData.managerFlag" /> |
| | | </el-form-item> |
| | | <el-form-item prop="fileList" label="工程进度附件:" :label-width="formLabelWidth"> |
| | | <el-form-item label="工程进度附件:" :label-width="formLabelWidth"> |
| | | <file-upload v-model="progressReportData.fileList" |
| | | :fileType="accept" |
| | | :isShowTip="false"/> |
| | | </el-form-item> |
| | | <el-form-item label="截止本报告完成投资:" :label-width="formLabelWidth"> |
| | | <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag" /> |
| | | <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag && projectInfoData.managerFlag" /> |
| | | </el-form-item> |
| | | <el-form-item label="上级审核:" :label-width="formLabelWidth"> |
| | | <el-input :value="progressReportData.departmentExamine === 0 ? '同意' : progressReportData.departmentExamine === 1 ? '驳回' : '未审核'" readonly /> |
| | | <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.departmentExamine === 0 ? '同意' : progressReportData.departmentExamine === 1 ? '驳回' : '未审核'" readonly /> |
| | | <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentExamine" placeholder="请选择" size="small" clearable> |
| | | <el-option label="同意" :value="0"></el-option> |
| | | <el-option label="驳回" :value="1"></el-option> |
| | | <el-option label="请选择" :value="null"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="上级批复:" :label-width="formLabelWidth"> |
| | | <el-input v-model="progressReportData.departmentApproval" readonly /> |
| | | <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" readonly /> |
| | | <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" /> |
| | | </el-form-item> |
| | | <el-form-item label="上级批复回复:" :label-width="formLabelWidth"> |
| | | <el-input type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" /> |
| | | <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" /> |
| | | <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" /> |
| | | </el-form-item> |
| | | <el-form-item label="主管部门审核:" :label-width="formLabelWidth"> |
| | | <el-input :value="progressReportData.manageExamine === 0 ? '同意' : progressReportData.manageExamine === 1 ? '驳回' : '未审核'" readonly /> |
| | | <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.manageExamine === 0 ? '同意' : progressReportData.manageExamine === 1 ? '驳回' : '未审核'" readonly /> |
| | | <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.manageExamine" placeholder="请选择" size="small" clearable> |
| | | <el-option label="请选择" :value="null"></el-option> |
| | | <el-option label="同意" :value="0"></el-option> |
| | | <el-option label="驳回" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="主管部门审核批复:" :label-width="formLabelWidth"> |
| | | <el-input v-model="progressReportData.manageApproval" readonly /> |
| | | <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.manageApproval" readonly /> |
| | | <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.manageApproval" /> |
| | | </el-form-item> |
| | | <el-form-item label="主管部门批复回复:" :label-width="formLabelWidth"> |
| | | <el-input type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" /> |
| | | <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" /> |
| | | <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag">上 报</el-button> |
| | | <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag && !projectInfoData.managerFlag">上 报</el-button> |
| | | <el-button type="primary" @click="handleExamine" v-if="projectInfoData.managerFlag">审 批</el-button> |
| | | <el-button @click="handleCancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm } from "@/api/projectManage/progress/index"; |
| | | import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine } from "@/api/projectManage/progress/index"; |
| | | import progressRecord from "./progressRecord.vue"; |
| | | |
| | | export default { |
| | | name: "ProgressRecord", |
| | | name: "progressRecord", |
| | | computed: { |
| | | progressRecord() { |
| | | return progressRecord |
| | |
| | | }, |
| | | methods: { |
| | | search() { |
| | | this.getProjectInfoData() |
| | | this.getProjectProgressForm(this.projectInfoData.id); |
| | | this.getProgressInfoList(this.projectInfoData.id); |
| | | }, |
| | | // 获取传递过来的项目计划详情 |
| | | getProjectInfoData() { |
| | | // 从查询参数中获取数据 |
| | | if (this.$route.query.data) { |
| | | this.projectInfoData = JSON.parse(this.$route.query.data); |
| | | this.getProgressInfoList(this.projectInfoData.id); |
| | | } |
| | | this.projectInfoData = this.$route.query.data; |
| | | this.search(); |
| | | }, |
| | | getProjectProgressForm(id) { |
| | | getProjectProgressForm(id).then(res => { |
| | |
| | | this.search(); |
| | | }) |
| | | }, |
| | | // 审批 |
| | | handleExamine() { |
| | | examine(this.progressReportData).then(res => { |
| | | this.dialogFormVisible = false; |
| | | this.$message.success('审批成功'); |
| | | this.search(); |
| | | }) |
| | | }, |
| | | // 查看进度 |
| | | handleCheckProgress(row) { |
| | | this.dialogFormVisible = true; |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | this.search(); |
| | | this.getProjectInfoData() |
| | | }, |
| | | }; |
| | | </script> |