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