From ae52f9a7cca3ebe8803f720e5891a696714347db Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 04 十一月 2025 13:04:16 +0800
Subject: [PATCH] 基础数据产品-整改清单中,新增按照任意时段和区县进行统计的功能
---
src/utils/echart-util.js | 3
src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue | 7 +
src/views/fysp/data-product/components/ProdQueryOptWithMode.vue | 153 ++++++++++++++++++++++++++++++++++++++
src/components/search-option/FYOptionTime.vue | 15 +++
src/views/fysp/check/components/CompProblemAddOrUpd.vue | 3
5 files changed, 179 insertions(+), 2 deletions(-)
diff --git a/src/components/search-option/FYOptionTime.vue b/src/components/search-option/FYOptionTime.vue
index 9008260..e1fa691 100644
--- a/src/components/search-option/FYOptionTime.vue
+++ b/src/components/search-option/FYOptionTime.vue
@@ -58,7 +58,20 @@
},
mounted() {
if (this.initValue) {
- this.date = new Date();
+ switch (this.type) {
+ case RANGE:
+ case RANGE2:
+ this.date = [dayjs().startOf('month').toDate(), dayjs().toDate()];
+ break;
+ case MONTH:
+ this.date = dayjs().startOf('month').toDate();
+ break;
+ case DATE:
+ this.date = dayjs().toDate();
+ break;
+ default:
+ break;
+ }
this.handleChange(this.date);
}
}
diff --git a/src/utils/echart-util.js b/src/utils/echart-util.js
index 85d2841..72ed071 100644
--- a/src/utils/echart-util.js
+++ b/src/utils/echart-util.js
@@ -64,7 +64,8 @@
],
label: {
show: true,
- formatter: '{b}: {c} ({d}%)' // 鎵囧尯鏍囩鏄剧ず锛氬悕绉�: 鏁伴噺 (鐧惧垎姣�)
+ // formatter: '{b}: {c} ({d}%)' // 鎵囧尯鏍囩鏄剧ず锛氬悕绉�: 鏁伴噺 (鐧惧垎姣�)
+ formatter: '{b}: {d}%' // 鎵囧尯鏍囩鏄剧ず锛氬悕绉�: 鏁伴噺 (鐧惧垎姣�)
}
}
]
diff --git a/src/views/fysp/check/components/CompProblemAddOrUpd.vue b/src/views/fysp/check/components/CompProblemAddOrUpd.vue
index dbd66dc..bc0ee30 100644
--- a/src/views/fysp/check/components/CompProblemAddOrUpd.vue
+++ b/src/views/fysp/check/components/CompProblemAddOrUpd.vue
@@ -617,6 +617,9 @@
fileUtil.getImageFiles(picUrls, (files) => {
data.append('deleteImg', deleteImgCopy);
deepCopyPro.advise = deepCopyPro.advice;
+ deepCopyPro.ptGuid = this.findProTypeByGuid(
+ this.currProTypeGuid
+ ).guid;
delete deepCopyPro['advice'];
delete deepCopyPro['mediafileList'];
delete deepCopyPro['description'];
diff --git a/src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue b/src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue
index 0e8db25..68d8132 100644
--- a/src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue
+++ b/src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue
@@ -6,6 +6,12 @@
@onStep3="onStep3"
:loading="loading"
>
+ <template #step1="{ onSearch }">
+ <ProdQueryOptWithMode
+ :loading="loading"
+ @submit="onSearch"
+ ></ProdQueryOptWithMode>
+ </template>
<template #step2="{ contentHeight }">
<el-table
id="prod-inspection-table"
@@ -77,6 +83,7 @@
import dataprodbaseApi from '@/api/fysp/dataprodbaseApi.js';
import { conversionFromTable } from '@/utils/excel';
import { useProdStepChange } from '@/views/fysp/data-product/prod-step-change.js';
+import ProdQueryOptWithMode from '@/views/fysp/data-product/components/ProdQueryOptWithMode.vue';
const { active, changeActive } = useProdStepChange();
const loading = ref(false);
diff --git a/src/views/fysp/data-product/components/ProdQueryOptWithMode.vue b/src/views/fysp/data-product/components/ProdQueryOptWithMode.vue
new file mode 100644
index 0000000..2267917
--- /dev/null
+++ b/src/views/fysp/data-product/components/ProdQueryOptWithMode.vue
@@ -0,0 +1,153 @@
+<template>
+ <el-card shadow="never">
+ <template #header>
+ <div><el-text tag="b" size="large">浜у搧鐢熸垚閫夐」</el-text></div>
+ </template>
+ <el-switch
+ v-model="mode"
+ size="large"
+ active-text="鎸夋墍閫夋椂娈电粺璁�"
+ inactive-text="鎸夋�讳换鍔$粺璁�"
+ />
+ <!-- <SearchBar
+ v-show="active && !mode"
+ ref="refSearchBar"
+ :btn-show="false"
+ :init="false"
+ @on-submit="search"
+ >
+ </SearchBar> -->
+ <el-form :inline="true">
+ <FYOptionScene
+ :allOption="false"
+ :type="2"
+ v-model:value="scenetype"
+ ></FYOptionScene>
+ <FYOptionTopTask v-show="!mode" v-model:value="topTask"></FYOptionTopTask>
+ <!-- 鍖哄幙 -->
+ <FYOptionLocation
+ v-show="mode"
+ :allOption="false"
+ :level="3"
+ :checkStrictly="false"
+ v-model:value="locations"
+ ></FYOptionLocation>
+ <FYOptionTime
+ v-show="mode"
+ :initValue="true"
+ type="daterange"
+ v-model:value="timeRange"
+ style="width: 300px"
+ ></FYOptionTime>
+ </el-form>
+ <template #footer>
+ <el-row v-show="active" justify="end">
+ <el-button
+ type="primary"
+ size="default"
+ :loading="loading"
+ @click="search"
+ >鐢熸垚</el-button
+ >
+ </el-row>
+ </template>
+ </el-card>
+</template>
+<script setup>
+import { ref, computed, watch } from 'vue';
+import dayjs from 'dayjs';
+
+const props = defineProps({
+ loading: {
+ type: Boolean,
+ default: false
+ },
+ active: {
+ type: Boolean,
+ default: true
+ }
+});
+const emit = defineEmits(['submit']);
+
+const mode = ref(true);
+const scenetype = ref({});
+const topTask = ref({});
+
+const locations = ref({});
+const timeRange = ref([]);
+
+watch(
+ () => topTask.value,
+ (newVal, oldVal) => {
+ locations.value.pCode = topTask.value.provincecode;
+ locations.value.pName = topTask.value.provincename;
+ locations.value.cCode = topTask.value.citycode;
+ locations.value.cName = topTask.value.cityname;
+ locations.value.dCode = topTask.value.districtcode;
+ locations.value.dName = topTask.value.districtname;
+ timeRange.value = [new Date(topTask.value.starttime), new Date(topTask.value.endtime)];
+ },
+ { deep: true }
+);
+
+const search = (options) => {
+ const [st, et] = timeRange.value;
+ const startTime = dayjs(st).startOf('day').format('YYYY-MM-DD HH:mm:ss');
+ const endTime = dayjs(et).endOf('day').format('YYYY-MM-DD HH:mm:ss');
+
+ let opt = {
+ sceneTypeId: scenetype.value.sceneTypeId,
+ sceneTypeName: scenetype.value.sceneTypeName,
+ needCache: true
+ };
+ // 鎸夋墍閫夋椂娈电粺璁�
+ if (mode.value) {
+ opt = {
+ provinceCode: locations.value.pCode,
+ provinceName: locations.value.pName,
+ cityCode: locations.value.cCode,
+ cityName: locations.value.cName,
+ districtCode: locations.value.dCode,
+ districtName: locations.value.dName,
+ townCode: locations.value.tCode,
+ townName: locations.value.tName,
+ startTime,
+ endTime,
+ ...opt
+ };
+ }
+ // 鎸夋�讳换鍔$粺璁�
+ else {
+ opt = {
+ provinceCode: topTask.value.provincecode,
+ provinceName: topTask.value.provincename,
+ cityCode: topTask.value.citycode,
+ cityName: topTask.value.cityname,
+ districtCode: topTask.value.districtcode,
+ districtName: topTask.value.districtname,
+ townCode: topTask.value.towncode,
+ townName: topTask.value.townname,
+ ...opt
+ };
+ }
+
+ // const opt = {
+ // topTaskId: options.topTask.tguid,
+ // topTaskName: options.topTask.name,
+ // provinceCode: options.topTask.provincecode,
+ // provinceName: options.topTask.provincename,
+ // cityCode: options.topTask.citycode,
+ // cityName: options.topTask.cityname,
+ // districtCode: options.topTask.districtcode,
+ // districtName: options.topTask.districtname,
+ // townCode: options.topTask.towncode,
+ // townName: options.topTask.townname,
+ // startTime,
+ // endTime,
+ // sceneTypeId: options.sceneTypeId,
+ // sceneTypeName: options.sceneTypeName,
+ // needCache: true
+ // };
+ emit('submit', opt);
+};
+</script>
--
Gitblit v1.9.3