| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676 |
- /** * 存货打印 */
- <template>
- <div class="container-fluid">
- <Navbar title="标签打印" :is-go-back="false" />
- <div class="flex-container" style="margin-top: 10px">
- <div class="flex-header">
- <div>
- <div class="form-inline" role="form">
- <PrintWidget
- ref="printWidget"
- :printer-localstorage-id="'#InventoryPrinterPrinter'"
- @selected-printer-name="getPrintName"
- />
- <div class="form-group">
- <input
- v-model="message"
- autocomplete="off"
- type="text"
- class="form-control"
- placeholder="请输入要打印存货的名称或编码"
- aria-describedby="basic-addon"
- style="width: 350px"
- @keyup.enter="queryInventory"
- />
- </div>
- <div class="form-group">
- <button class="btn btn-default" @click="queryInventory">查询</button>
- <button class="btn btn-default" @click="$refs.printEpc.show()">
- 再次打印
- </button>
- </div>
- </div>
- </div>
- </div>
- <div class="flex-content" style="margin-top: 10px">
- <table class="fixed-table table-striped table-bordered">
- <thead>
- <tr>
- <th style="width: 50px">序号</th>
- <th style="width: 50px">图片</th>
- <th style="width: 150px">存货名称</th>
- <th style="width: 150px">存货编号</th>
- <th style="width: 150px">规格型号</th>
- <th style="width: 60px">计量单位</th>
- <th style="width: 60px">采购订单编号</th>
- <th style="width: 100px">批号</th>
- <th style="width: 80px">标签个数</th>
- <th style="width: 80px">标签代表数量</th>
- <th style="width: 150px">供应商</th>
- <th style="width: 150px">放置货位</th>
- <th style="width: 60px">
- <button
- type="button"
- class="btn btn-default"
- style="width: 100%"
- @click="generateAllPack()"
- >
- 打印
- </button>
- </th>
- <th style="width: 100px">
- <button
- type="button"
- class="btn btn-default"
- style="width: 100%"
- @click="generateAllRepeatPack()"
- >
- 重复打印全部
- </button>
- </th>
- </tr>
- </thead>
- <tbody class="table1">
- <tr v-for="(inventoryInstance, index) in inventoryInstanceDatas" :key="inventoryInstance.id">
- <td>
- {{
- index +
- 1 +
- (pagination.current_page - 1) * pagination.per_page
- }}
- </td>
- <td>
- <img
- :src="
- Common.getThumbnailImageSrc(className, inventoryInstance.imageNames)
- "
- class="image"
- @click="
- $refs.imagePreview.preview(className, inventoryInstance.imageNames)
- "
- />
- </td>
- <td>
- {{ inventoryInstance.inventoryName }}
- </td>
- <td>
- {{ inventoryInstance.inventoryCode }}
- </td>
- <td>
- {{ inventoryInstance.type }}
- </td>
- <td>
- {{ inventoryInstance.computationUnit }}
- </td>
- <td>
- <input
- v-model="inventoryInstance.purchaseOrderNo"
- autocomplete="off"
- type="text"
- class="form-control"
- style="width: 100%"
- />
- </td>
- <td>
- <input
- v-model="inventoryInstance.batchNo"
- autocomplete="off"
- type="text"
- class="form-control"
- style="width: 100%"
- />
- </td>
- <td>
- <input
- v-model="inventoryInstance.packageCount"
- autocomplete="off"
- type="number"
- class="form-control"
- style="width: 100%"
- />
- </td>
- <td>
- <input
- v-model="inventoryInstance.quantity"
- autocomplete="off"
- type="text"
- style="width: 100%"
- class="form-control"
- />
- </td>
- <td>
- <SearchWidget
- :info-window-no="infoWindowNo1"
- :field-value="getFieldValue1(inventoryInstance)"
- :display-name="'v.name'"
- :where-clause-source="whereClauseSource"
- @value-changed="valueChanged1($event, inventoryInstance)"
- />
- </td>
- <td>
- <SearchWidget
- :info-window-no="infoWindowNo2"
- :field-value="getFieldValue2(inventoryInstance)"
- :display-name="'p.barCode'"
- :where-clause-source="whereClauseSource"
- @value-changed="valueChanged2($event, inventoryInstance)"
- />
- </td>
- <td>
- <button
- type="button"
- class="btn btn-default"
- style="width: 100%"
- @click="generatePack(inventoryInstance)"
- >
- 打印
- </button>
- </td>
- <td>
- <button
- type="button"
- class="btn btn-default"
- style="width: 100%"
- @click="generateRepeatPack(inventoryInstance)"
- >
- 重复打印
- </button>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="flex-footer">
- <div>
- <div class="form-group">
- <div class="pull-left">
- 共查询到<b>{{ pagination.total }}</b>条数据
- </div>
- <div class="pull-right">
- <VueBootstrapPagination
- v-if="pagination.last_page > 0"
- :pagination="pagination"
- :callback="queryInventory"
- />
- </div>
- </div>
- </div>
- </div>
- </div>
- <PrintEpc ref="printEpc" :printer-name="printerName" />
- <Loading v-if="loading" />
- <ImagePreview ref="imagePreview" />
- </div>
- </template>
- <script>
- import Common from '../common/Common.js';
- import InventoryResource from '../api/common/InventoryResource.js';
- import InventoryInstancePrintResource from '../api/wms/InventoryInstancePrintResource.js';
- import { PrintUtil, PrintWidget } from 'pc-component-v3';
- export default {
- components: {
- PrintWidget,
-
- },
- data: function () {
- this.Common = Common;
- return {
- message: '',
- inventoryInstanceDatas: [],
- recordIds: [],
- infoWindowNo1: 283036,
- infoWindowNo2: 283920,
- whereClauseSource: {
- customerDataDimensions:[{
- fieldName: 'organization.id',
- dataDimensionTypeNo: '202201191700',
- defaultDataDimensionTypeValueNo: '1',
- }],
- },
- pagination: {
- total: 0,
- per_page: Common.pageSize, // required
- current_page: 1, // required
- last_page: 0, // required
- },
- isUpdatePage: true,
- className: 'com.leanwo.prodog.model.common.Inventory',
- allRepeatPack: [], //重复打印全部的id
- printType: 0, //类型 0:采购入库打印/1:扫描入库打印
- printerName: '',
- loading: false,
- selectedPrinterTitle:'',
- };
- },
- mounted: function () {
- var _self = this;
- _self.queryInventory();
- $('.fixed-table').tableFixer({
- left: 3,
- head: true,
- });
- $('.fixed-table').colResizable({
- resizeMode: 'overflow',
- partialRefresh: true,
- });
- },
- methods: {
- getPrintName:function(value){
- this.selectedPrinterTitle = value;
- },
- getFieldValue1: function (item) {
- var fieldValue1 = {
- id: item.vendorId,
- displayValue: [item.vendorName],
- fieldType: 'Key',
- };
- return fieldValue1;
- },
- getFieldValue2: function (item) {
- var fieldValue2 = {
- id: item.positionId,
- displayValue: [item.savePositionName],
- fieldType: 'Key',
- };
- return fieldValue2;
- },
- // 用户选择框change事件
- valueChanged1: function (newFieldValue, item) {
- item.vendorId = newFieldValue.id;
- item.vendorName = newFieldValue.displayValue[0];
- },
- // 用户选择框change事件
- valueChanged2: function (newFieldValue, item) {
- item.positionId = newFieldValue.id;
- item.savePositionName = newFieldValue.displayValue[0];
- },
- /**
- * 打印选择的全部存货
- */
- generateAllPack: function () {
- var _self = this;
- var quantityFilled = true;
- this.inventoryInstanceDatas.forEach(function (item) {
- if (!item.quantity) {
- quantityFilled = false;
- }
- });
- if (!quantityFilled) {
- Notify.error('提示', '请填写数量', false);
- return;
- }
- var correctQuantity = true;
- this.inventoryInstanceDatas.forEach(function (item) {
- if (parseInt(item.quantity) != item.quantity || item.quantity <= 0) {
- correctQuantity = false;
- }
- });
- if (!correctQuantity) {
- Notify.error('提示', '请输入正整数', false);
- return;
- }
- let selectedPrinter = this.selectedPrinterTitle;
- if (selectedPrinter == null || selectedPrinter.length == 0) {
- Notify.error('提示', '请先选择打印机。', false);
- return;
- }
- $.ajax({
- url: Common.getApiURL(
- 'InventoryInstanceResource/generateInventoryInstances?type=' + _self.printType,
- ),
- dataType: 'json',
- type: 'post',
- contentType: 'application/json',
- data: JSON.stringify(_self.inventoryInstanceDatas),
- beforeSend: function (request) {
- Common.addTokenToRequest(request);
- },
- success: function (successData) {
- var ids = [];
- if(successData.errorCode == 0) {
- if(successData.datas.length > 0) {
- successData.datas.forEach(function (item) {
- ids.push(item.id);
- });
- _self.print(ids);
- //更新全部重复打印数据
- _self.allRepeatPack = successData.datas;
- }
- } else {
- Notify.error('提示', successData.errorMessage, false);
- }
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- Common.processException(XMLHttpRequest, textStatus, errorThrown);
- },
- });
- },
- /**
- * 重复打印全部
- */
- generateAllRepeatPack: function () {
- var _self = this;
- if (_self.allRepeatPack == null || _self.allRepeatPack.length == 0) {
- Notify.error(
- '提示',
- '请先点击【打印】按钮,然后再点击【重复打印全部】按钮。',
- false,
- );
- return;
- } else {
- var ids = [];
- _self.allRepeatPack.forEach(function (item) {
- ids.push(item.id);
- });
- _self.print(ids);
- }
- },
- /**
- * 打印单个存货
- */
- generatePack: function (inventoryInstance) {
- var _self = this;
- if (!inventoryInstance.quantity) {
- Notify.error('提示', '请填写数量。', false);
- return;
- }
- if (
- parseInt(inventoryInstance.quantity) != inventoryInstance.quantity ||
- inventoryInstance.quantity <= 0
- ) {
- Notify.error('提示', '请输入正整数。', false);
- return;
- }
- let selectedPrinter = this.selectedPrinterTitle;
- if (selectedPrinter == null || selectedPrinter.length == 0) {
- Notify.error('提示', '请先选择打印机。', false);
- return;
- }
- var datas = [];
- datas.push(inventoryInstance);
- $.ajax({
- url: Common.getApiURL(
- 'InventoryInstanceResource/generateInventoryInstances?type=' + _self.printType,
- ),
- dataType: 'json',
- type: 'post',
- contentType: 'application/json',
- data: JSON.stringify(datas),
- beforeSend: function (request) {
- Common.addTokenToRequest(request);
- _self.loading=true;
- },
- success: function (successData) {
- _self.loading=false;
- var ids = [];
- if(successData.errorCode == 0) {
- if(successData.datas.length > 0) {
- successData.datas.forEach(function (item) {
- ids.push(item.id);
- });
- _self.print(ids);
- //更新全部重复打印数据
- _self.allRepeatPack = successData.datas;
- }
- } else {
- Notify.error('提示', successData.errorMessage, false);
- }
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- _self.loading=false;
- Common.processException(XMLHttpRequest, textStatus, errorThrown);
- },
- });
- },
- /**
- * 重复打印其中一种
- * @param {Object} inventoryInstance
- */
- generateRepeatPack: function (inventoryInstance) {
- var _self = this;
- var printIds = [];
- _self.allRepeatPack.forEach(function (item) {
- if (item.inventoryId == inventoryInstance.inventoryId) {
- printIds.push(item.id);
- }
- });
- if (printIds == null || printIds.length == 0) {
- Notify.error('提示', '请先点击【打印】按钮,然后再点击【重复打印】按钮。', false);
- return;
- } else {
- _self.print(printIds);
- }
- },
- /**
- * 根据物料名称或者编号查询数据
- */
- queryInventory: function () {
- var _self = this;
- var message = $.trim(this.message);
- if (_self.message.length > 0 && !_self.isUpdatePage) {
- _self.pagination.current_page = 1;
- _self.isUpdatePage = true;
- } else if (_self.message.length <= 0) {
- _self.isUpdatePage = false;
- }
- _self.inventoryInstanceDatas.splice(0, _self.inventoryInstanceDatas.length);
- let inventoryQueryConditionRequest = {
- name: message,
- no: message,
- type: message,
- range: {
- start: (_self.pagination.current_page - 1) * _self.pagination.per_page,
- length: _self.pagination.per_page,
- },
- };
- _self.loading=true;
- InventoryResource.findByQueryCodition(inventoryQueryConditionRequest).then(
- baseRangeResponse => {
- _self.loading=false;
- if (baseRangeResponse.errorCode == 0) {
- if(baseRangeResponse.datas != null){
- baseRangeResponse.datas.forEach(function (item) {
- var newInventoryInstance = {
- inventoryName: item.name,
- inventoryCode: item.no,
- quantity: '',
- batchNo: '',
- savePositionName: item.savePositionName,
- computationUnit: item.computationUnit,
- type: item.type,
- inventoryId: item.id,
- vendorId: item.vendorId,
- positionId: item.positionId,
- vendorName: item.vendorName,
- imageNames: item.imageNames,
- purchaseOrderNo: item.purchaseOrderNo,
- };
- _self.inventoryInstanceDatas.push(newInventoryInstance);
- });
- _self.pagination.total = baseRangeResponse.total;
- _self.pagination.last_page = Math.ceil(
- _self.pagination.total / _self.pagination.per_page,
- );
- }
- }
- //查询清空上一次的打印数据
- _self.allRepeatPack = [];
- _self.fixedTableHeader();
- },
- errorData => {
- _self.loading=false;
- Common.processException(errorData);
- },
- );
- },
- /**
- * 打印文件
- */
- print: function (recordIds) {
- var _self = this;
- var printData = [];
- _self.loading=true;
- InventoryInstancePrintResource.print(recordIds).then(
- baseListResponse => {
- _self.loading=false;
- if (baseListResponse.errorCode == 0) {
- let selectedPrinter = this.selectedPrinterTitle;
- let selectedPrinterType = _self.$refs.printWidget.getSelectedPrinterTypeTitle();
- _self.printerName = selectedPrinter;
- if (selectedPrinterType == '发卡机' || selectedPrinterType == 'Jw发卡机') {
- _self.$nextTick(function () {
- _self.$refs.printEpc.printPrintPages(baseListResponse.datas);
- });
- } else {
- var contents = [];
- baseListResponse.datas.forEach(function (item) {
- var printItem = {
- id: null,
- name: null,
- content: item,
- };
- console.log(printItem);
- if (
- printItem.content == null ||
- printItem.content.printItems == null ||
- printItem.content.printItems.length == 0
- ) {
- Notify.error('错误', '打印模板无数据,不能打印。');
- return;
- }
- var content = JSON.stringify(printItem.content);
- if (content == null || content == '' || content == '{}') {
- Notify.error('错误', '请先选择模板,再点击下载。');
- return;
- }
- contents.push(printItem.content);
- });
- PrintUtil.printPrintPages(contents, selectedPrinter);
- }
- }
- },
- errorData => {
- _self.loading=false;
- Common.processException(errorData);
- },
- );
- },
- /**
- * 冻结表头
- */
- fixedTableHeader: function () {
- let _self = this;
- _self.$nextTick(function () {
- $('.fixed-table').tableFixer({
- left: 3,
- head: true,
- });
- });
- },
- },
- };
- </script>
- <style scoped>
- .flex-container {
- display: flex;
- /* 垂直*/
- flex-direction: column;
- width: 100%;
- /*视口被均分为100单位的vh 占据整个窗口,扣掉顶部topNav的距离后,计算得到container的高度*/
- height: calc(100vh - 140px);
- }
- .flex-header {
- /*放大缩小比例为0 */
- flex: 0 0 35px;
- }
- .flex-footer {
- height: 45px;
- /*放大缩小比例为0 */
- flex: 0 0 45px;
- }
- .flex-content {
- flex: 1;
- overflow: scroll;
- width: 100%;
- }
- .fixed-table {
- table-layout: fixed;
- word-wrap: break-word;
- word-break: break-all;
- }
- </style>
- <style scoped>
- .fixed-table {
- table-layout: fixed;
- width: 800px !important;
- min-width: 800px !important;
- }
- table.fixed-table tr {
- height: 40px;
- }
- table.fixed-table th,
- table.fixed-table td {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .image {
- width: 40px;
- height: 40px;
- }
- .modal-img-box {
- width: 100%;
- text-align: center;
- overflow: auto;
- }
- .m-img {
- width: 100%;
- }
- </style>
|