feat: 批量更新任务结束后update更新时间
This commit is contained in:
@ -28,9 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="field-row">
|
<div class="field-row">
|
||||||
<span class="label">数据更新时间</span>
|
<span class="label">数据更新时间</span>
|
||||||
<span class="cts num">{{
|
<span class="cts num">{{ getLastSyncedAt(item) }}</span>
|
||||||
exactFormatTime(item.last_synced_at, 'YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm:ss')
|
|
||||||
}}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="field-row">
|
<div class="field-row">
|
||||||
<span class="label">平台</span>
|
<span class="label">平台</span>
|
||||||
@ -144,6 +142,10 @@ const props = defineProps({
|
|||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
},
|
},
|
||||||
|
isLoadingTaskStatus: {
|
||||||
|
type: Boolean,
|
||||||
|
default: () => false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emits = defineEmits(['openEdit', 'update', 'selectionChange', 'delete']);
|
const emits = defineEmits(['openEdit', 'update', 'selectionChange', 'delete']);
|
||||||
@ -172,6 +174,9 @@ const isSyncing = (item) => {
|
|||||||
if (!props.syncMediaAccounts.length) return false;
|
if (!props.syncMediaAccounts.length) return false;
|
||||||
|
|
||||||
const target = props.syncMediaAccounts.find((v) => v.id === item.id);
|
const target = props.syncMediaAccounts.find((v) => v.id === item.id);
|
||||||
|
if(target) {
|
||||||
|
return target?.status === 0;
|
||||||
|
}
|
||||||
return target?.status === 0;
|
return target?.status === 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -265,6 +270,18 @@ const onDeleteSyncStatus = async (item) => {
|
|||||||
await deleteSyncStatus(item.id);
|
await deleteSyncStatus(item.id);
|
||||||
item.status = 1;
|
item.status = 1;
|
||||||
};
|
};
|
||||||
|
const formatTime = (time) => {
|
||||||
|
return exactFormatTime(time, 'YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm:ss');
|
||||||
|
};
|
||||||
|
const getLastSyncedAt = (item) => {
|
||||||
|
const target = props.syncMediaAccounts.find((v) => v.id === item.id);
|
||||||
|
if (props.isLoadingTaskStatus && target) {
|
||||||
|
if (target?.status !== 0) {
|
||||||
|
return formatTime(target.last_synced_at);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return formatTime(item.last_synced_at);
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|||||||
@ -80,6 +80,7 @@
|
|||||||
<AccountTable
|
<AccountTable
|
||||||
v-if="dataSource.length > 0"
|
v-if="dataSource.length > 0"
|
||||||
:syncMediaAccounts="syncMediaAccounts"
|
:syncMediaAccounts="syncMediaAccounts"
|
||||||
|
:isLoadingTaskStatus="isLoadingTaskStatus"
|
||||||
:dataSource="dataSource"
|
:dataSource="dataSource"
|
||||||
:selectedItems="selectedItems"
|
:selectedItems="selectedItems"
|
||||||
@selectionChange="handleSelectionChange"
|
@selectionChange="handleSelectionChange"
|
||||||
@ -161,7 +162,7 @@ const dataSource = ref([]);
|
|||||||
const selectedItems = ref([]);
|
const selectedItems = ref([]);
|
||||||
const healthData = ref({});
|
const healthData = ref({});
|
||||||
const syncMediaAccounts = ref([]);
|
const syncMediaAccounts = ref([]);
|
||||||
const startSyncData = ref(false);
|
const isLoadingTaskStatus = ref(false); // 正在查询状态中
|
||||||
|
|
||||||
const isAbNormalStatus = computed(() => healthData.value?.total_abnormal_number > 0);
|
const isAbNormalStatus = computed(() => healthData.value?.total_abnormal_number > 0);
|
||||||
const isDisabledBatchSyncData = computed(() => selectedItems.value.some((item) => item.status !== EnumStatus.NORMAL));
|
const isDisabledBatchSyncData = computed(() => selectedItems.value.some((item) => item.status !== EnumStatus.NORMAL));
|
||||||
@ -288,14 +289,14 @@ const getAsyncStatus = async () => {
|
|||||||
const isEnd = data.every((item) => item.status !== 0);
|
const isEnd = data.every((item) => item.status !== 0);
|
||||||
if (isEnd) {
|
if (isEnd) {
|
||||||
clearSyncDataTimer();
|
clearSyncDataTimer();
|
||||||
startSyncData.value = false;
|
isLoadingTaskStatus.value = false;
|
||||||
getData();
|
getData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const startSyncDataPolling = () => {
|
const startSyncDataPolling = () => {
|
||||||
startSyncData.value = true;
|
isLoadingTaskStatus.value = true;
|
||||||
clearSyncDataTimer();
|
clearSyncDataTimer();
|
||||||
|
|
||||||
getAsyncStatus();
|
getAsyncStatus();
|
||||||
@ -305,7 +306,7 @@ const startSyncDataPolling = () => {
|
|||||||
const handleSyncData = async (item) => {
|
const handleSyncData = async (item) => {
|
||||||
const { code } = await postSyncMediaAccountData(item.id);
|
const { code } = await postSyncMediaAccountData(item.id);
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
if (!startSyncData.value) {
|
if (!isLoadingTaskStatus.value) {
|
||||||
startSyncDataPolling();
|
startSyncDataPolling();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -322,7 +323,7 @@ const handleBatchSyncData = async () => {
|
|||||||
const ids = selectedItems.value.map((item) => item.id);
|
const ids = selectedItems.value.map((item) => item.id);
|
||||||
const { code } = await postBatchSyncMediaAccountData({ ids });
|
const { code } = await postBatchSyncMediaAccountData({ ids });
|
||||||
if (code === 200) {
|
if (code === 200) {
|
||||||
if (!startSyncData.value) {
|
if (!isLoadingTaskStatus.value) {
|
||||||
startSyncDataPolling();
|
startSyncDataPolling();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user