| <script setup>  | 
| import { getCurrentInstance, ref, computed, reactive } from 'vue';  | 
| import { useRouter } from "vue-router";  | 
| import { get, post, postBlob } from '@/utils/request.js'  | 
| import { message, Modal } from 'ant-design-vue';  | 
| import { logout } from '@/config.js';  | 
| import { formatMessage } from '@/utils/localeUtils.js';  | 
| import useTableSearch from '@/utils/tableUtils.jsx';  | 
| const context = getCurrentInstance()?.appContext.config.globalProperties;  | 
|   | 
| const router = useRouter();  | 
|   | 
| const TABLE_KEY = 'table-taskType';  | 
| let currentPage = 1;  | 
| let pageSize = 10;  | 
| const searchInput = ref("")  | 
| const editChild = ref(null)  | 
|   | 
| const state = reactive({  | 
|     selectedRowKeys: [],  | 
|     loading: false,  | 
| });  | 
|   | 
| let tableData = ref([]);  | 
| getPage();  | 
|   | 
| const {  | 
|     getColumnSearchProps,  | 
|     handleResizeColumn,  | 
| } = useTableSearch();  | 
|   | 
| const columns = [  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.stayTime', '滞留天数'),  | 
|         dataIndex: 'stayTime',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('stayTime'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.loc_id', '库位'),  | 
|         dataIndex: 'locId$',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('locId$'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.loc_no', '库位号'),  | 
|         dataIndex: 'locNo',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('locNo'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.mat_id', '商品'),  | 
|         dataIndex: 'matId$',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('matId$'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.matnr', '商品编号'),  | 
|         dataIndex: 'matnr',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('matnr'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.order_no', '订单号'),  | 
|         dataIndex: 'orderNo',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('orderNo'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.batch', '批号'),  | 
|         dataIndex: 'batch',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('batch'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.anfme', '数量'),  | 
|         dataIndex: 'anfme',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('anfme'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.status', '状态'),  | 
|         dataIndex: 'status$',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('status$'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.create_time', '添加时间'),  | 
|         dataIndex: 'createTime$',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('createTime$'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.create_by', '添加人员'),  | 
|         dataIndex: 'createBy$',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('createBy$'),  | 
|     },  | 
|     {  | 
|         title: formatMessage('db.man_loc_detl.memo', '备注'),  | 
|         dataIndex: 'memo',  | 
|         width: 140,  | 
|         ellipsis: true,  | 
|         ...getColumnSearchProps('memo'),  | 
|     },  | 
| ];  | 
|   | 
|   | 
| const hasSelected = computed(() => state.selectedRowKeys.length > 0);  | 
| const start = () => {  | 
|     state.loading = true;  | 
|     // ajax request after empty completing  | 
|     setTimeout(() => {  | 
|         state.loading = false;  | 
|         state.selectedRowKeys = [];  | 
|     }, 1000);  | 
| };  | 
| const onSelectChange = selectedRowKeys => {  | 
|     // console.log('selectedRowKeys changed: ', selectedRowKeys);  | 
|     state.selectedRowKeys = selectedRowKeys;  | 
| };  | 
|   | 
| function getPage() {  | 
|     state.loading = true;  | 
|     post('/api/viewStayTime/page', {  | 
|         current: currentPage,  | 
|         pageSize: pageSize,  | 
|         condition: searchInput.value  | 
|     }).then((resp) => {  | 
|         let result = resp.data;  | 
|         if (result.code == 200) {  | 
|             let data = result.data;  | 
|             tableData.value = data;  | 
|   | 
|             state.loading = false;  | 
|         } else if (result.code === 401) {  | 
|             message.error(result.msg);  | 
|             logout()  | 
|         } else {  | 
|             message.error(result.msg);  | 
|         }  | 
|     })  | 
| }  | 
|   | 
| const handleExport = async (intl) => {  | 
|     postBlob('/api/viewStayTime/export', {  | 
|         condition: searchInput.value  | 
|     }).then(result => {  | 
|         const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });  | 
|         window.location.href = window.URL.createObjectURL(blob);  | 
|         return true;  | 
|     })  | 
| };  | 
|   | 
| const onSearch = () => {  | 
|     // console.log('search');  | 
|     getPage()  | 
| }  | 
|   | 
| const onPageChange = (page, size) => {  | 
|     currentPage = page;  | 
|     pageSize = size;  | 
|     getPage();  | 
| }  | 
|   | 
| function handleTableReload(value) {  | 
|     getPage()  | 
| }  | 
|   | 
| </script>  | 
|   | 
| <script>  | 
| export default {  | 
|     name: '库存在库时间统计'  | 
| }  | 
| </script>  | 
|   | 
| <template>  | 
|     <div>  | 
|         <div class="table-header">  | 
|             <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"  | 
|                 style="width: 200px;" @search="onSearch" />  | 
|             <div class="table-header-right">  | 
|                 <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button>  | 
|             </div>  | 
|         </div>  | 
|         <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"  | 
|             :data-source="tableData.records" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"  | 
|             :pagination="{ total: tableData.total, onChange: onPageChange }"  | 
|             :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="columns" @resizeColumn="handleResizeColumn"  | 
|             :loading="state.loading">  | 
|             <template #bodyCell="{ column, text, record }">  | 
|             </template>  | 
|         </a-table>  | 
|     </div>  | 
| </template>  | 
|   | 
| <style></style>  |