|
@@ -4,7 +4,8 @@ import { useRouter } from 'vue-router';
|
|
|
import {
|
|
|
getDayData,
|
|
|
getDayTotalData,
|
|
|
- getMonthData, getMonthTotalData,
|
|
|
+ getMonthData,
|
|
|
+ getMonthTotalData,
|
|
|
getWeekData,
|
|
|
getWeekTotalData
|
|
|
} from '/src/views/reportManage/dataCenter/api';
|
|
@@ -19,6 +20,9 @@ const props = defineProps({
|
|
|
taskIds: Object,
|
|
|
});
|
|
|
|
|
|
+const taskIds = ref(props.taskIds);
|
|
|
+const totalSales = ref(null);
|
|
|
+
|
|
|
const dayStartDate = ref(null);
|
|
|
const dayEndDate = ref(null);
|
|
|
const weekStartDate = ref(null);
|
|
@@ -133,7 +137,7 @@ const loadSortState = () => {
|
|
|
};
|
|
|
const totalRow = ref({});
|
|
|
|
|
|
-async function fetchTotalData(taskIds, apiFunc, startDate, endDate, dateTypeKey) {
|
|
|
+async function fetchTotalData(taskIds, apiFunc, startDate, endDate, dateTypeKey) {
|
|
|
try {
|
|
|
const resp = await apiFunc({
|
|
|
data_start_date: startDate.value,
|
|
@@ -148,15 +152,15 @@ async function fetchTotalData(taskIds, apiFunc, startDate, endDate, dateTypeKey
|
|
|
}
|
|
|
|
|
|
async function fetchDayTotal(taskIds) {
|
|
|
- await fetchTotalData(taskIds, getDayTotalData, dayStartDate, dayEndDate,'day');
|
|
|
+ await fetchTotalData(taskIds, getDayTotalData, dayStartDate, dayEndDate, 'day');
|
|
|
}
|
|
|
|
|
|
async function fetchWeekTotal(taskIds) {
|
|
|
- await fetchTotalData(taskIds, getWeekTotalData, weekStartDate, weekEndDate,'week');
|
|
|
+ await fetchTotalData(taskIds, getWeekTotalData, weekStartDate, weekEndDate, 'week');
|
|
|
}
|
|
|
|
|
|
async function fetchMonthTotal(taskIds) {
|
|
|
- await fetchTotalData(taskIds, getMonthTotalData, monthStartDate, monthEndDate,'month');
|
|
|
+ await fetchTotalData(taskIds, getMonthTotalData, monthStartDate, monthEndDate, 'month');
|
|
|
}
|
|
|
|
|
|
async function fetchCurrentTotalData(taskIds) {
|
|
@@ -164,15 +168,14 @@ async function fetchCurrentTotalData(taskIds) {
|
|
|
await fetchDayTotal(taskIds);
|
|
|
} else if (dateType.value === 'week') {
|
|
|
await fetchWeekTotal(taskIds);
|
|
|
- }else if (dateType.value === 'month') {
|
|
|
+ } else if (dateType.value === 'month') {
|
|
|
await fetchMonthTotal(taskIds);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
async function fetchData(taskIds, apiFunc, startDate, endDate, dataColumns, dateTypeKey) {
|
|
|
try {
|
|
|
- loadSortState();
|
|
|
+ //loadSortState();
|
|
|
const resp = await apiFunc({
|
|
|
page: gridOptions.pagerConfig.currentPage,
|
|
|
limit: gridOptions.pagerConfig.pageSize,
|
|
@@ -181,6 +184,7 @@ async function fetchData(taskIds, apiFunc, startDate, endDate, dataColumns, date
|
|
|
task_ids: taskIds,
|
|
|
sort: sortOrder.value,
|
|
|
order_date: order_date.value,
|
|
|
+ order_total_sales_current_monthly: totalSales.value,
|
|
|
});
|
|
|
gridOptions[dateType.value].data = [totalRow.value, ...resp.data];
|
|
|
gridOptions.pagerConfig.total = resp.total;
|
|
@@ -203,7 +207,7 @@ async function fetchData(taskIds, apiFunc, startDate, endDate, dataColumns, date
|
|
|
//"的销售额"字段可以排序
|
|
|
allColumns.forEach(key => {
|
|
|
let isSortable = false;
|
|
|
- if (key.includes('的销售额') && !key.includes('增长率')) {
|
|
|
+ if (key.includes('的销售额') || key.includes('当月累计销售额') && !key.includes('增长率')) {
|
|
|
isSortable = true;
|
|
|
}
|
|
|
const column = {
|
|
@@ -293,19 +297,31 @@ function handleSortChange({ field, order }) {
|
|
|
const match = field.match(/(\d{4}-\d{2}-\d{2})的销售额/);
|
|
|
const matchRange = field.match(/(\d{4}-\d{2}-\d{2})~(\d{4}-\d{2}-\d{2})的销售额/);
|
|
|
const matchMonth = field.match(/(\d{4}-\d{2})的销售额/);
|
|
|
+ const matchTotal = field.match(/当月累计销售额/);
|
|
|
if (matchRange) {
|
|
|
order_date.value = matchRange[1];
|
|
|
+ totalSales.value = '';
|
|
|
} else if (match) {
|
|
|
order_date.value = match[1];
|
|
|
+ totalSales.value = '';
|
|
|
} else if (matchMonth) {
|
|
|
order_date.value = `${ matchMonth[1] }-01`;
|
|
|
+ totalSales.value = '';
|
|
|
+ } else if (matchTotal) {
|
|
|
+ clearSort();
|
|
|
+ totalSales.value = true;
|
|
|
}
|
|
|
}
|
|
|
saveSortState(); // 保存排序状态
|
|
|
gridOptions.sortConfig.defaultSort.order = order;
|
|
|
gridOptions.sortConfig.defaultSort.field = field;
|
|
|
sortStatus.value = false;
|
|
|
- fetchCurrentData(props.taskIds, true)
|
|
|
+ fetchCurrentData(props.taskIds, true);
|
|
|
+}
|
|
|
+
|
|
|
+function clearSort() {
|
|
|
+ order_date.value = '';
|
|
|
+ salesOrder.value = null;
|
|
|
}
|
|
|
|
|
|
const handleImport = () => {
|
|
@@ -339,11 +355,12 @@ const cellStyle = (row) => {
|
|
|
zIndex: 30,
|
|
|
fontSize: '12px',
|
|
|
fontWeight: '600',
|
|
|
- }}
|
|
|
+ };
|
|
|
+ }
|
|
|
return {
|
|
|
fontSize: '12px',
|
|
|
fontWeight: '600',
|
|
|
- padding:0,
|
|
|
+ padding: 0,
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -355,18 +372,18 @@ const headerCellStyle = () => {
|
|
|
|
|
|
const rowStyle = (row) => {
|
|
|
if (row.$rowIndex === 0) {
|
|
|
- return{
|
|
|
+ return {
|
|
|
background: '#def6fe',
|
|
|
- position:'sticky',
|
|
|
+ position: 'sticky',
|
|
|
top: 0,
|
|
|
zIndex: 1,
|
|
|
- }
|
|
|
+ };
|
|
|
}
|
|
|
- return{
|
|
|
- padding:0,
|
|
|
+ return {
|
|
|
+ padding: 0,
|
|
|
height: '50px',
|
|
|
- }
|
|
|
-}
|
|
|
+ };
|
|
|
+};
|
|
|
|
|
|
watch([() => props.taskIds, currentDate], async ([newTaskIds, newCurrentDate]) => {
|
|
|
sortStatus.value = true;
|
|
@@ -381,8 +398,7 @@ watch([() => props.taskIds, currentDate], async ([newTaskIds, newCurrentDate]) =
|
|
|
monthStartDate.value = dayjs(newCurrentDate.startDate).format('YYYY-MM-DD');
|
|
|
monthEndDate.value = dayjs(newCurrentDate.endDate).format('YYYY-MM-DD');
|
|
|
}
|
|
|
- sortOrder.value = '';
|
|
|
- order_date.value = '';
|
|
|
+ clearSort();
|
|
|
if (newTaskIds) {
|
|
|
taskIdsAvailable.value = true;
|
|
|
}
|