Browse Source

销售退货

master
han\hanst 3 months ago
parent
commit
ec01c31aac
  1. 2
      src/api/production/production-inbound.js
  2. 17
      src/api/sales-return/sales-return.js
  3. 6
      src/views/main.vue
  4. 36
      src/views/modules/production-inbound/inboundRegister.vue
  5. 4
      src/views/modules/recv/recv.vue
  6. 4
      src/views/modules/sales-return/index.vue
  7. 1059
      src/views/modules/sales-return/sales-return-inbound.vue

2
src/api/production/production-inbound.js

@ -41,4 +41,4 @@ export const submitShopOrderInbound = data => createAPI(`/production/inbound/sub
// 验证物料是否已发料
export const validateMaterialIssued = data => createAPI(`/production/inbound/validateMaterialIssued`,'post',data)
// 打印标签
export const printLabel = data => createAPI('/label/setting/printLabel','post',data)
export const printLabelCommon = data => createAPI('/label/setting/printLabelCommon','post',data)

17
src/api/sales-return/sales-return.js

@ -1,9 +1,18 @@
import { createAPI } from "@/utils/httpRequest.js";
/**
* 销售退货API接口
*/
// 获取采购单信息
export const processReturn = data => createAPI(`salesreturn/processReturn`,'post',data)
// 从IFS获取RMA列表
export const getRmaList = data => createAPI(`salesreturn/getRmaList`, 'post', data)
// 接收采购单信息
export const getRmaList = data => createAPI(`salesreturn/getRmaList`,'post',data)
// 处理销售退货(本地库存操作)
export const processReturn = data => createAPI(`salesreturn/processReturn`, 'post', data)
// 销售退货入库(调用IFS API)
export const processRmaInbound = data => createAPI(`salesreturn/processRmaInbound`, 'post', data)
// 打印标签(通用打印接口)
export const printLabelCommon = data => createAPI('/label/setting/printLabelCommon', 'post', data)

6
src/views/main.vue

@ -58,7 +58,7 @@
</div>
<div class="menu-text">生产退料</div>
</div>
<div class="menu-item disabled" @click="handleDisabledFeature('salereturn')">
<div class="menu-item" @click="navigateWithWarehouseCheck('salereturn')">
<div class="menu-icon sales-return">
<van-icon name="revoke" size="24" />
</div>
@ -680,8 +680,8 @@ export default {
}
.menu-icon {
width: 40px;
height: 40px;
width: 38px;
height: 38px;
border-radius: 50%;
display: flex;
align-items: center;

36
src/views/modules/production-inbound/inboundRegister.vue

@ -14,10 +14,6 @@
<div v-if="processFlag === 1">
<div class="scan-box" style="margin: 2px;">
<el-input clearable v-model="scanCode" placeholder="扫描或输入工单号"
inputmode="none"
autocomplete="off"
autocorrect="off"
spellcheck="false"
@keyup.enter.native="searchShopOrder" ref="scanCodeRef" />
</div>
<div class="item-list" v-if="shopOrderList.length > 0" style="margin: 2px;">
@ -182,7 +178,7 @@
</template>
<script>
import { getShopOrderFromIfs, getNextSequenceNo, submitShopOrderInbound, validateMaterialIssued, printLabel } from "@/api/production/production-inbound.js";
import { getShopOrderFromIfs, getNextSequenceNo, submitShopOrderInbound, validateMaterialIssued, printLabelCommon } from "@/api/production/production-inbound.js";
export default {
data() {
@ -352,7 +348,7 @@ export default {
unCompleteQty: parseFloat(row.lotSize) - parseFloat(row.qtyComplete),
sequenceNoNew: nextSequence,
batchNo: `${row.orderNo}-${row.releaseNo}-${row.sequenceNo}-${nextSequence}`,
locationNo: '',
locationNo: 'AS',
serialNo: '*',
wdr: '*',
engChgLevel: '1',
@ -543,7 +539,13 @@ export default {
if (data.code === 0) {
this.$message.success("入库成功");
this.clearAllHandlingUnitCache();
this.printViaServer(data.data);
// unitIds
const unitIds = data.unitIds || [];
if (unitIds.length > 0) {
this.printViaServer(unitIds);
}
this.processFlag = 1;
this.scanCode = '';
this.shopOrderList = [];
@ -561,20 +563,30 @@ export default {
},
/**
* 通过服务器打印
* @param {Array} unitIds - HU unitId列表
*/
async printViaServer(transNo) {
async printViaServer(unitIds) {
if (!unitIds || unitIds.length === 0) {
console.warn('没有可打印的标签');
return;
}
this.$emit('print-start')
try {
const printRequest = {
userId: localStorage.getItem('userName'),
username: localStorage.getItem('userName'),
site: localStorage.getItem('site'),
transNo: transNo,
unitIds: unitIds,
labelType: "库存成品标签"
}
const { data } = await printLabel(printRequest)
if (data.code === 200) {
this.$message.success(`打印任务已发送!`)
console.log('打印请求:', printRequest);
const { data } = await printLabelCommon(printRequest)
if (data.code === 200 || data.code === 0) {
this.$message.success(`打印任务已发送!共${unitIds.length}个标签`)
} else {
this.$message.error(data.msg || '打印失败')
}
} catch (error) {
console.error('服务器打印失败:', error)

4
src/views/modules/recv/recv.vue

@ -14,10 +14,6 @@
<div v-if="processFlag === 1">
<div class="scan-box" style="margin: 2px;">
<el-input clearable v-model="scanCode" placeholder="扫描PO条码或输入PO号"
inputmode="none"
autocomplete="off"
autocorrect="off"
spellcheck="false"
@keyup.enter.native="searchPoList" ref="scanCodeRef" />
</div>
<div class="item-list" v-if="poList.length > 0" style="margin: 2px;">

4
src/views/modules/sales-return/index.vue

@ -29,8 +29,8 @@ export default {
data() {
return {
buttons: [
{ icon: 'shopping-cart-o', label: '入库', iconClass: 'purchase', to: 'salereturn-inbound' },
{ icon: 'orders-o', label: '报废', iconClass: 'inspection', to: 'salereturn-scrap' }
{ icon: 'shopping-cart-o', label: '退货入库', iconClass: 'purchase', to: 'salereturn-inbound' },
{ icon: 'orders-o', label: '报废', iconClass: 'scrap', to: 'salereturn-scrap' }
]
}
}

1059
src/views/modules/sales-return/sales-return-inbound.vue
File diff suppressed because it is too large
View File

Loading…
Cancel
Save