From 04fd71bcdd2f4d13f7fcb1f59952f6decdbb3d65 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 09 九月 2024 08:23:32 +0800
Subject: [PATCH] #
---
zy-asrs-admin/src/components/order/index.vue | 73 +++++++++++++++++++++++++++++++++++-
1 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/zy-asrs-admin/src/components/order/index.vue b/zy-asrs-admin/src/components/order/index.vue
index c5cdfde..36bebe3 100644
--- a/zy-asrs-admin/src/components/order/index.vue
+++ b/zy-asrs-admin/src/components/order/index.vue
@@ -3,11 +3,16 @@
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 { globalState, logout } from '@/config.js';
import EditView from './edit.vue'
import { formatMessage } from '@/utils/localeUtils.js';
import useTableSearch from '@/utils/tableUtils.jsx';
import ShowOrderDetlComponent from '@/components/orderDetl/show.vue';
+import {
+ DownOutlined,
+ UploadOutlined,
+ DownloadOutlined,
+} from "@ant-design/icons-vue";
const context = getCurrentInstance()?.appContext.config.globalProperties;
const router = useRouter();
@@ -217,6 +222,45 @@
getPage()
}
+const handleSyncOrderClick = (e) => {
+ if (e.key == 'import') {
+ importTemplate()
+ } else if (e.key == 'export') {
+ exportTemplate()
+ }
+}
+
+const importTemplate = () => {
+ //瀵煎叆妯℃澘
+}
+
+const exportTemplate = () => {
+ //妯℃澘瀵煎嚭
+ postBlob('/api/order/exportTemplate', {}).then(result => {
+ const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' });
+ window.location.href = window.URL.createObjectURL(blob);
+ return true;
+ })
+}
+
+const fileList = ref([]);
+const handleUploadChange = info => {
+ if (info.file.status !== 'uploading') {
+ // console.log(info.file, info.fileList);
+ }
+ if (info.file.status === 'done') {
+ let result = info.file.response;
+ if(result.code == 200) {
+ message.success(`${info.file.name} ${formatMessage('page.upload.success', '涓婁紶鎴愬姛')}`);
+ getPage()
+ }else {
+ message.error(result.msg);
+ }
+ } else if (info.file.status === 'error') {
+ message.error(`${info.file.name} file upload failed.`);
+ }
+};
+
</script>
<script>
@@ -227,11 +271,36 @@
<template>
<div>
- <EditView ref="editChild" @tableReload="handleTableReload" :ioModel="ioModel == 'in' ? 1 : ioModel == 'out' ? 2 : null" />
+ <EditView ref="editChild" @tableReload="handleTableReload"
+ :ioModel="ioModel == 'in' ? 1 : ioModel == 'out' ? 2 : null" />
<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-dropdown>
+ <template #overlay>
+ <a-menu @click="handleSyncOrderClick">
+ <a-menu-item key="import">
+ <a-upload v-model:file-list="fileList" name="file" action="/api/order/upload"
+ @change="handleUploadChange" :showUploadList="false" :headers="{
+ Authorization: globalState.token
+ }">
+ <UploadOutlined />
+ {{ formatMessage('page.order.import', '鍗曟嵁瀵煎叆') }}
+ </a-upload>
+ </a-menu-item>
+
+ <a-menu-item key="export">
+ <DownloadOutlined />
+ {{ formatMessage('page.order.export.template', '瀵煎嚭妯℃澘') }}
+ </a-menu-item>
+ </a-menu>
+ </template>
+ <a-button>
+ {{ formatMessage('page.order.sync', '鍗曟嵁鍚屾') }}
+ <DownOutlined />
+ </a-button>
+ </a-dropdown>
<a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button>
<a-button @click="handleExport">{{ formatMessage('page.export', '瀵煎嚭') }}</a-button>
</div>
--
Gitblit v1.9.1