skyouc
2024-12-21 c635d78b479510ebe2556a420948effcd30a0731
zy-asrs-admin/src/views/log/viewWorkIn/index.vue
@@ -1,204 +1,204 @@
<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-viewWorkIn';
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const editChild = ref(null)
const state = reactive({
    selectedRowKeys: [],
    loading: false,
    columns: [],
});
let tableData = ref([]);
getPage();
const {
    getColumnSearchProps,
    handleResizeColumn,
} = useTableSearch();
state.columns = [
    {
        title: formatMessage('db.view_work_in.create_time', '入库日期'),
        dataIndex: 'createTime$',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('createTime$'),
    },
    {
        title: formatMessage('db.view_work_in.locNo', '库位号'),
        dataIndex: ['task$', 'targetLoc'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('locNo'),
    },
    {
        title: formatMessage('db.view_work_in.matnr', '商品编号'),
        dataIndex: ['mat$', 'matnr'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('matnr'),
    },
    {
        title: formatMessage('db.view_work_in.maktx', '商品名称'),
        dataIndex: ['mat$', 'maktx'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('maktx'),
    },
    {
        title: formatMessage('db.view_work_in.batch', '批号'),
        dataIndex: 'batch',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('batch'),
    },
    {
        title: formatMessage('db.view_work_in.anfme', '数量'),
        dataIndex: 'anfme',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('anfme'),
    },
    {
        title: formatMessage('db.view_work_in.barcode', '托盘码'),
        dataIndex: 'barcode',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('barcode'),
    }
];
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/viewWorkIn/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);
        }
    })
}
getColumns();
//加载扩展字段
async function getColumns() {
    let fieldResp = await post('/api/matField/list', {
        unique: 1,
    })
    let fieldResult = fieldResp.data;
    let tmp = state.columns;
    if (fieldResult.code == 200) {
        let data = fieldResult.data;
        data.forEach((item) => {
            tmp.push({
                title: formatMessage(item.language, item.describe),
                name: item.name,
                dataIndex: item.name,
                key: item.name,
                width: 140,
            })
        })
        state.columns = tmp;
    } else if (result.code === 401) {
        message.error(result.msg);
        logout()
    } else {
        message.error(result.msg);
    }
}
const handleExport = async (intl) => {
    postBlob('/api/viewWorkIn/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="state.columns" @resizeColumn="handleResizeColumn"
            :loading="state.loading">
            <template #bodyCell="{ column, text, record }">
            </template>
        </a-table>
    </div>
</template>
<style></style>
<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-viewWorkIn';
let currentPage = 1;
let pageSize = 10;
const searchInput = ref("")
const editChild = ref(null)
const state = reactive({
    selectedRowKeys: [],
    loading: false,
    columns: [],
});
let tableData = ref([]);
getPage();
const {
    getColumnSearchProps,
    handleResizeColumn,
} = useTableSearch();
state.columns = [
    {
        title: formatMessage('db.view_work_in.create_time', '入库日期'),
        dataIndex: 'createTime$',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('createTime$'),
    },
    {
        title: formatMessage('db.view_work_in.locNo', '库位号'),
        dataIndex: ['task$', 'targetLoc'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('locNo'),
    },
    {
        title: formatMessage('db.view_work_in.matnr', '商品编号'),
        dataIndex: ['mat$', 'matnr'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('matnr'),
    },
    {
        title: formatMessage('db.view_work_in.maktx', '商品名称'),
        dataIndex: ['mat$', 'maktx'],
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('maktx'),
    },
    {
        title: formatMessage('db.view_work_in.batch', '批号'),
        dataIndex: 'batch',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('batch'),
    },
    {
        title: formatMessage('db.view_work_in.anfme', '数量'),
        dataIndex: 'anfme',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('anfme'),
    },
    {
        title: formatMessage('db.view_work_in.barcode', '托盘码'),
        dataIndex: 'barcode',
        width: 140,
        ellipsis: true,
        ...getColumnSearchProps('barcode'),
    }
];
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/viewWorkIn/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);
        }
    })
}
getColumns();
//加载扩展字段
async function getColumns() {
    let fieldResp = await post('/api/matField/list', {
        unique: 1,
    })
    let fieldResult = fieldResp.data;
    let tmp = state.columns;
    if (fieldResult.code == 200) {
        let data = fieldResult.data;
        data.forEach((item) => {
            tmp.push({
                title: formatMessage(item.language, item.describe),
                name: item.name,
                dataIndex: item.name,
                key: item.name,
                width: 140,
            })
        })
        state.columns = tmp;
    } else if (result.code === 401) {
        message.error(result.msg);
        logout()
    } else {
        message.error(result.msg);
    }
}
const handleExport = async (intl) => {
    postBlob('/api/viewWorkIn/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="state.columns" @resizeColumn="handleResizeColumn"
            :loading="state.loading">
            <template #bodyCell="{ column, text, record }">
            </template>
        </a-table>
    </div>
</template>
<style></style>