<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>
|