This commit is contained in:
wuzilong committed 2026-10-05 12:57:51 +08:00
1 parent 59fafb92d5
commit 6abfb6e251
1512 files changed
+1565614 -275592

No files matched your search

+34 -60
View File
@@ -19,66 +19,18 @@
<el-icon><Plus /></el-icon>
新增记录
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1"
@click="handleToolbarEdit"
>
<el-icon><Edit /></el-icon>
编辑
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1 || !!selectedRows[0]?.hasWeighingSlip"
@click="handleGenerateWeighing(selectedRows[0])"
>
<el-icon><Plus /></el-icon>
{{
selectedRows.length === 1 && selectedRows[0]?.hasWeighingSlip
? '已生成地磅单'
: '生成地磅单'
}}
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1"
@click="handleCopyFillLink(selectedRows[0])"
>
<el-icon><Link /></el-icon>
磅单二维码
</el-button>
<el-button
class="btn-ghost"
type="danger"
:disabled="
selectedRows.length !== 1 ||
!canDeleteRecord(selectedRows[0]) ||
!canDeleteByCreator(selectedRows[0])
"
:title="
selectedRows.length === 1 ? getDeleteRecordDisabledTitle(selectedRows[0]) : ''
"
@click="handleToolbarDelete"
>
<el-icon><Delete /></el-icon>
删除
</el-button>
<el-button
v-if="hasClearableFilters"
class="btn-ghost"
@click="handleClearColumnFilters"
>
<el-icon><Filter /></el-icon>
清空列过滤
</el-button>
<ListExportDropdown
:export-fn="(payload) => inventoryApi.export(payload)"
:get-filter-params="getInventoryExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="inventoryExportColumns"
filename="出入库列表.xlsx"
/>
<ListToolbarOverflow :items="toolbarOverflowItems">
<template #export>
<ListExportDropdown
:export-fn="(payload) => inventoryApi.export(payload)"
:get-filter-params="getInventoryExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="inventoryExportColumns"
filename="出入库列表.xlsx"
/>
</template>
</ListToolbarOverflow>
<ListToolbarEndActions
:loading="loading"
@@ -606,6 +558,14 @@
import ListQuickSearchInput from '@/components/business/list-quick-search-input/index.vue'
import ListExportDropdown from '@/components/business/list-export-dropdown/index.vue'
import ListToolbarEndActions from '@/components/business/list-toolbar-end-actions/index.vue'
import ListToolbarOverflow from '@/components/business/list-toolbar-overflow/index.vue'
import type { ListToolbarOverflowItem } from '@/components/business/list-toolbar-overflow/types'
import {
overflowClearFiltersItem,
overflowDeleteItem,
overflowEditItem,
overflowExportPlaceholder
} from '@/utils/list-toolbar-overflow-items'
import ListColumnStatsRow from '@/components/business/list-column-stats-row/index.vue'
import ColumnHeaderFilter from '@/components/business/column-header-filter/index.vue'
import type { StatsRowColumn } from '@/utils/list-column-stats'
@@ -754,6 +714,20 @@
activeDateShortcut.value = 'today'
}
const toolbarOverflowItems = computed<ListToolbarOverflowItem[]>(() => [
overflowEditItem({
disabled: selectedRows.value.length !== 1,
onClick: () => handleToolbarEdit()
}),
overflowDeleteItem({
disabled:
selectedRows.value.length !== 1 || !canDeleteByCreator(selectedRows.value[0]),
onClick: () => handleToolbarDelete()
}),
overflowExportPlaceholder(),
overflowClearFiltersItem(hasClearableFilters.value, handleClearColumnFilters)
])
const inventoryExportColumns = computed(() => {
const cols = [...visibleColumns.value]
if (!cols.includes('planNo')) cols.unshift('planNo')
+43 -46
View File
@@ -19,52 +19,18 @@
<el-icon><Plus /></el-icon>
新增计划
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1"
@click="handleToolbarEdit"
>
<el-icon><Edit /></el-icon>
编辑
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1"
@click="handleToolbarGenerateInventory"
>
<el-icon><DocumentAdd /></el-icon>
生成出入库单
</el-button>
<el-button
class="btn-ghost"
type="danger"
:disabled="
selectedRows.length !== 1 ||
!canDeletePlanRecord(selectedRows[0]) ||
!canDeleteByCreator(selectedRows[0])
"
:title="selectedRows.length === 1 ? getDeletePlanDisabledTitle(selectedRows[0]) : ''"
@click="handleToolbarDelete"
>
<el-icon><Delete /></el-icon>
删除
</el-button>
<el-button
v-if="hasActiveFilters"
class="btn-ghost"
@click="clearAllFilters"
>
<el-icon><Filter /></el-icon>
清空列过滤
</el-button>
<ListExportDropdown
:export-fn="(payload) => planApi.export(payload)"
:get-filter-params="getPlanExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="planExportColumns"
filename="计划列表.xlsx"
/>
<ListToolbarOverflow :items="toolbarOverflowItems">
<template #export>
<ListExportDropdown
:export-fn="(payload) => planApi.export(payload)"
:get-filter-params="getPlanExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="planExportColumns"
filename="计划列表.xlsx"
/>
</template>
</ListToolbarOverflow>
<ListToolbarEndActions
:loading="loading"
@@ -553,6 +519,14 @@
import ListQuickSearchInput from '@/components/business/list-quick-search-input/index.vue'
import ListExportDropdown from '@/components/business/list-export-dropdown/index.vue'
import ListToolbarEndActions from '@/components/business/list-toolbar-end-actions/index.vue'
import ListToolbarOverflow from '@/components/business/list-toolbar-overflow/index.vue'
import type { ListToolbarOverflowItem } from '@/components/business/list-toolbar-overflow/types'
import {
overflowClearFiltersItem,
overflowDeleteItem,
overflowEditItem,
overflowExportPlaceholder
} from '@/utils/list-toolbar-overflow-items'
import ListColumnStatsRow from '@/components/business/list-column-stats-row/index.vue'
import ColumnHeaderFilter from '@/components/business/column-header-filter/index.vue'
import type { StatsRowColumn } from '@/utils/list-column-stats'
@@ -929,6 +903,29 @@
}
}
const toolbarOverflowItems = computed<ListToolbarOverflowItem[]>(() => [
overflowEditItem({
disabled: selectedRows.value.length !== 1,
onClick: () => handleToolbarEdit()
}),
{
key: 'generateInventory',
label: '生成出入库单',
icon: DocumentAdd,
disabled: selectedRows.value.length !== 1,
onClick: () => handleToolbarGenerateInventory()
},
overflowDeleteItem({
disabled:
selectedRows.value.length !== 1 ||
!canDeletePlanRecord(selectedRows.value[0]) ||
!canDeleteByCreator(selectedRows.value[0]),
onClick: () => handleToolbarDelete()
}),
overflowExportPlaceholder(),
overflowClearFiltersItem(hasActiveFilters.value, () => clearAllFilters())
])
function handleToolbarEdit() {
if (selectedRows.value.length !== 1) {
$modal.msgWarning('请先勾选一条计划')
+38 -42
View File
@@ -19,47 +19,18 @@
<el-icon><Plus /></el-icon>
新增地磅单
</el-button>
<el-button
class="btn-ghost"
:disabled="selectedRows.length !== 1 || selectedRows[0]?.isVoided === 1"
@click="handleToolbarEdit"
>
<el-icon><Edit /></el-icon>
编辑
</el-button>
<el-button
class="btn-ghost"
:disabled="
selectedRows.length !== 1 ||
selectedRows[0]?.isVoided === 1 ||
!isWeighingRecordToday(selectedRows[0])
"
:title="
selectedRows.length === 1 && !isWeighingRecordToday(selectedRows[0])
? '仅支持作废当天的地磅单'
: ''
"
@click="handleToolbarVoid"
>
<el-icon><Close /></el-icon>
作废
</el-button>
<el-button
v-if="hasClearableColumnFilters"
class="btn-ghost"
@click="handleClearColumnFilters"
>
<el-icon><Filter /></el-icon>
清空列过滤
</el-button>
<ListExportDropdown
:export-fn="(payload) => weighingApi.export(payload)"
:get-filter-params="getWeighingExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="weighingExportColumns"
filename="地磅单列表.xlsx"
/>
<ListToolbarOverflow :items="toolbarOverflowItems">
<template #export>
<ListExportDropdown
:export-fn="(payload) => weighingApi.export(payload)"
:get-filter-params="getWeighingExportFilterParams"
:has-selection="true"
:selected-ids="selectedRows.map((r) => String(r.id))"
:visible-columns="weighingExportColumns"
filename="地磅单列表.xlsx"
/>
</template>
</ListToolbarOverflow>
<ListToolbarEndActions
:loading="loading"
@@ -639,7 +610,6 @@
Check,
Close,
Edit,
Filter,
Plus
} from '@element-plus/icons-vue'
import DbCrmCustomerSelect from '@/components/business/db/DbCrmCustomerSelect.vue'
@@ -647,6 +617,13 @@
import ListQuickSearchInput from '@/components/business/list-quick-search-input/index.vue'
import ListExportDropdown from '@/components/business/list-export-dropdown/index.vue'
import ListToolbarEndActions from '@/components/business/list-toolbar-end-actions/index.vue'
import ListToolbarOverflow from '@/components/business/list-toolbar-overflow/index.vue'
import type { ListToolbarOverflowItem } from '@/components/business/list-toolbar-overflow/types'
import {
overflowClearFiltersItem,
overflowEditItem,
overflowExportPlaceholder
} from '@/utils/list-toolbar-overflow-items'
import ListColumnStatsRow from '@/components/business/list-column-stats-row/index.vue'
import ColumnHeaderFilter from '@/components/business/column-header-filter/index.vue'
import type { StatsRowColumn } from '@/utils/list-column-stats'
@@ -749,6 +726,25 @@
}
}
const toolbarOverflowItems = computed<ListToolbarOverflowItem[]>(() => [
overflowEditItem({
disabled: selectedRows.value.length !== 1 || selectedRows.value[0]?.isVoided === 1,
onClick: () => handleToolbarEdit()
}),
{
key: 'void',
label: '作废',
icon: Close,
disabled:
selectedRows.value.length !== 1 ||
selectedRows.value[0]?.isVoided === 1 ||
!isWeighingRecordToday(selectedRows.value[0]),
onClick: () => handleToolbarVoid()
},
overflowExportPlaceholder(),
overflowClearFiltersItem(hasClearableColumnFilters.value, handleClearColumnFilters)
])
function handleResetColumns() {
resetToDefault()
resetToInitial()