You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
474 lines
26 KiB
474 lines
26 KiB
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
|
|
<link rel="stylesheet" href="/css/reset.css"/>
|
|
<link rel="stylesheet" href="/mint-ui/mint-ui.min.css"/>
|
|
<link rel="stylesheet" href="/css/mobile.css"/>
|
|
</head>
|
|
<body>
|
|
<div id="app">
|
|
<#if currentUser??>
|
|
<div class="main-container" style="display: none;" v-show="!rendering">
|
|
<mt-header fixed>
|
|
<div slot="left" class="header-title">
|
|
<img class="logo" height="30" src="/img/ccl-logo.png"/>
|
|
</div>
|
|
<img src="/img/logout.svg" height="22" @click="logout" slot="right"/>
|
|
</mt-header>
|
|
<mt-tab-container v-model="selectedTab">
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("receiving")>
|
|
<script>var selectedTab = selectedTab || "receive";</script>
|
|
<mt-tab-container-item id="receive">
|
|
<div v-show="receive.screen === 'default'">
|
|
<div class="input-group">
|
|
<div class="input-left" style="width: calc(100% - 120px)">
|
|
<mt-field label="" placeholder="Receiving No" ref="receiveNoRef" v-model="receive.search.receiveNo"></mt-field>
|
|
</div>
|
|
<div class="input-right">
|
|
<mt-button @click="searchReceiveNo">Query</mt-button>
|
|
<mt-button @click="scanReceive">Scanning</mt-button>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<div class="receive-summary" v-show="receive.summary.receiveNo != ''">
|
|
<div class="form">
|
|
<span class="form-title">入库单号: </span>
|
|
<span class="form-value">{{ receive.summary.receiveNo }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">生产单号: </span>
|
|
<span class="form-value">{{ receive.summary.orderNo }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建日期: </span>
|
|
<span class="form-value">{{ receive.summary.receivedDate | datetime}}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建人: </span>
|
|
<span class="form-value">{{ receive.summary.receivedBy }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">类型: </span>
|
|
<span class="form-value">{{ receive.summary.receivedType | receivedType }}</span>
|
|
</div>
|
|
</div>
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="primary" @click="enterAddReceiveScreen">新增良品入库</mt-button>
|
|
</div>
|
|
</div>
|
|
<div v-show="receive.screen === 'scan'">
|
|
<h1 class="title">入库扫描 - {{receive.summary.receiveNo}} ({{receive.summary.receivedType | receivedType}})</h1>
|
|
<hr/>
|
|
<a class="mint-cell mint-field is-nolabel">
|
|
<div class="mint-cell-left"></div>
|
|
<div class="mint-cell-wrapper">
|
|
<div class="mint-cell-value">
|
|
<input placeholder="请扫描小卷卷号" type="text" v-model="receive.scan.finalRollNo" class="mint-field-core" ref="receiveScanFinalRollNoRef" @keydown.enter.prevent="confirmScanFinalRollNo">
|
|
<div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
|
|
<span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
|
|
<div class="mint-field-other"></div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<br/><br/><br/>
|
|
<h1 class="title">已扫描记录 {{receive.scan.rolls.length}}</h1>
|
|
<hr/>
|
|
<table class="table receive-scan-rolls">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
Roll No
|
|
</th>
|
|
<th width="65">
|
|
Created By
|
|
</th>
|
|
<th width="155">
|
|
Created Time
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="(roll,i) in receive.scan.rolls" :style="{'color' : (i + 1) % 12 === 0 ? 'red':'inherit'}">
|
|
<td> {{roll.finalRollNo}}</td>
|
|
<td> {{roll.receivedBy}}</td>
|
|
<td> {{roll.receivedDate | datetime}}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="danger" @click="receive.screen = 'default'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
<div v-show="receive.screen === 'add'">
|
|
<div class="input-group">
|
|
<div class="input-left">
|
|
<mt-field label="" placeholder="请输入生产订单单号" ref="receiveAddOrderNoRef" v-model="receive.add.orderNo"></mt-field>
|
|
</div>
|
|
<div class="input-right">
|
|
<mt-button @click="confirmAddReceive">Ok</mt-button>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="danger" @click="receive.screen = 'default'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
</mt-tab-container-item>
|
|
</#if>
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
|
|
<script>var selectedTab = selectedTab || "shipment";</script>
|
|
<mt-tab-container-item id="shipment">
|
|
<div v-show="shipment.screen === 'default'">
|
|
<div class="input-group">
|
|
<div class="input-left" style="width: calc(100% - 120px)">
|
|
<mt-field label="" ref="shipNoRef" placeholder="Delivery No" v-model="shipment.search.shipNo"></mt-field>
|
|
</div>
|
|
<div class="input-right">
|
|
<mt-button @click="searchShipment">Query</mt-button>
|
|
<mt-button @click="enterShipmentBoxes">箱子</mt-button>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<div class="receive-summary" v-show="shipment.summary.shipNo != ''">
|
|
<div class="form">
|
|
<span class="form-title">出库单号: </span>
|
|
<span class="form-value">{{ shipment.summary.shipNo }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建日期: </span>
|
|
<span class="form-value">{{ shipment.summary.shippedDate | datetime}}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建人: </span>
|
|
<span class="form-value">{{ shipment.summary.shippedBy }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">总箱数: </span>
|
|
<span class="form-value">{{ shipment.summary.totalBoxes }}</span>
|
|
</div>
|
|
</div>
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="primary" @click="confirmAddShipment">New Shipment</mt-button>
|
|
</div>
|
|
</div>
|
|
<div v-show="shipment.screen === 'box'">
|
|
<div class="shipment-boxes-title">
|
|
<h1 class="title">
|
|
{{ shipment.summary.shipNo }}中的箱子
|
|
</h1>
|
|
<mt-button type="primary" @click="newShipmentBox" size="small">New Box</mt-button>
|
|
</div>
|
|
<hr/>
|
|
<table class="table receive-scan-rolls">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
Box No
|
|
</th>
|
|
<th>
|
|
Status
|
|
</th>
|
|
<th width="100">
|
|
Actions
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="box in shipment.boxes">
|
|
<td> {{box.boxNo}}</td>
|
|
<td> {{box.status}}</td>
|
|
<td>
|
|
<mt-button type="default" v-if="box.status === 'Packed'" size="small" @click="gotoPrintBox(box.boxNo)">打印</mt-button>
|
|
<mt-button type="default" v-else size="small" @click="scanShipmentBox(box.boxNo,box.id)">Scan and delivery</mt-button>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="danger" @click="shipment.screen = 'default'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
<div v-show="shipment.screen === 'scanBox'">
|
|
<div class="shipment-boxes-title">
|
|
<h1 class="title">
|
|
出库扫描 - {{shipment.summary.shipNo}} / {{shipment.summary.boxNo}}
|
|
</h1>
|
|
<mt-button type="primary" @click="finishScanShipmentBoxRoll" size="small">结束扫描</mt-button>
|
|
</div>
|
|
<hr/>
|
|
<a class="mint-cell mint-field is-nolabel">
|
|
<div class="mint-cell-left"></div>
|
|
<div class="mint-cell-wrapper">
|
|
<div class="mint-cell-value">
|
|
<input placeholder="请扫描小卷卷号" type="text" v-model="shipment.scan.finalRollNo" class="mint-field-core" ref="shipmentScanFinalRollNoRef" @keydown.enter.prevent="confirmScanBoxFinalRollNo">
|
|
<div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
|
|
<span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
|
|
<div class="mint-field-other"></div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<br/><br/><br/>
|
|
<h1 class="title">已扫描记录</h1>
|
|
<hr/>
|
|
<table class="table receive-scan-rolls">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
Roll No
|
|
</th>
|
|
<th width="65">
|
|
Created By
|
|
</th>
|
|
<th width="155">
|
|
Created Time
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="roll in shipment.scan.rolls">
|
|
<td> {{roll.finalRollNo}}</td>
|
|
<td> {{roll.shippedBy}}</td>
|
|
<td> {{roll.shippedDate | datetime}}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="danger" @click="shipment.screen = 'box'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
<div v-show="shipment.screen === 'print'">
|
|
<div class="print-qr">
|
|
<div class="box-summary">
|
|
<qr :width="100" v-model="shipment.summary.boxNo"></qr>
|
|
<div class="box-detail">
|
|
<table>
|
|
<tr>
|
|
<td>Box ID:</td>
|
|
<td>{{shipment.print.box.boxNo}}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Box Qty:</td>
|
|
<td>{{shipment.print.count}}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>IFS PN:</td>
|
|
<td>{{shipment.print.partNo}}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Customer PN:</td>
|
|
<td>{{shipment.print.customerPartNo}}</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="box-list">
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll0">
|
|
<div class="r-title">R01</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll0.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll1">
|
|
<div class="r-title">R02</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll1.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll2">
|
|
<div class="r-title">R03</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll2.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll3">
|
|
<div class="r-title">R04</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll3.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll4">
|
|
<div class="r-title">R05</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll4.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll5">
|
|
<div class="r-title">R06</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll5.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll6">
|
|
<div class="r-title">R07</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll6.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll7">
|
|
<div class="r-title">R08</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll7.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll8">
|
|
<div class="r-title">R09</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll8.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll9">
|
|
<div class="r-title">R10</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll9.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll10">
|
|
<div class="r-title">R11</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll10.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div v-if="shipment.print.boxRoll11">
|
|
<div class="r-title">R12</div>
|
|
<qr :width="50" v-model="shipment.print.boxRoll11.finalRollNo"></qr>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="print-buttons">
|
|
<mt-button type="primary" @click="printBox()">打印</mt-button>
|
|
<mt-button type="danger" @click="shipment.screen = 'default'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
</mt-tab-container-item>
|
|
</#if>
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("counting")>
|
|
<script>var selectedTab = selectedTab || "counting";</script>
|
|
<mt-tab-container-item id="counting">
|
|
<div v-show="counting.screen === 'default'">
|
|
<div class="input-group">
|
|
<div class="input-left" style="width: calc(100% - 120px)">
|
|
<mt-field label="" placeholder="盘点单号" v-model="counting.search.countingNo"></mt-field>
|
|
</div>
|
|
<div class="input-right">
|
|
<mt-button @click="searchCountingNo">Query</mt-button>
|
|
<mt-button @click="scanCounting">Scanning</mt-button>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<div class="receive-summary" v-show="counting.summary.countingNo != ''">
|
|
<div class="form">
|
|
<span class="form-title">盘点单号: </span>
|
|
<span class="form-value">{{ counting.summary.countingNo }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建日期: </span>
|
|
<span class="form-value">{{ counting.summary.createdDate | datetime}}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">创建人: </span>
|
|
<span class="form-value">{{ counting.summary.createdBy }}</span>
|
|
</div>
|
|
<div class="form">
|
|
<span class="form-title">Status: </span>
|
|
<span class="form-value">{{ counting.summary.status }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-show="counting.screen === 'scan'">
|
|
<h1 class="title">盘点扫描 - {{counting.summary.countingNo}}</h1>
|
|
<hr/>
|
|
<a class="mint-cell mint-field is-nolabel">
|
|
<div class="mint-cell-left"></div>
|
|
<div class="mint-cell-wrapper">
|
|
<div class="mint-cell-value">
|
|
<input placeholder="请扫描盘点信息" type="text" v-model="counting.scan.info" class="mint-field-core" ref="countingScanRef" @keydown.enter.prevent="confirmCountingScan">
|
|
<div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
|
|
<span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
|
|
<div class="mint-field-other"></div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<br/><br/><br/>
|
|
<h1 class="title">已扫描记录</h1>
|
|
<hr/>
|
|
<table class="table counting-act-table receive-scan-rolls">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
Part
|
|
</th>
|
|
<th>
|
|
Location
|
|
</th>
|
|
<th>
|
|
LotBatch
|
|
</th>
|
|
<th>
|
|
Counted
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="act in counting.scan.actData">
|
|
<td> {{act.partNo}}</td>
|
|
<td> {{act.locationNo}}</td>
|
|
<td> {{act.lotBatchNo}}</td>
|
|
<td> {{act.countedQty}}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div style="text-align: right;margin-top:20px;">
|
|
<mt-button type="danger" @click="counting.screen = 'default'">返回</mt-button>
|
|
</div>
|
|
</div>
|
|
</mt-tab-container-item>
|
|
</#if>
|
|
</mt-tab-container>
|
|
<mt-tabbar v-model="selectedTab">
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("receiving")>
|
|
<mt-tab-item id="receive">
|
|
<img slot="icon" src="/img/in.svg"/>
|
|
Receive
|
|
</mt-tab-item>
|
|
</#if>
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
|
|
<mt-tab-item id="shipment">
|
|
<img slot="icon" src="/img/out.svg"/>
|
|
发货
|
|
</mt-tab-item>
|
|
</#if>
|
|
<#if currentUser.isAdmin || currentUser.authorities?contains("counting")>
|
|
<mt-tab-item id="counting">
|
|
<img slot="icon" src="/img/check.svg"/>
|
|
Counting
|
|
</mt-tab-item>
|
|
</#if>
|
|
</mt-tabbar>
|
|
</div>
|
|
</#if>
|
|
</div>
|
|
<form id="frmLogout" action="/logout" method="post"></form>
|
|
</body>
|
|
<script src="/qrcode/qrcode.min.js"></script>
|
|
<script src="/vue/vue.js"></script>
|
|
<script src="/vue/vue-resource.min.js"></script>
|
|
<script src="/mint-ui/mint-ui.min.js"></script>
|
|
<script src="/js/vue-qr.js"></script>
|
|
<script src="/js/mobile.js"></script>
|
|
</html>
|