From 6f92570642ba2aa859e76aa8c3cb82312ae7fab8 Mon Sep 17 00:00:00 2001 From: lichong <18518571399@163.com> Date: Mon, 6 Jan 2025 22:24:42 +0800 Subject: [PATCH] 16 --- src/renderer/src/assets/js/db.js | 2 +- src/renderer/src/views/shujuchuli.vue | 135 +++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/assets/js/db.js b/src/renderer/src/assets/js/db.js index f9325a8..bfbc915 100644 --- a/src/renderer/src/assets/js/db.js +++ b/src/renderer/src/assets/js/db.js @@ -6,5 +6,5 @@ export const myDatabase = new Dexie('myDatabase'); myDatabase.version(1).stores({ chima: '++id, 性别, US, 尺码2, 尺码1, 型号, &尺码代码, create_at, update_at', ziliao: '++id, 品名, 货号, 商品, 颜色, 颜色描述, 尺码代码, 尺码2, 型号, 国标码, 款号, 零售价, 性别, 鞋面材料, 鞋底材料, 执行标准, 等级, 本厂分区, &SKU, create_at, update_at', - shujuchuli: '++id, 唯一码, 防伪码, 品名, 货号, 颜色, 颜色代码, 尺码1, 型号, 尺码2, 尺码代码, SKU, 零售价, 等级, 鞋面材料, 执行标准, 国际码, 数量, 图片名称, 本厂分区, 下单数, create_at, update_at', + shujuchuli: '++id, &uniqyKey, 唯一码, 防伪码, 品名, 货号, 颜色, 颜色代码, 尺码1, 型号, 尺码2, 尺码代码, SKU, 零售价, 等级, 鞋面材料, 执行标准, 国际码, 数量, 图片名称, 本厂分区, 下单数, create_at, update_at', }); \ No newline at end of file diff --git a/src/renderer/src/views/shujuchuli.vue b/src/renderer/src/views/shujuchuli.vue index c0874fc..a7f65ab 100644 --- a/src/renderer/src/views/shujuchuli.vue +++ b/src/renderer/src/views/shujuchuli.vue @@ -35,12 +35,21 @@ + - + 搜索 + + + + + 导出 + @@ -69,6 +78,8 @@ import * as XLSX from 'xlsx'; import tableHeaderLocal from '../assets/json/shujuchuli.json' import { myDatabase } from '../assets/js/db.js' import dayjs from 'dayjs' +let isBetween = require('dayjs/plugin/isBetween') +dayjs.extend(isBetween) import tablecomponent from "../components/tablecomponent.vue" import formcomponent from "../components/formcomponent.vue" import { ElMessage, ElMessageBox } from 'element-plus' @@ -111,8 +122,59 @@ export default { fileOriData: null, count: 0, shujuchuliObj: { - sku: "" - } + sku: "", + time: [] + }, + shortcuts: [ + { + text: '0-24小时', + value: () => { + return [dayjs().subtract(24, 'hour'), dayjs()]; + } + }, + { + text: '24-48小时', + value: () => { + return [dayjs().subtract(48, 'hour'), dayjs().subtract(24, 'hour')]; + } + }, + { + text: '两天内', + value: () => { + return [dayjs().subtract(2, 'day'), dayjs()]; + } + }, + { + text: '一周内', + value: () => { + return [dayjs().subtract(1, 'week'), dayjs()]; + } + }, + { + text: '一月内', + value: () => { + return [dayjs().subtract(1, 'month'), dayjs()]; + } + }, + { + text: '三月内', + value: () => { + return [dayjs().subtract(3, 'month'), dayjs()]; + } + }, + { + text: '半年内', + value: () => { + return [dayjs().subtract(6, 'month'), dayjs()]; + } + }, + { + text: '一年内', + value: () => { + return [dayjs().subtract(1, 'year'), dayjs()]; + } + } + ], } }, methods: { @@ -154,10 +216,13 @@ export default { async updateSeach() { this.loading = true let collection = myDatabase.shujuchuli - if (this.shujuchuliObj.sku) { + if (_.isEmpty(_.trim(this.shujuchuliObj.sku))) { let reg = new RegExp(this.shujuchuliObj.sku, "i") collection = collection.filter((equip) => reg.test(equip.SKU)) } + if (!_.isEmpty(this.shujuchuliObj.time)) { + collection = collection.filter((equip) => dayjs(equip.create_at).isBetween(this.shujuchuliObj.time[0], this.shujuchuliObj.time[1], null, '[)')) + } this.pageVO.total = await collection.count() this.tableData = await collection.offset((this.pageVO.currentPage - 1) * this.pageVO.pageSize).limit(this.pageVO.pageSize).toArray() if (this.pageVO.total > this.pageVO.pageSizes[3]) { @@ -222,8 +287,10 @@ export default { "颜色代码": ziliaoItem["颜色"], "图片名称": `${ziliaoItem["货号"]}.jpg`, "国际码": ziliaoItem["国标码"], - "数量": `${valueLength}`, + "数量": `${1}`, + "总数量": `${valueLength}`, "下单数": ``, + "uniqyKey": `${element["唯一码"]}${element["防伪码"]}`, create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'), update_at: dayjs().format('YYYY-MM-DD HH:mm:ss') } @@ -362,6 +429,64 @@ export default { }) }) }, + // 导出数据 + async exportData() { + let collection = myDatabase.shujuchuli + if (_.isEmpty(_.trim(this.shujuchuliObj.sku))) { + let reg = new RegExp(this.shujuchuliObj.sku, "i") + collection = collection.filter((equip) => reg.test(equip.SKU)) + } + if (!_.isEmpty(this.shujuchuliObj.time)) { + collection = collection.filter((equip) => dayjs(equip.create_at).isBetween(this.shujuchuliObj.time[0], this.shujuchuliObj.time[1], null, '[)')) + } + let listCopy = await collection.toArray() + let groupByData = _.groupBy(listCopy, "货号") + let workBook = { + SheetNames: [], + Sheets: {} + } + if (listCopy.length) { + for (let key in groupByData) { + let list = [] + let value = groupByData[key] + for (let i = 0; i < value.length; i++) { + let element = value[i]; + list.push({ + 唯一码: element["唯一码"], + 防伪码: element["防伪码"], + 品名: element["品名"], + 货号: element["货号"], + 颜色: element["颜色"], + 颜色代码: element["颜色代码"], + 尺码1: element["尺码1"], + 型号: element["型号"], + 尺码2: element["尺码2"], + 尺码代码: element["尺码代码"], + SKU: element["SKU"], + 零售价: element["零售价"], + 等级: element["等级"], + 鞋面材料: element["鞋面材料"], + 执行标准: element["执行标准"], + 国际码: element["国际码"], + 数量: element["数量"], + 图片名称: element["图片名称"], + "": element["总数量"], + 本厂分区: element["本厂分区"], + 下单数: element["下单数"], + }) + } + let jsonWorkSheet = XLSX.utils.json_to_sheet(list) + workBook.SheetNames.push(key) + workBook.Sheets[key] = jsonWorkSheet + } + XLSX.writeFile(workBook, `生成表格${dayjs().format("YYYY-MM-DD_HH-mm-ss")}.xls`) + } else { + ElMessage({ + type: 'error', + message: '当前表格无数据,请有数据后在导出', + }) + } + }, }, async mounted() { this.tableHeader = _.filter(tableHeaderLocal, o => o.tableShow)