|
|
@@ -83,6 +83,26 @@
|
|
|
v-hasPermi="['system:book:export']"
|
|
|
>导出</el-button>
|
|
|
</el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button
|
|
|
+ type="success"
|
|
|
+ plain
|
|
|
+ icon="Download"
|
|
|
+ @click="handleDownloadTemplate"
|
|
|
+ v-hasPermi="['system:dept:add']">
|
|
|
+ 模板下载
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button
|
|
|
+ type="success"
|
|
|
+ plain
|
|
|
+ icon="Upload"
|
|
|
+ @click="handleImport"
|
|
|
+ v-hasPermi="['system:book:add']">
|
|
|
+ 导入
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
|
|
|
@@ -170,12 +190,46 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+ <!-- 供应商导入对话框 -->
|
|
|
+ <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
|
|
|
+ <el-upload
|
|
|
+ ref="uploadRef"
|
|
|
+ :limit="1"
|
|
|
+ accept=".xlsx, .xls"
|
|
|
+ :headers="upload.headers"
|
|
|
+ :action="upload.url"
|
|
|
+ :disabled="upload.isUploading"
|
|
|
+ :on-progress="handleFileUploadProgress"
|
|
|
+ :on-success="handleFileSuccess"
|
|
|
+ :on-change="handleFileChange"
|
|
|
+ :on-remove="handleFileRemove"
|
|
|
+ :auto-upload="false"
|
|
|
+ drag
|
|
|
+ >
|
|
|
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
|
|
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
+ <template #tip>
|
|
|
+ <div class="el-upload__tip text-center">
|
|
|
+ <span>仅允许导入xls、xlsx格式文件。</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-upload>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitFileForm">确 定</el-button>
|
|
|
+ <el-button @click="upload.open = false">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup name="Book">
|
|
|
import { listBook, getBook, delBook, addBook, updateBook } from "@/api/logistics/book"
|
|
|
import RegionCascader from '@/components/RegionCascader.vue'
|
|
|
+import { getToken } from "@/utils/auth"
|
|
|
+import { download } from '@/utils/request'
|
|
|
// 导入本地 JSON 数据
|
|
|
import { getCodesByNames } from '@/utils/area-data.js'
|
|
|
|
|
|
@@ -212,6 +266,22 @@ const validateRegion = (rule, value, callback) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/*** 地址簿导入参数 */
|
|
|
+const upload = reactive({
|
|
|
+ // 是否显示弹出层(导入)
|
|
|
+ open: false,
|
|
|
+ // 弹出层标题
|
|
|
+ title: "",
|
|
|
+ // 是否禁用上传
|
|
|
+ isUploading: false,
|
|
|
+ // 设置上传的请求头部
|
|
|
+ headers: { Authorization: "Bearer " + getToken() },
|
|
|
+ // 上传的地址
|
|
|
+ url: import.meta.env.VITE_APP_BASE_API + "/system/book/importData",
|
|
|
+ // 当前选中的文件
|
|
|
+ selectedFile: null
|
|
|
+})
|
|
|
+
|
|
|
const data = reactive({
|
|
|
form: {},
|
|
|
queryParams: {
|
|
|
@@ -394,5 +464,53 @@ function handleExport() {
|
|
|
}, `book_${new Date().getTime()}.xlsx`)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+/** 下载模板 */
|
|
|
+const handleDownloadTemplate = () => {
|
|
|
+ download('/system/book/importTemplate', {}, '地址簿模板.xlsx')
|
|
|
+}
|
|
|
+
|
|
|
+/** 导入按钮操作 */
|
|
|
+function handleImport() {
|
|
|
+ upload.title = "地址簿导入"
|
|
|
+ upload.open = true
|
|
|
+ upload.selectedFile = null
|
|
|
+}
|
|
|
+
|
|
|
+/** 文件上传中处理 */
|
|
|
+const handleFileUploadProgress = (event, file, fileList) => {
|
|
|
+ upload.isUploading = true
|
|
|
+}
|
|
|
+
|
|
|
+/** 文件选择处理 */
|
|
|
+const handleFileChange = (file, fileList) => {
|
|
|
+ upload.selectedFile = file
|
|
|
+}
|
|
|
+
|
|
|
+/** 文件删除处理 */
|
|
|
+const handleFileRemove = (file, fileList) => {
|
|
|
+ upload.selectedFile = null
|
|
|
+}
|
|
|
+
|
|
|
+/** 文件上传成功处理 */
|
|
|
+const handleFileSuccess = (response, file, fileList) => {
|
|
|
+ upload.open = false
|
|
|
+ upload.isUploading = false
|
|
|
+ proxy.$refs["uploadRef"].handleRemove(file)
|
|
|
+ proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
|
|
|
+ getList()
|
|
|
+}
|
|
|
+
|
|
|
+/** 提交上传文件 */
|
|
|
+function submitFileForm() {
|
|
|
+ const file = upload.selectedFile
|
|
|
+ if (!file || file.length === 0 || !file.name.toLowerCase().endsWith('.xls') && !file.name.toLowerCase().endsWith('.xlsx')) {
|
|
|
+ proxy.$modal.msgError("请选择后缀为 “xls”或“xlsx”的文件。")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ proxy.$refs["uploadRef"].submit()
|
|
|
+}
|
|
|
+
|
|
|
getList()
|
|
|
</script>
|