From ac4341ea6b66ae02427d39d35f41d42d78b2eb2e Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 14 二月 2025 10:08:32 +0800 Subject: [PATCH] # --- zy-asrs-admin/src/views/task/task/index.vue | 111 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 98 insertions(+), 13 deletions(-) diff --git a/zy-asrs-admin/src/views/task/task/index.vue b/zy-asrs-admin/src/views/task/task/index.vue index c894643..38e8604 100644 --- a/zy-asrs-admin/src/views/task/task/index.vue +++ b/zy-asrs-admin/src/views/task/task/index.vue @@ -1,7 +1,7 @@ <script setup> import { getCurrentInstance, ref, computed, reactive } from 'vue'; import { useRouter } from "vue-router"; -import { get, post, postBlob } from '@/utils/request.js' +import { get, post, postBlob, postForm } from '@/utils/request.js' import { message, Modal } from 'ant-design-vue'; import { logout } from '@/config.js'; import EditView from './edit.vue' @@ -16,8 +16,21 @@ let currentPage = 1; let pageSize = 10; const searchInput = ref("") +const searchParam = ref({ + taskNo: null, + taskSts: null, + taskType: null, + originLoc: null, + targetLoc: null, + barcode: null, +}) const editChild = ref(null) const showTaskDetlChild = ref(null) + +const state = reactive({ + selectedRowKeys: [], + loading: false, +}); let tableData = ref([]); getPage(); @@ -139,14 +152,10 @@ dataIndex: 'oper', key: 'oper', fixed: 'right', - width: 240, + width: 300, }, ]; -const state = reactive({ - selectedRowKeys: [], - loading: false, -}); const hasSelected = computed(() => state.selectedRowKeys.length > 0); const start = () => { state.loading = true; @@ -162,15 +171,20 @@ }; function getPage() { + state.loading = true; + post('/api/task/page', { current: currentPage, pageSize: pageSize, - condition: searchInput.value + condition: searchInput.value, + _param: searchParam.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() @@ -212,7 +226,10 @@ } const handleExport = async (intl) => { - postBlob('/api/task/export', {}).then(result => { + postBlob('/api/task/export', { + condition: searchInput.value, + _param: searchParam.value, + }).then(result => { const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' }); window.location.href = window.URL.createObjectURL(blob); return true; @@ -289,6 +306,48 @@ }); } +const handlePick = (record) => { + Modal.confirm({ + title: formatMessage('page.pick', '鎷f枡'), + content: formatMessage('page.pick.confirm', '纭畾鎷f枡璇ラ」鍚楋紵'), + maskClosable: true, + onOk: async () => { + const hide = message.loading(formatMessage('common.loading', '璇锋眰涓�')); + try { + post('/api/task/pick', record).then(resp => { + let result = resp.data; + if (result.code === 200) { + message.success(result.msg); + } else { + message.error(result.msg); + } + getPage() + hide() + }) + } catch (error) { + message.error(formatMessage('common.fail', '璇锋眰澶辫触')); + } + }, + }); +} + +const taskStsQueryList = ref(null); +taskStsQuery(); +function taskStsQuery() { + postForm('/api/taskSts/query', {}).then(resp => { + let result = resp.data; + taskStsQueryList.value = result.data; + }) +} +const taskTypeQueryList = ref(null); +taskTypeQuery(); +function taskTypeQuery() { + postForm('/api/taskType/query', {}).then(resp => { + let result = resp.data; + taskTypeQueryList.value = result.data; + }) +} + </script> <script> @@ -301,23 +360,49 @@ <div> <EditView ref="editChild" @tableReload="handleTableReload" /> <div class="table-header"> - <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '璇疯緭鍏�')" - style="width: 200px;" @search="onSearch" /> + <div> + <a-input v-model:value="searchParam.taskNo" :placeholder="formatMessage('page.task.taskNo.input', '璇疯緭鍏ヤ换鍔$紪鍙�')" + style="width: 140px;margin-right: 10px;" /> + <a-select v-model:value="searchParam.taskSts" + :placeholder="formatMessage('page.task.taskSts.select', '璇烽�夋嫨浠诲姟鐘舵��')" style="width: 140px;margin-right: 10px;" + show-search allowClear :options="taskStsQueryList" optionFilterProp="label" optionLabelProp="label"> + </a-select> + <a-select v-model:value="searchParam.taskType" + :placeholder="formatMessage('page.task.taskType.select', '璇烽�夋嫨浠诲姟绫诲瀷')" style="width: 140px;margin-right: 10px;" + show-search allowClear :options="taskTypeQueryList" optionFilterProp="label" optionLabelProp="label"> + </a-select> + <a-input v-model:value="searchParam.originLoc" + :placeholder="formatMessage('page.task.originLoc.input', '璇疯緭鍏ユ簮搴撲綅')" + style="width: 140px;margin-right: 10px;" /> + <a-input v-model:value="searchParam.targetLoc" + :placeholder="formatMessage('page.task.targetLoc.input', '璇疯緭鍏ョ洰鏍囧簱浣�')" + style="width: 140px;margin-right: 10px;" /> + <a-input v-model:value="searchParam.barcode" :placeholder="formatMessage('page.task.barcode.input', '璇疯緭鍏ユ墭鐩樼爜')" + style="width: 140px;margin-right: 10px;" /> + + <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '璇疯緭鍏�')" + style="width: 200px;" @search="onSearch" /> + </div> <div class="table-header-right"> - <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button> + <!-- <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button> --> <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"> + :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="columns" @resizeColumn="handleResizeColumn" + :loading="state.loading"> <template #bodyCell="{ column, text, record }"> <template v-if="column.dataIndex === 'oper'"> <div style="display: flex;justify-content: space-evenly;"> <a-button type="link" primary @click="showDetl(record)">{{ formatMessage('page.task.orderDetl', '浠诲姟鏄庣粏') }}</a-button> - <a-button type="link" primary @click="handleComplete(record)">{{ formatMessage('page.complete', '瀹屾垚') }}</a-button> + <a-button v-if="record.taskType == 103" type="link" primary @click="handlePick(record)">{{ + formatMessage('page.pick', '鎷f枡') + }}</a-button> + <a-button type="link" primary @click="handleComplete(record)">{{ formatMessage('page.complete', '瀹屾垚') + }}</a-button> <a-button type="link" danger @click="handleCancel(record)">{{ formatMessage('page.cancel', '鍙栨秷') }}</a-button> </div> -- Gitblit v1.9.1