From 1ea0d85b0fe2e7e4427fd484a9342d964c831b3d Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Wed, 06 Aug 2025 15:15:00 +0800
Subject: [PATCH] 修改
---
src/utils/request.js | 1
src/views/hazardousChemicals/warehouseManage/components/productTable.vue | 33 ++
src/views/hazardousChemicals/useCount/index.vue | 148 ++++++++++++
package.json | 1
src/views/hazardousChemicals/warehouseManage/components/rawTable.vue | 32 ++
src/views/hazardousChemicals/warehouseManage/components/printCodeMore.vue | 480 ++++++++++++++++++++++++++++++++++++++++
src/views/hazardousChemicals/warehouseManage/components/printCode.vue | 10
7 files changed, 695 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index 4c8d0be..e4b41c8 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"nprogress": "0.2.0",
"pinia": "2.0.22",
"print-js": "^1.6.0",
+ "qrcode": "^1.5.4",
"quill": "^2.0.0-dev.3",
"spark-md5": "^3.0.2",
"tinymce": "^5.10.2",
diff --git a/src/utils/request.js b/src/utils/request.js
index a61bfa7..75c6ac2 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -15,6 +15,7 @@
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
+
baseURL: import.meta.env.VITE_APP_BASE_API,
// 超时
timeout: 180000
diff --git a/src/views/hazardousChemicals/useCount/index.vue b/src/views/hazardousChemicals/useCount/index.vue
index 434bb8b..97907eb 100644
--- a/src/views/hazardousChemicals/useCount/index.vue
+++ b/src/views/hazardousChemicals/useCount/index.vue
@@ -12,6 +12,39 @@
format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
+ <el-form-item label="所属部门:" prop="departId" >
+ <el-cascader
+ style="width: 100%"
+ ref="classifyRef"
+ v-model="state.tableData.listQuery.departId"
+ :options="state.deptList"
+ :props="state.props"
+ clearable
+ :show-all-levels="false"
+ @change="handleChange"
+ />
+ </el-form-item>
+ <el-form-item label="人员:" prop="userId" >
+ <el-select
+ clearable
+ v-model="state.tableData.userName"
+ filterable
+ remote
+ @change="selectValue"
+ reserve-keyword
+ placeholder="请输入人员名称"
+ remote-show-suffix
+ :remote-method="getPeopleList"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in state.peopleList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.name"
+ />
+ </el-select>
+ </el-form-item>
<el-form-item >
<el-button
plain
@@ -67,7 +100,10 @@
import moment from "moment";
import axios from "axios";
import {getToken} from "@/utils/auth";
-
+import {getDept} from "@/api/hazardousChemicals/deptment";
+import Cookies from "js-cookie";
+import {getUser} from "@/api/hazardousChemicals/user";
+const classifyRef = ref(null)
const loading = ref(false)
const state = reactive({
tableData: {
@@ -80,9 +116,19 @@
startTime: null,
endTime: null,
time: [],
+ userId: null,
+ departId: null,
},
excelName: ''
},
+ deptList: [],
+ peopleList: [],
+ props: {
+ checkStrictly: true,
+ },
+ userType: null,
+ companyId: null,
+ isAdmin: false
});
const fields = ref({
'名称':'hazmatBasic.name',
@@ -94,11 +140,23 @@
'最小包装': 'minPack',
'用量':'count',
});
-
+const userInfo = ref()
onMounted(
() => {
+ userInfo.value = JSON.parse(Cookies.get('userInfo'))
+ console.log("userInfo",userInfo.value)
+ state.userType = userInfo.value.userType
+ if(userInfo.value.userType === 0){
+ state.isAdmin = true;
+ }else {
+ state.isAdmin = false;
+ state.companyId = userInfo.value.companyId;
+ state.userType = 2
+ }
getNowTime();
getList()
+ getDeptList()
+ getPeopleList("")
}
);
const getNowTime = () => {
@@ -109,7 +167,17 @@
eTime = `${eTime} ` + moment().format('HH:mm:ss')
state.tableData.listQuery.time = [sTime ,eTime];
}
+const handleChange = ()=> {
+ if(classifyRef.value.getCheckedNodes().length>0){
+ state.tableData.listQuery.departId = classifyRef.value.getCheckedNodes()[0].value
+ if (classifyRef.value.popperVisible) {
+ classifyRef.value.togglePopperVisible()
+ }
+ }else{
+ state.tableData.listQuery.departId = null
+ }
+}
const getList = async () => {
loading.value = true
state.tableData.listQuery.startTime = state.tableData.listQuery.time[0]
@@ -129,6 +197,38 @@
ElMessage.warning(res.message)
}
loading.value = false
+}
+const getDeptList = async ()=>{
+ const param = {
+ companyId: state.companyId
+ }
+ const res = await getDept(param)
+ if (res.code == 200) {
+ state.deptList = recursion(res.data)
+ } else {
+ ElMessage.warning(res.message)
+ }
+}
+const recursion = (data) => {
+ let tmp = []
+ for (let i = 0; i < data.length; i++) {
+ let item = data[i]
+ // children为空
+ if (item.children&& item.children.length==0) {
+ tmp.push({
+ value: item.id,
+ label: item.name
+ })
+ // 有children
+ } else {
+ tmp.push({
+ value: item.id,
+ label: item.name,
+ children:recursion(item.children)
+ })
+ }
+ }
+ return tmp;
}
const downloadExcel = async() => {
@@ -180,7 +280,51 @@
// }
}
+const getPeopleList = async (val)=>{
+ if(val != ""){
+ const queryParams = {
+ name: val
+ }
+ const res = await getUser(queryParams)
+ if (res.code == 200) {
+ state.peopleList = res.data.list
+ } else {
+ ElMessage.warning(res.message)
+ }
+ }else {
+ const queryParams = {
+ pageNum: 1,
+ pageSize: 10
+ }
+ const res = await getUser(queryParams)
+ if (res.code == 200) {
+ state.peopleList = res.data.list
+ } else {
+ ElMessage.warning(res.message)
+ }
+ }
+}
+const selectValue = (val) => {
+ if(!val){
+ state.tableData.listQuery.userId = null
+ }
+ state.peopleList.forEach(item => {
+ if(item.name === val){
+ state.tableData.listQuery.userId = item.id
+ }
+ })
+}
const reset = () => {
+ state.tableData.listQuery= {
+ pageNum: 1,
+ pageSize: 10,
+ startTime: null,
+ endTime: null,
+ time: [],
+ userId: null,
+ departId: null,
+ }
+ state.tableData.userName = ''
getNowTime();
getList();
}
diff --git a/src/views/hazardousChemicals/warehouseManage/components/printCode.vue b/src/views/hazardousChemicals/warehouseManage/components/printCode.vue
index 9cdf7cc..9dd2d14 100644
--- a/src/views/hazardousChemicals/warehouseManage/components/printCode.vue
+++ b/src/views/hazardousChemicals/warehouseManage/components/printCode.vue
@@ -97,8 +97,7 @@
// state.queryParams.basicId =value.basicId
state.queryParams.entryId = value.id
title.value = type;
- await getList()
-
+ await reset()
console.log('state.dataList',state.dataList)
dialogVisible.value = true;
}
@@ -116,20 +115,21 @@
}
const handleClose = () => {
- reset();
+
dialogVisible.value = false;
emit("getList")
}
-const reset = () => {
+const reset = async () => {
state.dataList = [];
state.queryParams = {
pageNum: 1,
pageSize: 5,
- entryId: null,
+ entryId: state.queryParams.entryId,
code: ''
}
state.total = 0
state.chooseList = []
+ await getList()
}
const getList = async () => {
if(title.value == 'pro'){
diff --git a/src/views/hazardousChemicals/warehouseManage/components/printCodeMore.vue b/src/views/hazardousChemicals/warehouseManage/components/printCodeMore.vue
new file mode 100644
index 0000000..623ca15
--- /dev/null
+++ b/src/views/hazardousChemicals/warehouseManage/components/printCodeMore.vue
@@ -0,0 +1,480 @@
+<template>
+ <div class="notice">
+ <el-dialog
+ v-model="dialogVisible"
+ :title="title == 'pro' ? '成品二维码打印' : '危化品二维码打印'"
+ width="800px"
+ :before-close="handleClose"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ >
+ <div style="display: flex;justify-content: space-between">
+ <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
+ <el-form-item label="条码编号:" >
+ <el-input v-model="state.queryParams.code" placeholder="请输入条码编号" ></el-input>
+ </el-form-item>
+ <el-form-item >
+ <el-button
+ type="primary"
+ @click="getList"
+ >查询</el-button>
+ <el-button
+ type="primary"
+ plain
+ @click="reset"
+ >重置</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div style="display: flex;flex-wrap: wrap">
+ <div v-for="item in state.dataList">
+ <div :id="item.code" style="width: 50mm;height: 40mm;">
+ <div style="display: flex;flex-direction: column;align-items: center;margin-bottom: 5px">
+ <div style="font-size:14px;margin-bottom: 2px" id="codeTitle">{{item.name}}—{{item.productSn}}</div>
+ <vue-qr :size="100" :correctLevel="3" colorDark="black" :margin="0" :auto-color="true" :text="item.code"></vue-qr>
+ <div style="font-size:10px;margin-top: 2px">{{item.code}}</div>
+ <div class="page-break"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- 打印模板-->
+ <!-- <div style="display: none">-->
+ <!-- <div ref="printTemplate" class="print-template">-->
+ <!-- <div v-for="(item, index) in state.dataList" :key="'print-'+index" class="print-label">-->
+ <!-- <div class="label-content">-->
+ <!-- <div class="label-title">{{ item.name }}—{{ item.productSn }}</div>-->
+ <!-- <!– 确保二维码使用原始数据而不是DOM引用 –>-->
+ <!-- <vue-qr-->
+ <!-- :size="100"-->
+ <!-- :correctLevel="3"-->
+ <!-- colorDark="black"-->
+ <!-- :margin="2"-->
+ <!-- :auto-color="true"-->
+ <!-- :text="item.code">-->
+ <!-- </vue-qr>-->
+ <!-- <div class="label-code">{{ item.code }}</div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+
+
+ <!-- <el-table v-loading="state.loading" :data="state.dataList" :border="true" :show-header="false" height="550" @selection-change="handleSelectionChange">-->
+ <!-- <el-table-column type="selection" width="55" align="center" />-->
+ <!-- <el-table-column >-->
+ <!-- <template #default="scope">-->
+ <!-- <div :id="scope.row.code">-->
+ <!-- <div style="width: 50mm;height: 40mm; ">-->
+ <!-- <div style="font-size:14px;margin-bottom: 2px" id="codeTitle">{{scope.row.name}}—{{scope.row.productSn}}</div>-->
+ <!-- <vue-qr :size="100" :correctLevel="3" colorDark="black" :margin="0" :auto-color="true" :text="scope.row.code"></vue-qr>-->
+ <!-- <div style="font-size:10px;margin-top: 2px">{{scope.row.code}}</div>-->
+ <!-- <div class="page-break"></div>-->
+ <!-- </div>-->
+ <!-- </div>-->
+ <!-- </template>-->
+ <!-- </el-table-column>-->
+ <!-- </el-table>-->
+ <pagination
+ v-model:pager-count="pageCount"
+ v-show="state.total > 0"
+ :total="state.total"
+ :page-sizes="[28,56,84,100]"
+ v-model:page="state.queryParams.pageNum"
+ v-model:limit="state.queryParams.pageSize"
+ @pagination="getList"
+ />
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="handleClose" size="default">取 消</el-button>
+ <el-button type="primary" @click="printLabels" size="default" v-preReClick>打印</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+<script setup>
+import {reactive, ref, toRefs} from 'vue'
+import VueQr from 'vue-qr/src/packages/vue-qr.vue'
+import {ElMessage} from "element-plus";
+import printJS from 'print-js';
+import QRCode from 'qrcode';
+import {addWarehouse, checkName, editWarehouse} from "@/api/hazardousChemicals/warehouse";
+import {verifyPhone} from "@/utils/validate";
+import {checkBasicName} from "@/api/hazardousChemicals/basicInfo";
+import {getProDetail, getProductRecord, getWhProDetail} from "@/api/hazardousChemicals/productRecord";
+import {getRawDetail, getWhRawDetail} from "@/api/hazardousChemicals/rawRecord";
+
+const dialogVisible = ref(false);
+const title = ref("");
+const busRef = ref();
+const length = ref()
+const emit = defineEmits(["getList"]);
+
+const state = reactive({
+ loading: false,
+ dataList: [],
+ total: 0,
+ queryParams:{
+ pageNum: 1,
+ pageSize: 28,
+ // warehouseId: null,
+ // basicId: null,
+ entryId: null,
+ code: ''
+ },
+ chooseList: []
+
+})
+const pageCount = ref(3)
+const originalList = ref([])
+const openDialog = async (type,value) => {
+ // state.queryParams.warehouseId =value.warehouseId
+ // state.queryParams.basicId =value.basicId
+ state.queryParams.entryId = value.id
+ title.value = type;
+ await reset()
+
+ console.log('state.dataList',state.dataList)
+ dialogVisible.value = true;
+}
+const getRowKey = (row) => {
+ return row.id
+}
+
+const onSubmit = async () => {
+
+}
+const handleSelectionChange = (val) => {
+ // state.form.studentIds = val.map(item => item.id)
+ state.chooseList = val
+ console.log("选中的行", val)
+}
+
+const handleClose = () => {
+ dialogVisible.value = false;
+ emit("getList")
+}
+const reset = async () => {
+ state.dataList = [];
+ state.queryParams = {
+ pageNum: 1,
+ pageSize: 28,
+ entryId: state.queryParams.entryId,
+ code: ''
+ }
+ state.total = 0
+ state.chooseList = []
+ await getList()
+}
+const getList = async () => {
+ if(title.value == 'pro'){
+ const res = await getWhProDetail(state.queryParams)
+ if(res.code == 200){
+ state.dataList = res.data.list.map(item => {
+ return{
+ ...item,
+ name: item.productBasic.name,
+ productSn: item.productBasic.productSn
+ }
+ })
+ state.total = res.data.total
+ originalList.value = state.dataList
+ }else{
+ ElMessage.warning(res.message)
+ }
+ }else {
+ const res = await getWhRawDetail(state.queryParams)
+ if(res.code == 200){
+ state.dataList = res.data.list.map(item => {
+ return{
+ ...item,
+ name: item.hazmatBasic.name,
+ productSn: item.hazmatBasic.productSn
+ }
+ })
+ state.total = res.data.total
+ originalList.value = state.dataList
+ }else{
+ ElMessage.warning(res.message)
+ }
+ }
+
+
+
+}
+const printLabels = async () => {
+ const existingContainer = document.getElementById('print-container');
+ if (existingContainer) {
+ existingContainer.remove();
+ }
+ // 创建打印容器
+ const printContainer = document.createElement('div');
+ printContainer.id = 'print-container';
+ // 添加内联样式
+ const style = document.createElement('style');
+ style.textContent = `
+ .print-container {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 9999;
+ background: white;
+ }
+ .print-page {
+ width: 210mm;
+ height: 297mm;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+ padding: 3mm 5mm; /* 考虑打印机物理边距 */
+ box-sizing: border-box;
+ page-break-after: always;
+ }
+ /* 标签容器 - 保证每个标签独立且尺寸固定 */
+ .print-label {
+ width: 50mm; /* 4列布局 (210mm / 4) */
+ max-height: 40mm;
+ height: 40mm; /* 7行布局 (297mm / 7) */
+ box-sizing: border-box;
+ padding: 1mm;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between; /* 上方空间给标题,中间二维码,底部给编码 */
+ align-items: center;
+ page-break-inside: avoid; /* 防止分页中断标签 */
+ break-inside: avoid;
+ margin-bottom:7px;
+ }
+ .label-title {
+ font-size: 3.5mm;
+ font-weight: bold;
+ color: black;
+ text-align:center;
+ /* 强制单行 + 截断 */
+ // white-space: nowrap;
+ // overflow: hidden;
+ // text-overflow: ellipsis;
+ /* 行高控制 */
+ line-height: 1;
+ min-height: 2.2mm;
+ /* 宽度控制 */
+ width: 100%;
+ max-width: 100%;
+ /* 防止 flex/grid 父级影响 */
+ flex: none;
+ }
+ /* 二维码容器 - 增大二维码尺寸 */
+ .qr-container {
+ flex-grow: 1; /* 占据可用空间 */
+ width: 100%;
+ max-height: 35mm; /* 增大二维码区高度 */
+ min-height: 35mm;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ overflow: hidden;
+ margin-top: -5px
+ }
+ .qrcode-img {
+ max-width: 25mm !important; /* 增大二维码尺寸 */
+ max-height: 25mm !important;
+ object-fit: contain;
+ margin-top: 0px
+ }
+
+ .label-code {
+ margin-top: -15px;
+
+ font-size: 3mm; /* ≈8.5px */
+ text-align: center;
+ width: 100%;
+ box-sizing: border-box;
+
+
+ /* 超长编码处理 */
+ -webkit-line-clamp: 0 !important; /* 解除2行限制 */
+ max-height: none !important;
+ white-space: normal !important;
+ padding: 0.5mm 0; /* 增加纵向空间 */
+ line-height: 0.5; /* 增大行高 */
+ min-height: 1.5mm; /* 确保最小显示区域 */
+ }
+ @media print {
+ body { margin: 0 !important; }
+ @page { margin: 0; size: auto; }
+ }
+ `;
+
+ printContainer.appendChild(style);
+
+ // 添加打印容器到DOM
+ document.body.appendChild(printContainer);
+
+ // 分页处理并生成二维码
+ const pageCount = Math.ceil(state.dataList.length / 28);
+ const qrPromises = []; // 存储所有二维码生成Promise
+
+ for (let pageIndex = 0; pageIndex < pageCount; pageIndex++) {
+ const pageDiv = document.createElement('div');
+ pageDiv.className = 'print-page';
+
+ const startIndex = pageIndex * 28;
+ const endIndex = Math.min(startIndex + 28, state.dataList.length);
+
+ for (let i = startIndex; i < endIndex; i++) {
+ const item = state.dataList[i];
+ const labelDiv = document.createElement('div');
+ labelDiv.className = 'print-label';
+
+ // 二维码容器
+ const qrContainer = document.createElement('div');
+ qrContainer.className = 'qr-container';
+
+ // 创建二维码Canvas
+ const canvasId = `canvas-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
+ const qrCanvas = document.createElement('canvas');
+ qrCanvas.id = canvasId;
+ qrCanvas.className = 'qrcode-img';
+ qrContainer.appendChild(qrCanvas);
+
+ // 文本内容
+ const titleDiv = document.createElement('div');
+ titleDiv.className = 'label-title';
+ titleDiv.textContent = `${item.name}—${item.productSn}`;
+
+ const codeDiv = document.createElement('div');
+ codeDiv.className = 'label-code';
+ codeDiv.textContent = item.code;
+
+ // 组装标签
+ labelDiv.appendChild(titleDiv);
+ labelDiv.appendChild(qrContainer);
+ labelDiv.appendChild(codeDiv);
+ pageDiv.appendChild(labelDiv);
+
+ // 添加到打印容器
+ labelDiv.style.opacity = '0'; // 初始隐藏防止闪烁
+
+ // 创建二维码生成Promise
+ qrPromises.push(new Promise(resolve => {
+ // 使用requestAnimationFrame处理渲染队列
+ requestAnimationFrame(() => {
+ generateDynamicQRCode(item.code, canvasId).then(resolve);
+ });
+ }));
+ }
+ printContainer.appendChild(pageDiv);
+ }
+
+ try {
+ // 关键修改1:隔离打印环境
+ const printSandbox = document.createElement('div');
+ printSandbox.style.position = 'fixed';
+ printSandbox.style.left = '-9999px';
+ document.body.appendChild(printSandbox);
+ printSandbox.appendChild(printContainer); // 移入沙箱
+ // 显示加载提示
+ const loadingIndicator = document.createElement('div');
+ loadingIndicator.style = `
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background: rgba(0,0,0,0.7);
+ color: white;
+ padding: 20px;
+ border-radius: 5px;
+ z-index: 10000;
+ `;
+ loadingIndicator.textContent = '正在生成二维码,请稍候...';
+ document.body.appendChild(loadingIndicator);
+
+ // 等待所有二维码生成完成
+ await Promise.all(qrPromises);
+
+ // 二维码生成完成后显示所有标签
+ printContainer.querySelectorAll('.print-label').forEach(el => {
+ el.style.opacity = '1';
+ });
+
+ // 添加0.5s延迟确保DOM更新
+ await new Promise(resolve => setTimeout(resolve, 1000));
+
+ // 移除加载提示
+ loadingIndicator.remove();
+
+ // 执行打印
+ printJS({
+ printable: 'print-container',
+ type: 'html',
+ scanStyles: true,
+ style: '@page { margin: 0; } body { margin: 0; }',
+ onPrintDialogClose: () => {
+ printSandbox.remove();
+ }
+ });
+ } catch (error) {
+ [loadingIndicator, printSandbox].forEach(el => {
+ el?.parentNode?.removeChild(el);
+ });
+ }
+};
+// 在生成二维码时根据文本长度自适应
+function generateDynamicQRCode(text, canvasId) {
+ return new Promise((resolve) => {
+ const canvas = document.getElementById(canvasId);
+ const container = canvas.closest('.qr-container');
+
+ // 根据文本长度确定最佳尺寸
+ const sizeBase = text.length > 40 ? 160 : 200; /* 短文本更大尺寸 */
+ const maxSize = Math.min(
+ container.clientWidth * 0.9,
+ container.clientHeight * 0.9
+ );
+
+ // 最终尺寸
+ const finalSize = Math.min(sizeBase, maxSize);
+
+ QRCode.toCanvas(canvas, text, {
+ width: finalSize,
+ margin: 0,
+ color: {
+ dark: '#000000',
+ light: '#ffffff'
+ }
+ }, () => {
+ // 生成后重新居中
+ canvas.style.margin = `${(container.clientHeight - canvas.height) / 2}px auto`;
+ resolve();
+ });
+ });
+}
+
+defineExpose({
+ openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+ :deep(.el-form .el-form-item__label) {
+ font-size: 15px;
+ }
+ :deep(.el-dialog__body) {
+ padding: 10px 20px 0 20px;
+ }
+
+ .file {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+
+}
+</style>
diff --git a/src/views/hazardousChemicals/warehouseManage/components/productTable.vue b/src/views/hazardousChemicals/warehouseManage/components/productTable.vue
index c6854c4..86f3b77 100644
--- a/src/views/hazardousChemicals/warehouseManage/components/productTable.vue
+++ b/src/views/hazardousChemicals/warehouseManage/components/productTable.vue
@@ -112,6 +112,18 @@
/>
<pro-dialog ref="dialogRef" @getList=getList></pro-dialog>
<printcode ref="codeRef" @getList=getList></printcode>
+ <printMorecodeDialog ref="codeMoreRef" @getList=getList></printMorecodeDialog>
+ <el-dialog
+ v-model="dialogVisible"
+ title="打印纸张"
+ width="350"
+ :before-close="handlePrintClose"
+ >
+ <div style="display: flex;align-items: center;justify-content: center;height: 60px">
+ <el-button type="primary" @click="openPrint('one')">单张打印</el-button>
+ <el-button type="primary" @click="openPrint('more')">28张打印</el-button>
+ </div>
+ </el-dialog>
</div>
</template>
@@ -120,6 +132,7 @@
import {ElMessage, ElMessageBox} from "element-plus";
import proDialog from "./addProDialog.vue";
import printcode from './printCode.vue'
+import printMorecodeDialog from './printCodeMore.vue'
import {delWarehouse, getCupById, getWarehouse} from "@/api/hazardousChemicals/warehouse";
import {
delProductRecord,
@@ -133,8 +146,10 @@
const loading = ref(false);
const dialogRef = ref();
const codeRef = ref();
+const codeMoreRef = ref();
const router = useRouter()
const route = useRoute()
+const dialogVisible =ref(false)
const data = reactive({
queryParams: {
pageNum: 1,
@@ -229,11 +244,14 @@
}
})
}
+const entryItem = ref()
const printCode = (val) => {
console.log("val",val)
- codeRef.value.openDialog('pro',val);
-
+ entryItem.value = val
+ dialogVisible.value = true
+ // codeRef.value.openDialog('pro',val);
}
+
const toDetail = (val) => {
const obj = {
pageNum: data.queryParams.pageNum,
@@ -279,6 +297,17 @@
ElMessage.warning(res.message)
}
}
+const handlePrintClose = () => {
+ dialogVisible.value = false
+}
+const openPrint = (type) => {
+ if(type === 'one'){
+ codeRef.value.openDialog('pro',entryItem.value);
+ }else {
+ codeMoreRef.value.openDialog('pro',entryItem.value);
+ }
+
+}
defineExpose({
getList
diff --git a/src/views/hazardousChemicals/warehouseManage/components/rawTable.vue b/src/views/hazardousChemicals/warehouseManage/components/rawTable.vue
index 348c595..7c3d5b2 100644
--- a/src/views/hazardousChemicals/warehouseManage/components/rawTable.vue
+++ b/src/views/hazardousChemicals/warehouseManage/components/rawTable.vue
@@ -116,6 +116,18 @@
<raw-dialog ref="dialogRef" @getList=getList></raw-dialog>
<printcode ref="codeRef" @getList=getList></printcode>
+ <printMorecodeDialog ref="codeMoreRef" @getList=getList></printMorecodeDialog>
+ <el-dialog
+ v-model="dialogVisible"
+ title="打印纸张"
+ width="350"
+ :before-close="handlePrintClose"
+ >
+ <div style="display: flex;align-items: center;justify-content: center;height: 60px">
+ <el-button type="primary" @click="openPrint('one')">单张打印</el-button>
+ <el-button type="primary" @click="openPrint('more')">28张打印</el-button>
+ </div>
+ </el-dialog>
</div>
</template>
@@ -124,6 +136,7 @@
import {ElMessage, ElMessageBox} from "element-plus";
import rawDialog from "./addRawDialog.vue";
import printcode from './printCode.vue'
+import printMorecodeDialog from './printCodeMore.vue'
import {delRawRecord, doEntryRaw, getRawRecord, getRawWarehouseRecord} from "@/api/hazardousChemicals/rawRecord";
import {useRoute, useRouter} from "vue-router";
import {getCupById, getWarehouse} from "@/api/hazardousChemicals/warehouse";
@@ -131,8 +144,10 @@
const loading = ref(false);
const dialogRef = ref();
const codeRef = ref();
+const codeMoreRef = ref();
const router = useRouter()
const route = useRoute()
+const dialogVisible =ref(false)
const data = reactive({
queryParams: {
pageNum: 1,
@@ -230,9 +245,21 @@
})
}
+const entryItem = ref()
const printCode = (val) => {
console.log("val",val)
- codeRef.value.openDialog('raw',val);
+ entryItem.value = val
+ dialogVisible.value = true
+
+ // codeRef.value.openDialog('raw',val);
+
+}
+const openPrint = (type) => {
+ if(type === 'one'){
+ codeRef.value.openDialog('raw',entryItem.value);
+ }else {
+ codeMoreRef.value.openDialog('raw',entryItem.value);
+ }
}
const toDetail = (val) => {
@@ -281,6 +308,9 @@
ElMessage.warning(res.message)
}
}
+const handlePrintClose = () => {
+ dialogVisible.value = false
+}
defineExpose({
getList
--
Gitblit v1.9.2