基础数据产品-整改清单中,新增按照任意时段和区县进行统计的功能
已修改4个文件
已添加1个文件
181 ■■■■■ 文件已修改
src/components/search-option/FYOptionTime.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/echart-util.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/check/components/CompProblemAddOrUpd.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/data-product/base-data-product/ProdInspectionInfo.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/data-product/components/ProdQueryOptWithMode.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
  }
src/utils/echart-util.js
@@ -64,7 +64,8 @@
        ],
        label: {
          show: true,
          formatter: '{b}: {c} ({d}%)' // æ‰‡åŒºæ ‡ç­¾æ˜¾ç¤ºï¼šåç§°: æ•°é‡ (百分比)
          // formatter: '{b}: {c} ({d}%)' // æ‰‡åŒºæ ‡ç­¾æ˜¾ç¤ºï¼šåç§°: æ•°é‡ (百分比)
          formatter: '{b}: {d}%' // æ‰‡åŒºæ ‡ç­¾æ˜¾ç¤ºï¼šåç§°: æ•°é‡ (百分比)
        }
      }
    ]
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'];
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);
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>