|
@@ -12,7 +12,7 @@
|
|
</div>
|
|
</div>
|
|
<div class="hc-datav-search-select hc-flex w-full">
|
|
<div class="hc-datav-search-select hc-flex w-full">
|
|
<div ref="searchRef" class="relative">
|
|
<div ref="searchRef" class="relative">
|
|
- <HcDatavSelect v-model="searchForm.year" :datas="yearArr" />
|
|
|
|
|
|
+ <HcDatavSelect v-model="searchForm.year" :datas="yearArr" :clearable="false" />
|
|
<HcDatavSelect v-model="pageType" :datas="pageTypeArr" :clearable="false" @change="pageTypeChange" />
|
|
<HcDatavSelect v-model="pageType" :datas="pageTypeArr" :clearable="false" @change="pageTypeChange" />
|
|
<template v-if="pageType === '1'">
|
|
<template v-if="pageType === '1'">
|
|
<HcDatavSelect v-model="searchForm.month" :datas="monthArr" placeholder="选择月份" @change="searchChange" />
|
|
<HcDatavSelect v-model="searchForm.month" :datas="monthArr" placeholder="选择月份" @change="searchChange" />
|
|
@@ -21,9 +21,10 @@
|
|
</template>
|
|
</template>
|
|
<HcDatavSelect v-model="searchForm.projectStage" :datas="stageArr" placeholder="项目阶段" @change="searchChange" />
|
|
<HcDatavSelect v-model="searchForm.projectStage" :datas="stageArr" placeholder="项目阶段" @change="searchChange" />
|
|
<HcDatavSelect v-if="pageType === '1'" v-model="searchForm.projectType" :datas="typeArr" placeholder="项目类型" @change="searchChange" />
|
|
<HcDatavSelect v-if="pageType === '1'" v-model="searchForm.projectType" :datas="typeArr" placeholder="项目类型" @change="searchChange" />
|
|
- <HcDatavSelect v-else v-model="searchForm.quarter" :datas="quarterArr" placeholder="选择季度" />
|
|
|
|
|
|
+ <HcDatavSelect v-else v-model="searchForm.quarter" :datas="quarterArr" placeholder="选择季度" :clearable="false" @change="searchQuarterChange" />
|
|
</div>
|
|
</div>
|
|
- <div class="date flex-1">截止时间: {{ endDate }}</div>
|
|
|
|
|
|
+ <div v-if="pageType === '1'" class="date flex-1">截止时间: {{ endDate }}</div>
|
|
|
|
+ <div v-if="pageType === '2'" class="date flex-1">截止时间: {{ workInfo.lastDate || '暂无填写记录' }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hc-datav-total relative p-[14px]">
|
|
<div class="hc-datav-total relative p-[14px]">
|
|
@@ -51,7 +52,7 @@
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<HcDatavCard>
|
|
<HcDatavCard>
|
|
<div class="hc-diy-datav-card hc-full hc-flex-center">
|
|
<div class="hc-diy-datav-card hc-full hc-flex-center">
|
|
- <span class="num vertical-sub text-[60px] font-bold" style="color: #ECCF6D">8</span>
|
|
|
|
|
|
+ <span class="num vertical-sub text-[60px] font-bold" style="color: #ECCF6D">{{ workInfo.stagesCount || 0 }}</span>
|
|
<span class="text text-[28px] font-bold">个方面</span>
|
|
<span class="text text-[28px] font-bold">个方面</span>
|
|
</div>
|
|
</div>
|
|
</HcDatavCard>
|
|
</HcDatavCard>
|
|
@@ -59,7 +60,7 @@
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<HcDatavCard>
|
|
<HcDatavCard>
|
|
<div class="hc-diy-datav-card hc-full hc-flex-center">
|
|
<div class="hc-diy-datav-card hc-full hc-flex-center">
|
|
- <span class="num vertical-sub text-[60px] font-bold" style="color: #0BD70E">30</span>
|
|
|
|
|
|
+ <span class="num vertical-sub text-[60px] font-bold" style="color: #0BD70E">{{ workInfo.taskCount || 0 }}</span>
|
|
<span class="text text-[28px] font-bold">项任务</span>
|
|
<span class="text text-[28px] font-bold">项任务</span>
|
|
</div>
|
|
</div>
|
|
</HcDatavCard>
|
|
</HcDatavCard>
|
|
@@ -289,7 +290,7 @@
|
|
<div v-else class="hc-datav-row-column work h-full">
|
|
<div v-else class="hc-datav-row-column work h-full">
|
|
<div class="title">工作要点</div>
|
|
<div class="title">工作要点</div>
|
|
<div class="hc-datav-table relative" style="height: 100%;">
|
|
<div class="hc-datav-table relative" style="height: 100%;">
|
|
- <HcDatavTable :column="workColumn" :datas="workData" />
|
|
|
|
|
|
+ <HcDatavTable :column="workColumn" :datas="workInfo.tabList" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -314,6 +315,7 @@ import HcDatavCharts from './modules/charts.vue'
|
|
import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
|
|
import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
|
|
import { getDictionaryData } from '~src/utils/tools'
|
|
import { getDictionaryData } from '~src/utils/tools'
|
|
import projectApi from '~api/datav/projectdata'
|
|
import projectApi from '~api/datav/projectdata'
|
|
|
|
+import dayjs from 'dayjs'
|
|
|
|
|
|
const store = useAppStore()
|
|
const store = useAppStore()
|
|
|
|
|
|
@@ -355,7 +357,12 @@ const tourFinishClose = () => {
|
|
|
|
|
|
//搜索表单
|
|
//搜索表单
|
|
const pageType = ref('1')
|
|
const pageType = ref('1')
|
|
-const searchForm = ref({ year: '2024', month: -1, projectScheduleGrade: '-1', projectStage: null, projectType: null, projectScheduleType:'-1' })
|
|
|
|
|
|
+const searchForm = ref({
|
|
|
|
+ year: new dayjs().year(), month: -1, projectScheduleGrade: '-1', projectStage: null, projectType: null, projectScheduleType:'-1',
|
|
|
|
+ quarter: '1',
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+//下拉框
|
|
const yearArr = [{ id: '2024', name: '2024年' }, { id: '2023', name: '2023年' }, { id: '2022', name: '2022年' }]
|
|
const yearArr = [{ id: '2024', name: '2024年' }, { id: '2023', name: '2023年' }, { id: '2022', name: '2022年' }]
|
|
const pageTypeArr = [{ id: '1', name: '项目数据看板' }, { id: '2', name: '工作要点' }]
|
|
const pageTypeArr = [{ id: '1', name: '项目数据看板' }, { id: '2', name: '工作要点' }]
|
|
const monthArr = ref([])
|
|
const monthArr = ref([])
|
|
@@ -382,7 +389,6 @@ const getProStation = async () => {
|
|
name:ele.label,
|
|
name:ele.label,
|
|
})
|
|
})
|
|
})
|
|
})
|
|
-
|
|
|
|
}
|
|
}
|
|
//获取截止时间
|
|
//获取截止时间
|
|
const endDate = ref('2024年04月08日')
|
|
const endDate = ref('2024年04月08日')
|
|
@@ -395,17 +401,39 @@ const getEndDate = async ()=>{
|
|
endDate.value = ''
|
|
endDate.value = ''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-//项目
|
|
|
|
-//搜索条
|
|
|
|
|
|
+
|
|
//页面类型改变
|
|
//页面类型改变
|
|
-const pageTypeChange = () => {
|
|
|
|
|
|
+const pageTypeChange = (type) => {
|
|
|
|
+ console.log(type)
|
|
|
|
+ //工作要点
|
|
|
|
+ if (Number(type) === 2) {
|
|
|
|
+ queryWorkFocusDataInfo()
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
|
|
+//获取工作要点的数据
|
|
|
|
+const workInfo = ref({})
|
|
|
|
+const queryWorkFocusDataInfo = async () => {
|
|
|
|
+ const { year, projectStage } = searchForm.value
|
|
|
|
+ const { data } = await projectApi.queryWorkFocusDataInfo({
|
|
|
|
+ year: year,
|
|
|
|
+ workFocusStage: projectStage || '',
|
|
|
|
+ })
|
|
|
|
+ const res = getObjValue(data)
|
|
|
|
+ res.tabList = getArrValue(res?.tabList)
|
|
|
|
+ workInfo.value = res
|
|
|
|
+ console.log(data)
|
|
}
|
|
}
|
|
|
|
+
|
|
//搜索条件改变1
|
|
//搜索条件改变1
|
|
const searchChange = ()=>{
|
|
const searchChange = ()=>{
|
|
- getDataProjectStat()
|
|
|
|
- getDataInvestStat()
|
|
|
|
- getScheduleStat()
|
|
|
|
|
|
+ if (pageType.value === '1') {
|
|
|
|
+ getDataProjectStat()
|
|
|
|
+ getDataInvestStat()
|
|
|
|
+ getScheduleStat()
|
|
|
|
+ } else {
|
|
|
|
+ queryWorkFocusDataInfo()
|
|
|
|
+ }
|
|
}
|
|
}
|
|
//获取项目统计
|
|
//获取项目统计
|
|
const projectStat = ref({
|
|
const projectStat = ref({
|
|
@@ -459,7 +487,7 @@ const getDataInvestStat = async ()=>{
|
|
} else {
|
|
} else {
|
|
chartsData.value = {}
|
|
chartsData.value = {}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
investStat.value = {
|
|
investStat.value = {
|
|
oneFinished:0,
|
|
oneFinished:0,
|
|
@@ -565,18 +593,39 @@ const lagData2 = ref([
|
|
])
|
|
])
|
|
|
|
|
|
//工作要点表格
|
|
//工作要点表格
|
|
-const workColumn = [
|
|
|
|
- { key: 'key1', name: '项目阶段' }, { key: 'key2', name: '目标任务' },
|
|
|
|
- { key: 'key3', name: '工作内容' }, { key: 'key4', name: '1月' },
|
|
|
|
- { key: 'key5', name: '2月' }, { key: 'key6', name: '3月' },
|
|
|
|
- { key: 'key7', name: '责任单位' },
|
|
|
|
-]
|
|
|
|
-const workData = ref([
|
|
|
|
- { key1: 'xxxx', key2: 'xxxx', key3: 'xxxx', key4: 'xxxx', key5: 'xxxx', key6: 'xxxx', key7: 'xxxx' },
|
|
|
|
- { key1: 'xxxx', key2: 'xxxx', key3: 'xxxx', key4: 'xxxx', key5: 'xxxx', key6: 'xxxx', key7: 'xxxx' },
|
|
|
|
- { key1: 'xxxx', key2: 'xxxx', key3: 'xxxx', key4: 'xxxx', key5: 'xxxx', key6: 'xxxx', key7: 'xxxx' },
|
|
|
|
|
|
+const workColumn = ref([
|
|
|
|
+ { key: 'workFocusStageName', name: '项目阶段' }, { key: 'targetPlan', name: '目标任务' },
|
|
|
|
+ { key: 'workPlan', name: '工作内容' }, { key: 'moth1', name: '1月' },
|
|
|
|
+ { key: 'moth2', name: '2月' }, { key: 'moth3', name: '3月' },
|
|
|
|
+ { key: 'dutyUnit', name: '责任单位' },
|
|
])
|
|
])
|
|
|
|
|
|
|
|
+//季度选择
|
|
|
|
+const searchQuarterChange = () => {
|
|
|
|
+ const { quarter } = searchForm.value
|
|
|
|
+ const newArr = [{ key: 'workFocusStageName', name: '项目阶段' }, { key: 'targetPlan', name: '目标任务' }, { key: 'workPlan', name: '工作内容' }]
|
|
|
|
+ if (quarter === '1') {
|
|
|
|
+ newArr.push({ key: 'moth1', name: '1月' })
|
|
|
|
+ newArr.push({ key: 'moth2', name: '2月' })
|
|
|
|
+ newArr.push({ key: 'moth3', name: '3月' })
|
|
|
|
+ } else if (quarter === '2') {
|
|
|
|
+ newArr.push({ key: 'moth4', name: '4月' })
|
|
|
|
+ newArr.push({ key: 'moth5', name: '5月' })
|
|
|
|
+ newArr.push({ key: 'moth6', name: '6月' })
|
|
|
|
+ } else if (quarter === '3') {
|
|
|
|
+ newArr.push({ key: 'moth7', name: '7月' })
|
|
|
|
+ newArr.push({ key: 'moth8', name: '8月' })
|
|
|
|
+ newArr.push({ key: 'moth9', name: '9月' })
|
|
|
|
+ } else if (quarter === '4') {
|
|
|
|
+ newArr.push({ key: 'moth10', name: '10月' })
|
|
|
|
+ newArr.push({ key: 'moth11', name: '11月' })
|
|
|
|
+ newArr.push({ key: 'moth12', name: '12月' })
|
|
|
|
+ }
|
|
|
|
+ newArr.push({ key: 'dutyUnit', name: '责任单位' })
|
|
|
|
+ workColumn.value = newArr
|
|
|
|
+ queryWorkFocusDataInfo()
|
|
|
|
+}
|
|
|
|
+
|
|
//跳转到首页
|
|
//跳转到首页
|
|
const toHomePage = () => {
|
|
const toHomePage = () => {
|
|
router.push({ name: store.page })
|
|
router.push({ name: store.page })
|