From dbb30331f9fb339a099a438b2d3c6d8b99b55d23 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 20 一月 2025 18:01:09 +0800
Subject: [PATCH] #打印预览

---
 zy-asrs-admin/src/views/out/flat/index.vue |  189 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 148 insertions(+), 41 deletions(-)

diff --git a/zy-asrs-admin/src/views/out/flat/index.vue b/zy-asrs-admin/src/views/out/flat/index.vue
index 4ccc2a1..d556efe 100644
--- a/zy-asrs-admin/src/views/out/flat/index.vue
+++ b/zy-asrs-admin/src/views/out/flat/index.vue
@@ -1,59 +1,115 @@
 <template>
-    <a-table :columns="columns" :data-source="datasource" bordered>
+    <div class="table-header">
+        <div style="display: flex;padding: 10px;">
+            <div style="margin-right: 10px;">
+                <a-input v-model:value="searchParam.pickNo"
+                         placeholder="璇疯緭鎷h揣鍗曠紪鍙�"
+                         style="width: 200px;margin-right: 10px;"/>
+                <a-input v-model:value="searchParam.waveNo" placeholder="璇疯緭鍏ユ尝娆″彿"
+                                style="width: 200px;" />
+                <a-button @click="queryPickSheets" type="primary" style="margin-left: 35px">鏌ヨ</a-button>
+            </div>
+        </div>
+
+    </div>
+    <a-table :columns="columns"
+             :data-source="datasource" bordered
+             :defaultExpandAllRows="false"
+             :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
+             :scroll="{y: columns.length * 140}"
+             style="margin: 5px"
+    >
         <template #bodyCell="{column, record, index}">
             <template v-if="column.key === 'number'">
-                {{index + 1}}
+                {{ index + 1 }}
             </template>
             <template v-if="column.key === 'operate'">
-                <a-button @click="viewDetail(column)" type="link">
+                <a-button @click="viewDetail(column, record)" type="link">
                     {{ "鏌ョ湅鏄庣粏" }}
                 </a-button>
-                <a-button @click="showDeleteConfirm(record)" danger type="link">{{"鍒犻櫎"}}</a-button>
+                <a-button @click="handlePrint(column, record)" type="link">鎵撳嵃</a-button>
+                <a-button @click="showDeleteConfirm(record)" danger type="link">{{ "鍒犻櫎" }}</a-button>
             </template>
             <template v-if="column.key === 'status'">
-               <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
-                   {{record.status === 1 ? "姝e父" : "绂佺敤"}}
-               </a-tag>
+                <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
+                    {{ record.status === 1 ? "姝e父" : "绂佺敤" }}
+                </a-tag>
             </template>
         </template>
     </a-table>
-    <a-modal ref="sheetDetl" v-model:open="show" :width="'80%'" title="鎷h揣鍗曟槑缁�" @ok="handleOk">
-        <a-table :columns="childNodes" :data-source="childList">
-            <template #bodyCell="{column, record, index}">
-                <template v-if="column.key === 'number'">
-                    {{index + 1}}
+    <a-modal ref="sheetDetl" v-model:open="show" :width="'80%'" title="鎷h揣鍗曟槑缁�" @ok="handleOk" @cancel="cancel"
+             :okText="isPrint ? '鎵撳嵃' : '纭'" cancel-text="鍏抽棴">
+        <div id="pcik-detl">
+            <div class="component-header">
+                <div>
+                    <h3>
+                        鎷h揣鍗曞彿锛歿{ selectDetl.pickNo }}
+                    </h3>
+                    <h3>
+                        娉㈡锛歿{ selectDetl.waveNo }}
+                    </h3>
+                </div>
+                <div class="qrcode">
+                    <a-qrcode :value="selectDetl.pickNo" :size="100" :bordered="false"/>
+                </div>
+            </div>
+            <a-table :columns="childNodes"
+                     :data-source="childList"
+                     bordered
+                     :pagination="{hideOnSinglePage: true}"
+            >
+                <template #bodyCell="{column, record, index}">
+                    <template v-if="column.key === 'number'">
+                        {{ index + 1 }}
+                    </template>
+                    <template v-if="column.key === 'status'">
+                        <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
+                            {{ record.status === 1 ? "姝e父" : "绂佺敤" }}
+                        </a-tag>
+                    </template>
                 </template>
-                <template v-if="column.key === 'status'">
-                    <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
-                        {{record.status === 1 ? "姝e父" : "绂佺敤"}}
-                    </a-tag>
-                </template>
-            </template>
-        </a-table>
+            </a-table>
+        </div>
     </a-modal>
 </template>
 
 <script>
     import {post, get} from "@/utils/request.js";
     import {message, Modal} from "ant-design-vue";
-    import { createVNode } from 'vue';
-    import {formatMessage} from "@/utils/localeUtils.js";
-    import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
+    import {createVNode} from 'vue';
+    import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
+    import printJS from 'print-js'
+
 
     export default {
         name: "out-stock-flat",
         data() {
             return {
+                searchParam: {
+                    pickNo: '',
+                    waveNo:''
+                },
+                state: {
+                    selectedRowKeys: []
+                },
+                searchInput: '',
                 columns: [
-                    {key: 'number', title: '搴忓彿', dataIndex: 'number'},
-                    {key: 'pickNo', title: '鍗曞彿', dataIndex: 'pickNo'},
-                    {key: 'waveNo', title: '娉㈡鍙�', dataIndex: 'waveNo'},
-                    {key: 'anfme', title: '鏁伴噺', dataIndex: 'anfme'},
-                    {key: 'status', title: '鍗曟嵁鐘舵��', dataIndex: 'status'},
-                    {key: 'memo', title: '澶囨敞', dataIndex: ''},
-                    {key: 'createdTime', title: '鍒涘缓鏃堕棿', dataIndex: 'createdTime'},
-                    {key: 'updatedTime', title: '淇敼鏃堕棿', dataIndex: 'updatedTime'},
-                    {key: 'operate', title: '鎿嶄綔', dataIndex: 'operate'}
+                    {key: 'number', title: '搴忓彿', dataIndex: 'number', align: 'center', width: '65px'},
+                    {key: 'pickNo', title: '鍗曞彿', dataIndex: 'pickNo', align: 'center', width: '205px'},
+                    {key: 'waveNo', title: '娉㈡鍙�', dataIndex: 'waveNo', align: 'center', width: '155px'},
+                    {key: 'anfme', title: '鏁伴噺', dataIndex: 'anfme', align: 'center', width: '85px'},
+                    {key: 'status', title: '鍗曟嵁鐘舵��', dataIndex: 'status', align: 'center', width: '105px'},
+                    {key: 'createdTime', title: '鍒涘缓鏃堕棿', dataIndex: 'createdTime', align: 'center', width: '185px'},
+                    {key: 'updatedTime', title: '淇敼鏃堕棿', dataIndex: 'updatedTime', align: 'center', width: '185px'},
+                    {key: 'memo', title: '澶囨敞', dataIndex: '', align: 'center'},
+                    {
+                        key: 'operate',
+                        title: '鎿嶄綔',
+                        dataIndex: 'operate',
+                        fixed: 'right',
+                        align: 'center',
+                        width: '155px'
+                    }
                 ],
                 childNodes: [
                     {key: 'number', title: '搴忓彿', dataIndex: 'number'},
@@ -68,19 +124,53 @@
                     // {key: 'operate', title: '鎿嶄綔', dataIndex: 'operate'}
                 ],
                 datasource: [],
-                childList:[],
+                childList: [],
                 show: false,
+                isPrint: false,
+                selectDetl: {},
             }
         },
-
         mounted() {
             //鑾峰彇鎷h揣鍗曟暟鎹簮
             this.getOutFlatSheet();
         },
 
         methods: {
-             showDeleteConfirm(record){
-                 let that = this
+            queryPickSheets() {
+              this.getOutFlatSheet()
+            },
+
+            handleOk() {
+                if (this.isPrint) {
+                    printJS('pcik-detl', 'html')
+                }
+            },
+
+            cancel() {
+                this.isPrint = false
+            },
+            onSelectChange(selectedRowKeys) {
+                state.selectedRowKeys = selectedRowKeys;
+
+            },
+            /**
+             * 鎵撳嵃
+             */
+            handlePrint(column, record) {
+                this.show = true
+                this.isPrint = true
+                this.selectDetl = record
+                this.getSheetDetl(record)
+            },
+            /**
+             * 鎼滅储
+             */
+            onSearch() {
+                console.log(this)
+            },
+
+            showDeleteConfirm(record) {
+                let that = this
                 Modal.confirm({
                     title: '鏄惁纭鍒犻櫎褰撳墠鎷h揣鍗�',
                     icon: createVNode(ExclamationCircleOutlined),
@@ -100,7 +190,7 @@
             //鍒犻櫎褰撳墠琛�
             removeRow(record) {
                 let that = this
-                get('/api/pick/flat/remove/' + record.id).then((resp)=>{
+                get('/api/pick/flat/remove/' + record.id).then((resp) => {
                     let result = resp.data;
                     if (result.code == 200) {
                         that.getOutFlatSheet()
@@ -111,14 +201,15 @@
                 })
             },
             //鏌ョ湅鏄庣粏
-            viewDetail(record) {
-                console.log(record)
+            viewDetail(column, record) {
                 this.show = !this.show
+                this.isPrint = false
+                this.selectDetl = record
                 this.getSheetDetl(record)
             },
             getOutFlatSheet() {
                 let that = this
-                post('/api/pick/flat/page',{page: {currnt: 1, size: 10}}).then((resp) => {
+                post('/api/pick/flat/page', {page: {currnt: 1, size: 10},  params: {pickNo: this.searchParam.pickNo, waveNo: this.searchParam.waveNo}}).then((resp) => {
                     let result = resp.data;
                     if (result.code == 200) {
                         // message.success(formatMessage('page.add.success', '鎴愬姛'));
@@ -129,8 +220,11 @@
                 })
             },
             getSheetDetl(record) {
-              let that = this
-                post('/api/pick/flat/detl/page',{page: {currnt: 1, size: 10}, params: {pickId: record.id}}).then((resp) => {
+                let that = this
+                post('/api/pick/flat/detl/page', {
+                    page: {currnt: 1, size: 10},
+                    params: {pickId: record.id}
+                }).then((resp) => {
                     let result = resp.data;
                     if (result.code == 200) {
                         // message.success(formatMessage('page.add.success', '鎴愬姛'));
@@ -145,5 +239,18 @@
 </script>
 
 <style scoped>
+    .component-header {
+        display: flex;
+    }
 
+    .component-header > div {
+        flex: 1;
+    }
+
+
+    .qrcode {
+        display: flex;
+        justify-content: flex-end;
+        margin-right: 30px;
+    }
 </style>
\ No newline at end of file

--
Gitblit v1.9.1