Browse Source

【NEV-PC】暂存

ag_report_nev
安虹睿 1 year ago
parent
commit
98f5bde594
  1. 16
      fe/PC/src/api/wms-api.js
  2. 20
      fe/PC/src/components/currenTable/index.vue
  3. 1
      fe/PC/src/mixins/TableMixins.js
  4. 56
      fe/PC/src/router/index.js
  5. 129
      fe/PC/src/utils/detailsTableColumns/index.js
  6. 63
      fe/PC/src/utils/tableColumns/index.js
  7. 63
      fe/PC/src/utils/tabsDesTions/index.js
  8. 309
      fe/PC/src/views/finishedProductManage/completDump/completDumpJob.vue
  9. 66
      fe/PC/src/views/finishedProductManage/completDump/completDumpNotePT.vue
  10. 73
      fe/PC/src/views/finishedProductManage/completDump/completDumpNoteZP.vue
  11. 112
      fe/PC/src/views/finishedProductManage/completDump/completDumpNoteZS.vue
  12. 7
      fe/PC/src/views/finishedProductManage/deliver/FISDeliverNote-Query.vue
  13. 69
      fe/PC/src/views/finishedProductManage/deliver/FISDeliverRequest.vue
  14. 547
      fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue
  15. 542
      fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_currenTable.vue
  16. 548
      fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_el.vue
  17. 142
      fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/style/index.scss
  18. 4
      fe/PC/src/views/finishedProductManage/dismantle/customerDismantleJob-old.vue
  19. 112
      fe/PC/src/views/finishedProductManage/dismantle/customerDismantleJob.vue

16
fe/PC/src/api/wms-api.js

@ -513,9 +513,9 @@ export function sumPrint(number, url ) {
}
// 线边仓调拨列表 | 上架前退货记录 | 采购上架记录 | 半成品上架记录 | 原料直发
export function getPageListWip(data, url) {
export function getPageListWip(data, url, hasDetail) {
return request({
url: baseURL + url,
url: baseURL + url + '?includeDetails=' + Boolean(hasDetail),
method: 'post',
data
})
@ -639,14 +639,22 @@ export async function itemTransformNewCreate(data) {
})
}
// 获取bom
export function getBomByComponentTree(code) {
// 客户退拆-获取bom(全部展开)
export function getBomByComponentList(code) {
return request({
url: baseURL + 'basedata/bom/get-list-by-component-with-tree/?component=' + code,
method: 'get'
})
}
// 客户退拆-获取bom(树状)
export function getBomByComponentTree(code) {
return request({
url: baseURL + 'basedata/bom/get-bom-tree-by-code/?component=' + code,
method: 'get'
})
}
// 客户退拆任务-执行提交
export async function productionRecycleJobHandle(id,data) {
return request({

20
fe/PC/src/components/currenTable/index.vue

@ -16,6 +16,9 @@
:tree-props="treeProps"
:cell-style="cellStyle"
:key="isUpdate"
@select="tableHandleSelect"
@select-all="tableHandleSelectAll"
:default-expand-all="isDefaultExpandAll"
>
<el-table-column v-if="selectionTable" fixed="left" type="selection" />
<el-table-column v-if="isShowIndex" type="index" fixed="left" label="序号" width="50" />
@ -28,7 +31,7 @@
:fixed="item.fixed"
:show-overflow-tooltip="true"
:width="item.width"
align="center"
:align="item.align || 'center'"
>
<template #header>
<span>{{ item.label }}</span>
@ -344,6 +347,13 @@ export default {
},
},
props: {
// table
isDefaultExpandAll:{
type: Boolean,
default: () => {
return false
}
},
// table key
isUpdate: {
type: Boolean,
@ -731,6 +741,14 @@ export default {
sortChange(data) {
this.$emit("sortChange", data);
},
// table
tableHandleSelect(selection, row){
this.$emit("tableHandleSelect", selection, row);
},
// table
tableHandleSelectAll(selection){
this.$emit("tableHandleSelectAll", selection);
},
//selection
handleSelectionChange(val) {
this.$emit("handleSelectionChange", val);

1
fe/PC/src/mixins/TableMixins.js

@ -114,7 +114,6 @@ export const tableMixins = {
},
//点击Table行内名称
inlineDialog(val) {
console.log(117,val)
// 打开抽屉后,点击其他信息,默认回到详情位置上,避免特殊需要重新点击获取接口的tag页面数据不更新
this.firstTabs = 'xq'
//打开抽屉

56
fe/PC/src/router/index.js

@ -196,16 +196,64 @@ export const constantRoutes = [
redirect: '/gridlayout',
hidden: true,
children: [{
path: 'completDumpRequest',
component: () => import('@/views/finishedProductManage/completDump/completDumpRequest.vue'),
name: 'completDumpRequest',
path: 'completDumpNoteZS',
component: () => import('@/views/finishedProductManage/completDump/completDumpNoteZS.vue'),
name: 'completDumpNoteZS',
meta: {
keepAlive : true,
title: '完工转储申请',
title: '完工转储记录(注塑)',
icon: '完工转储申请',
}
}]
},
{
path: '/',
component: Layout,
redirect: '/gridlayout',
hidden: true,
children: [{
path: 'completDumpNotePT',
component: () => import('@/views/finishedProductManage/completDump/completDumpNotePT.vue'),
name: 'completDumpNotePT',
meta: {
keepAlive : true,
title: '完工转储记录(喷涂)',
icon: '完工转储申请',
}
}]
},
{
path: '/',
component: Layout,
redirect: '/gridlayout',
hidden: true,
children: [{
path: 'completDumpNoteZP',
component: () => import('@/views/finishedProductManage/completDump/completDumpNoteZP.vue'),
name: 'completDumpNoteZP',
meta: {
keepAlive : true,
title: '完工转储记录(装配)',
icon: '完工转储申请',
}
}]
},
{
path: '/',
component: Layout,
redirect: '/gridlayout',
hidden: true,
children: [{
path: 'completDumpNoteZS',
component: () => import('@/views/finishedProductManage/completDump/completDumpNoteZS.vue'),
name: 'completDumpNoteZS',
meta: {
keepAlive : true,
title: '完工转储记录(注塑)',
icon: '完工转储申请',
}
}]
},
{
path: '/',
component: Layout,

129
fe/PC/src/utils/detailsTableColumns/index.js

@ -3525,64 +3525,121 @@ export const callEmptyUtensilJob = [
{ label: "备注", prop: 'remark' },
]
// 完工转储申请
export const completDumpRequest = [
{ label: "退货申请单号",
// 完工转储记录(注塑)
export const completDumpNoteZS = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "操作员", prop: "worker" },
{ label: "物品代码", prop: "itemCode" },
{ label: "物品名称", prop: "itemName" },
{ label: "物品描述1", prop: "itemDesc1" },
{ label: "物品描述2", prop: "itemDesc2" },
{ label: "单位", prop: "uom" },
{ label: "数量", prop: "qty" },
{ label: "标包数量", prop: 'stdPackQty' },
{ label: "来源箱码", prop: 'fromPackingCode' },
{ label: "目标箱码", prop: 'toPackingCode' },
{ label: "来源批次", prop: 'fromLot' },
{ label: "目标批次", prop: 'toLot' },
{ label: "供应商批次", prop: 'supplierBatch' },
{ label: "到货时间", prop: "arriveDate", type: "dateTime" },
{ label: "生产时间", prop: "produceDate", type: "dateTime" },
{ label: "过期时间", prop: "expireDate", type: "dateTime" },
{ label: "来源库位", prop: 'fromLocationCode' },
{ label: "目标库位", prop: "toLocationCode" },
{ label: "来源库区", prop: 'fromLocationArea' },
{ label: "目标库区", prop: 'toLocationArea' },
{ label: "来源库位组", prop: 'fromLocationGroup' },
{ label: "目标库位组", prop: 'toLocationGroup' },
{ label: "来源ERP库位", prop: 'fromLocationErpCode' },
{ label: "目标ERP库位", prop: "toLocationErpCode" },
{ label: "来源仓库", prop: 'fromWarehouseCode' },
{ label: "目标仓库", prop: 'toWarehouseCode' },
{ label: "在途库位", prop: "onTheWayLocationCode" },
{ label: "原因", prop: 'reason' },
{ label: "备注", prop: 'remark' },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
]
// 完工转储任务
export const completDumpJob = [
{ label: "退货申请单号",
// 完工转储记录(喷涂)
export const completDumpNotePT = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "操作员", prop: "worker" },
{ label: "物品代码", prop: "itemCode" },
{ label: "物品名称", prop: "itemName" },
{ label: "物品描述1", prop: "itemDesc1" },
{ label: "物品描述2", prop: "itemDesc2" },
{ label: "单位", prop: "uom" },
{ label: "数量", prop: "qty" },
{ label: "标包数量", prop: 'stdPackQty' },
{ label: "来源箱码", prop: 'fromPackingCode' },
{ label: "目标箱码", prop: 'toPackingCode' },
{ label: "来源批次", prop: 'fromLot' },
{ label: "目标批次", prop: 'toLot' },
{ label: "供应商批次", prop: 'supplierBatch' },
{ label: "到货时间", prop: "arriveDate", type: "dateTime" },
{ label: "生产时间", prop: "produceDate", type: "dateTime" },
{ label: "过期时间", prop: "expireDate", type: "dateTime" },
{ label: "来源库位", prop: 'fromLocationCode' },
{ label: "目标库位", prop: "toLocationCode" },
{ label: "来源库区", prop: 'fromLocationArea' },
{ label: "目标库区", prop: 'toLocationArea' },
{ label: "来源库位组", prop: 'fromLocationGroup' },
{ label: "目标库位组", prop: 'toLocationGroup' },
{ label: "来源ERP库位", prop: 'fromLocationErpCode' },
{ label: "目标ERP库位", prop: "toLocationErpCode" },
{ label: "来源仓库", prop: 'fromWarehouseCode' },
{ label: "目标仓库", prop: 'toWarehouseCode' },
{ label: "在途库位", prop: "onTheWayLocationCode" },
{ label: "原因", prop: 'reason' },
{ label: "备注", prop: 'remark' },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
]
// 完工转储记录
export const completDumpNote = [
{ label: "退货申请单号",
// 完工转储记录(装配)
export const completDumpNoteZP = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "操作员", prop: "worker" },
{ label: "物品代码", prop: "itemCode" },
{ label: "物品名称", prop: "itemName" },
{ label: "物品描述1", prop: "itemDesc1" },
{ label: "物品描述2", prop: "itemDesc2" },
{ label: "单位", prop: "uom" },
{ label: "数量", prop: "qty" },
{ label: "标包数量", prop: 'stdPackQty' },
{ label: "来源箱码", prop: 'fromPackingCode' },
{ label: "目标箱码", prop: 'toPackingCode' },
{ label: "来源批次", prop: 'fromLot' },
{ label: "目标批次", prop: 'toLot' },
{ label: "供应商批次", prop: 'supplierBatch' },
{ label: "到货时间", prop: "arriveDate", type: "dateTime" },
{ label: "生产时间", prop: "produceDate", type: "dateTime" },
{ label: "过期时间", prop: "expireDate", type: "dateTime" },
{ label: "来源库位", prop: 'fromLocationCode' },
{ label: "目标库位", prop: "toLocationCode" },
{ label: "来源库区", prop: 'fromLocationArea' },
{ label: "目标库区", prop: 'toLocationArea' },
{ label: "来源库位组", prop: 'fromLocationGroup' },
{ label: "目标库位组", prop: 'toLocationGroup' },
{ label: "来源ERP库位", prop: 'fromLocationErpCode' },
{ label: "目标ERP库位", prop: "toLocationErpCode" },
{ label: "来源仓库", prop: 'fromWarehouseCode' },
{ label: "目标仓库", prop: 'toWarehouseCode' },
{ label: "在途库位", prop: "onTheWayLocationCode" },
{ label: "原因", prop: 'reason' },
{ label: "备注", prop: 'remark' },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
]
// 人工发料申请(注塑)

63
fe/PC/src/utils/tableColumns/index.js

@ -4187,67 +4187,64 @@ export const callEmptyUtensilJob = [
{ label: "优先级增量", prop: 'priorityIncrement' },
]
// 完工转储申请
export const completDumpRequest = [
{ label: "退货申请单号",
// 完工转储记录(注塑)
export const completDumpNoteZS = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
width: orderWidth
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber", width: orderWidth },
{ label: "订单号", prop: "poNumber",width: orderWidth },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber",width: orderWidth },
{ label: "任务单号", prop: 'jobNumber',width: orderWidth },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 完工转储任务
export const completDumpJob = [
{ label: "退货申请单号",
// 完工转储记录(喷涂)
export const completDumpNotePT = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
width: orderWidth
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber", width: orderWidth },
{ label: "订单号", prop: "poNumber",width: orderWidth },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber",width: orderWidth },
{ label: "任务单号", prop: 'jobNumber',width: orderWidth },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 完工转储记录
export const completDumpNote = [
{ label: "退货申请单号",
// 完工转储记录(装配)
export const completDumpNoteZP = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
width: orderWidth
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber", width: orderWidth },
{ label: "订单号", prop: "poNumber",width: orderWidth },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber",width: orderWidth },
{ label: "任务单号", prop: 'jobNumber',width: orderWidth },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 人工发料申请(注塑)

63
fe/PC/src/utils/tabsDesTions/index.js

@ -3044,64 +3044,61 @@ export const callEmptyUtensilJob = [
{ label: "优先级增量", prop: 'priorityIncrement' },
]
// 完工转储申请
export const completDumpRequest = [
{ label: "退货申请单号",
// 完工转储记录(注塑)
export const completDumpNoteZS = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber" },
{ label: "任务单号", prop: 'jobNumber' },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 完工转储任务
export const completDumpJob = [
{ label: "退货申请单号",
// 完工转储记录(喷涂)
export const completDumpNotePT = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber" },
{ label: "任务单号", prop: 'jobNumber' },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 完工转储记录
export const completDumpNote = [
{ label: "退货申请单号",
// 完工转储记录(装配)
export const completDumpNoteZP = [
{ label: "记录单号",
prop: "number",
fixed: "left",
type: "name",
},
{ label: "状态", prop: "requestStatus",type: "tagFilter", filters: "requestStatus" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "发货单号", prop: "asnNumber" },
{ label: "订单号", prop: "poNumber" },
{ label: "供应商代码", prop: "supplierCode" },
{ label: "退货时间", prop: "returnTime", type:"dateTime" },
{ label: "申请单号", prop: "requestNumber" },
{ label: "任务单号", prop: 'jobNumber' },
{ label: "使用中间库", prop: 'useOnTheWayLocation', type: "filter", filters: "whetherOrNot" },
{ label: "是否确认", prop: "confirmed", type: "tagFilter", filters: "whetherOrNot" },
{ label: "操作员", prop: "worker" },
{ label: "备注", prop: 'remark' },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
{ label: "生效日期", prop: 'activeDate', type: "dateTime" },
{ label: "收货单号", prop: 'rpNumber' },
{ label: "确认时间", prop: "confirmTime",type:"dateTime" },
{ label: "创建时间", prop: "creationTime",type:"dateTime" },
{ label: "上次修改时间", prop: 'lastModificationTime', type: "dateTime" },
]
// 人工发料申请(注塑)

309
fe/PC/src/views/finishedProductManage/completDump/completDumpJob.vue

@ -1,309 +0,0 @@
<template>
<div class="page-box" v-loading="Loading.appMainLoading">
<tablePagination
:currenButtonData="currenButtonData"
:tableData="tableData"
:tableLoading="Loading.tableLoading"
:tableColumns="tableColumns"
@rowDrop="rowDrop"
:totalCount="totalCount"
:multipleSelection="multipleSelection"
:MaxResultCount="PageListParams.MaxResultCount"
@topbutton="topbutton"
@inlineDialog="inlineDialog"
@sortChange="sortChange"
@alertoldSkipCount="alertoldSkipCount"
@alterResultCount="alterResultCount"
@handleSelectionChange="handleSelectionChange"
:currentPageProps="oldSkipCount"
:quicklySearchOption="quicklySearchOption"
@quicklySearchClick="quicklySearchClick"
@quicklySearchClear="quicklySearchClear"
:primarySearchOption="primarySearchOption"
@overallSearchFormClick="overallSearchFormClick"
:httpOverallSearchData="httpOverallSearchData"
>
</tablePagination>
<!-- 执行 -->
<handelFrom
:formTitle="formTitle"
:displayDialog.sync="displayDialog.handleFromDialog"
:CreateFormData="handleFormData"
:CreateForm="handleForm"
:Rules="editRules.handleRule"
:Options="editOptions"
:detailsTableColumns="handleDetailsTableColumns"
@FormSubmit="handleFormSubmit"
></handelFrom>
<curren-Drawer
:title="tableColumns"
:DrawerLoading="Loading.DrawerLoading"
:drawer="displayDialog.detailsDialog"
:propsData="propsData"
:tabsDesTions="tabsDesTions"
:Butttondata="[]"
@drawerShut="(val) => (displayDialog.detailsDialog = val)"
@drawerbutton="drawerbutton"
@close-value="closeValue"
:currenButtonData="currenButtonData"
:tableColumns="detailsTableColumns"
:totalCount="totalCountDetails"
:MaxResultCount="MaxResultCountDetails"
@alterResultCountDetails="alterResultCountDetails"
@alertoldSkipCountDetails="alertoldSkipCountDetails"
></curren-Drawer>
</div>
</template>
<script>
import { getDetailed, handle, accept, Invalid } from "@/api/wms-job"
import { tableMixins } from "@/mixins/TableMixins"
import { LoadingMixins } from "@/mixins/LoadingMixins"
import { drawerMixins } from "@/mixins/drawerMixins"
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import detailsRules from '@/utils/rules';
export default {
name: "completDumpJob",
mixins: [
tableMixins,
LoadingMixins,
drawerMixins,
TableHeaderMixins,
mixins,
],
computed: {
editDialog: {
get: function () {
return this.displayDialog.newDialog || this.displayDialog.editDialog;
},
},
hideButton: function () {
return function (val) {
let data = true
val.forEach(key => {
if (this.propsData.jobStatus == key) {
data = false
}
})
return data
}
},
},
data () {
return {
URL: 'wms/store/purchase-return-job',
//
currenButtonData: [
this.defaultFieldSettingBtn(),//
this.defaultFreshBtn(),//
this.defaultFilterBtn(),//
],
DrawerButtonData: [
{
type: 'primary',
icon: 'el-icon-circle-check',
label: '承接',
name: "accept",
hide: () => { return this.hideButton([1]) },
size: 'mini'
},
{
type: 'warning',
icon: 'el-icon-circle-check',
label: '执行',
name: "handle",
hide: () => { return this.hideButton([2]) },
size: 'mini'
},
{
type: 'danger',
icon: 'el-icon-delete-solid',
label: '作废',
name: "invalid",
hide: () => { return this.hideButton([1,2]) },
size: 'mini'
}
],
handleDetailsTableColumns: [
{
label: "箱标签",
prop: "handledPackingCode",
},
{ label: "物品代码", prop: "itemCode", },
{ label: "物品名称", prop: "itemName" },
{ type: "objectInput", valueType: Number, rules: detailsRules.numberInput, label: "收货数量", prop: "handledQty", showProp: "qty", },
{ label: "包装数量", prop: "stdPackQty", },
{ type: "input", rules: detailsRules.detailsRules, label: "实际库位", prop: "handledLocationCode", },
{ label: "推荐库位", prop: "recommendLocationCode", },
{ label: "包装单位", prop: "stdPackUom", },
{ type: "object", label: "收货单位", prop: "handledQty", showProp: "uom", },
{ label: "订单号", prop: "poNumber", },
{ label: "订单行", prop: "poLine", },
{ label: "备注", prop: 'remark', },
],
editOptions: {
},
handleFormData: {
"id": null,
"creationTime": null,
"lastModificationTime": null,
"remark": null,
"concurrencyStamp": null,
"company": null,
"number": null,
"upStreamJobNumber": null,
"arriveNoticeNumber": null,
"purchaseReceiptNumber": null,
"asnNumber": null,
"poNumber": null,
"supplierCode": null,
"jobType": 1,
"jobStatus": 1,
"priority": 0,
"priorityIncrement": 0,
"wlgCode": "123",
"isAutoComplete": true,
"details": [],
"acceptTime": null,
"completeTime": null
},
childTableData: [
{
"id": null,
"creationTime": null,
"lastModificationTime": null,
"remark": null,
"concurrencyStamp": null,
"masterID": null,
"packingCode": null,
"containerCode": null,
"item": {
"id": null,
"name": null,
"desc1": null,
"desc2": null
},
"itemCode": null,
"batch": {
"supplierBatch": null,
"produceDate": null
},
"lot": null,
"stdPack": {
"packUom": null,
"packQty": 0
},
"recommendLocationCode": null,
"recomendQty": {
"uom": null,
"qty": 0
},
"handledLocationCode": null,
"handledQty": {
"uom": null,
"qty": 0
}
}
],
handleForm: [
{ type: "input", label: "任务编号", prop: "number", colSpan: 12, disabled: "true" },
{ type: "input", label: "到货编号", prop: "arriveNoticeNumber", colSpan: 12, disabled: "true" },
{ type: "select", label: "任务类型", prop: "jobType", options: "taskType", colSpan: 12, disabled: "true" },
{ type: "select", label: "任务状态", prop: "jobStatus", options: "jobStatus", colSpan: 12, disabled: "true" },
{ type: "input", label: "优先级", prop: "priority", colSpan: 12, disabled: "true" },
{ type: "input", label: "工作组", prop: "wlgCode", colSpan: 12, disabled: "true" },
{ type: "input", label: "订单号", prop: "poNumber", colSpan: 12, },
{ type: "dateTime", label: "接收时间", prop: "acceptTime", colSpan: 12, },
{ type: "input", label: "备注", prop: "remark", colSpan: 12, },
],
editRules: {
handleRule: {
number: [{ required: true, trigger: ["blur", "change"], message: "不可为空" }],
jobType: [{ required: true, trigger: "blur", message: "不可为空" }],
poNumber: [{ required: true, trigger: "blur", message: "不可为空" }],
jobStatus: [{ required: true, trigger: "blur", message: "不可为空" }],
priority: [{ required: true, trigger: "blur", message: "不可为空" }],
}
},
};
},
mounted () {
this.paging();
},
methods: {
// //
drawerbutton (val) {
if (val == 'accept') {
let data = {
id: this.propsData.id
}
this.Loading.appMainLoading = true
accept(this.URL, data).then(res => {
this.$successMsg('已承接任务!')
this.Loading.appMainLoading = false
getDetailed(this.propsData.id, this.URL).then(res => {
this.propsData = res
// this.displayDialog.detailsDialog = true;
})
this.paging();
}).catch(err => {
this.Loading.appMainLoading = false
})
} else if (val == 'handle') {
this.Loading.appMainLoading = true
let propsData = JSON.parse(JSON.stringify(this.propsData));
this.$listAssign(this.handleFormData, propsData)
this.handleFormData.details = []
// let data = JSON.parse(JSON.stringify(...this.childTableData))
propsData.details.forEach(item => {
let data = JSON.parse(JSON.stringify(...this.childTableData))
this.$listAssign(data, item)
this.handleFormData.details.push(data)
// delete item.arriveNumber
// delete item.supplierPack
// delete item.convertRate
})
this.Loading.appMainLoading = false
this.formTitle = "执行" + this.$route.meta.title;
this.displayDialog.handleFromDialog = true
}else if(val == 'invalid'){
let data = {
id: this.propsData.id
}
this.Loading.appMainLoading = true
Invalid(this.URL, data).then(res=>{
this.displayDialog.detailsDialog = false
this.$successMsg('已作废任务!')
this.paging()
this.Loading.appMainLoading = false
}).catch(err=>{
this.Loading.appMainLoading = false
})
}
},
handleFormSubmit (val) {
return new Promise((resolve, reject) => {
let data = {
id: this.propsData.id
}
handle(this.handleFormData, data, this.URL).then(res => {
this.displayDialog.handleFromDialog = false;
this.$successMsg('已生成采购退货记录!')
getDetailed(this.propsData.id, this.URL).then(res => {
this.propsData = res
// this.displayDialog.detailsDialog = true;
})
this.paging()
this.FormRemove(val)
resolve()
}).catch(err => {
reject();
})
})
}
}
};
</script>
<style lang="scss" scoped>
@import "../../../styles/mainbasicData.scss";
</style>

66
fe/PC/src/views/finishedProductManage/completDump/completDumpRequest.vue → fe/PC/src/views/finishedProductManage/completDump/completDumpNotePT.vue

@ -24,18 +24,7 @@
:httpOverallSearchData="httpOverallSearchData"
>
</tablePagination>
<!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用-->
<!-- methodValue 导入方式默认选项 是否局部导入 默认选项 -->
<importFile
:loading="Loading.importLoading"
:show="displayDialog.importDialog"
:URL="URL"
:disabledMethod = {method1:false,method2:false,method3:false}
:disabledIsAllowPartImport = {isAllowPartImport1:false,isAllowPartImport2:false}
isAllowPartImportValue="1"
@importClick="postImportMergeClick(arguments)"
@postImportDown="importDown"
></importFile>
<!-- 抽屉 -->
<curren-Drawer
:title="tableColumns"
:DrawerLoading="Loading.DrawerLoading"
@ -43,9 +32,9 @@
:propsData="propsData"
:tabsDesTions="tabsDesTions"
:Butttondata="DrawerButtonData"
@drawerbutton="drawerbutton"
@drawerShut="(val) => (displayDialog.detailsDialog = val)"
@close-value="closeValue"
@drawerbutton="drawerbutton"
:tableColumns="detailsTableColumns"
:totalCount="totalCountDetails"
:MaxResultCount="MaxResultCountDetails"
@ -55,14 +44,15 @@
</div>
</template>
<script>
import { getPageListWip,getOneSupplierInfoByCode } from "@/api/wms-api"
import { tableMixins } from "@/mixins/TableMixins"
import { LoadingMixins } from "@/mixins/LoadingMixins"
import { drawerMixins } from "@/mixins/drawerMixins"
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import { requestData } from "@/utils/processButtonData"
import {initPrintAllData} from "@/mixins/printMixin"
export default {
name: "completDumpRequest",
name: "completDumpNotePT",
mixins: [
tableMixins,
LoadingMixins,
@ -70,37 +60,51 @@ export default {
TableHeaderMixins,
mixins,
],
computed: {
hideButton: function () {
return function (val) {
let data = true
val.forEach(key => {
if (this.propsData.requestStatus == key) {
data = false
}
})
return data
}
},
},
data () {
return {
URL: 'wms/store/purchase-return-request',
URL: 'wms/store/transfer-note/get-coating-list',
listURL: 'wms/store/transfer-note/get-coating-list',
//
currenButtonData: [
this.defaultImportBtn(),//
this.defaultFieldSettingBtn(),//
this.defaultFreshBtn(),//
this.defaultFilterBtn(),//
],
DrawerButtonData: [
...requestData(this)
// {
// type: 'info',
// icon: 'el-icon-printer',
// label: '',
// hide: false,
// name: "print",
// size: 'mini'
// },
],
};
},
mounted () {
this.paging();
},
methods: {
//
// drawerbutton (val) {
// //
// if(val == 'print'){
// if((this.propsData.supplierCode) && (!this.propsData.supplierShortName)){
// getOneSupplierInfoByCode(this.propsData.supplierCode).then(res => {
// if(res){this.propsData.supplierShortName = res.shortName || res.name}
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }).catch(err => {
// console.log(err)
// })
// }else{
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }
// }
// },
}
};
</script>
<style lang="scss" scoped>

73
fe/PC/src/views/finishedProductManage/completDump/completDumpNote.vue → fe/PC/src/views/finishedProductManage/completDump/completDumpNoteZP.vue

@ -52,7 +52,7 @@ import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import {initPrintAllData} from "@/mixins/printMixin"
export default {
name: "completDumpNote",
name: "completDumpNoteZP",
mixins: [
tableMixins,
LoadingMixins,
@ -62,26 +62,23 @@ export default {
],
data () {
return {
URL: 'wms/store/purchase-return-note',
URL: 'wms/store/transfer-note/get-assemble-list',
listURL: 'wms/store/transfer-note/get-assemble-list',
//
currenButtonData: [
//
this.defaultExportBtn({
url:"wms/store/purchase-return-note/export-after-puton"
}),
this.defaultFieldSettingBtn(),//
this.defaultFreshBtn(),//
this.defaultFilterBtn(),//
],
DrawerButtonData: [
{
type: 'info',
icon: 'el-icon-printer',
label: '打印',
hide: false,
name: "print",
size: 'mini'
},
// {
// type: 'info',
// icon: 'el-icon-printer',
// label: '',
// hide: false,
// name: "print",
// size: 'mini'
// },
],
};
},
@ -89,38 +86,24 @@ export default {
this.paging();
},
methods: {
//
paging(callback) {
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount,
getPageListWip(this.PageListParams, 'wms/store/purchase-return-note/list-after-puton')
.then(res => {
this.tableData = res.items
this.totalCount = res.totalCount
this.pagingCallback(callback)
})
.catch(err => {
this.Loading.tableLoading = false
})
},
//
drawerbutton (val) {
//
if(val == 'print'){
if((this.propsData.supplierCode) && (!this.propsData.supplierShortName)){
getOneSupplierInfoByCode(this.propsData.supplierCode).then(res => {
if(res){this.propsData.supplierShortName = res.shortName || res.name}
let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
this.Print(data)
}).catch(err => {
console.log(err)
})
}else{
let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
this.Print(data)
}
}
},
// drawerbutton (val) {
// //
// if(val == 'print'){
// if((this.propsData.supplierCode) && (!this.propsData.supplierShortName)){
// getOneSupplierInfoByCode(this.propsData.supplierCode).then(res => {
// if(res){this.propsData.supplierShortName = res.shortName || res.name}
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }).catch(err => {
// console.log(err)
// })
// }else{
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }
// }
// },
}
};
</script>

112
fe/PC/src/views/finishedProductManage/completDump/completDumpNoteZS.vue

@ -0,0 +1,112 @@
<template>
<div class="page-box" v-loading="Loading.appMainLoading">
<tablePagination
:currenButtonData="currenButtonData"
:tableData="tableData"
:tableLoading="Loading.tableLoading"
:tableColumns="tableColumns"
@rowDrop="rowDrop"
:totalCount="totalCount"
:multipleSelection="multipleSelection"
:MaxResultCount="PageListParams.MaxResultCount"
@topbutton="topbutton"
@inlineDialog="inlineDialog"
@sortChange="sortChange"
@alertoldSkipCount="alertoldSkipCount"
@alterResultCount="alterResultCount"
@handleSelectionChange="handleSelectionChange"
:currentPageProps="oldSkipCount"
:quicklySearchOption="quicklySearchOption"
@quicklySearchClick="quicklySearchClick"
@quicklySearchClear="quicklySearchClear"
:primarySearchOption="primarySearchOption"
@overallSearchFormClick="overallSearchFormClick"
:httpOverallSearchData="httpOverallSearchData"
>
</tablePagination>
<!-- 抽屉 -->
<curren-Drawer
:title="tableColumns"
:DrawerLoading="Loading.DrawerLoading"
:drawer="displayDialog.detailsDialog"
:propsData="propsData"
:tabsDesTions="tabsDesTions"
:Butttondata="DrawerButtonData"
@drawerShut="(val) => (displayDialog.detailsDialog = val)"
@close-value="closeValue"
@drawerbutton="drawerbutton"
:tableColumns="detailsTableColumns"
:totalCount="totalCountDetails"
:MaxResultCount="MaxResultCountDetails"
@alterResultCountDetails="alterResultCountDetails"
@alertoldSkipCountDetails="alertoldSkipCountDetails"
></curren-Drawer>
</div>
</template>
<script>
import { getPageListWip,getOneSupplierInfoByCode } from "@/api/wms-api"
import { tableMixins } from "@/mixins/TableMixins"
import { LoadingMixins } from "@/mixins/LoadingMixins"
import { drawerMixins } from "@/mixins/drawerMixins"
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import {initPrintAllData} from "@/mixins/printMixin"
export default {
name: "completDumpNoteZS",
mixins: [
tableMixins,
LoadingMixins,
drawerMixins,
TableHeaderMixins,
mixins,
],
data () {
return {
URL: 'wms/store/transfer-note/get-Injection-list',
listURL: 'wms/store/transfer-note/get-Injection-list',
//
currenButtonData: [
this.defaultFieldSettingBtn(),//
this.defaultFreshBtn(),//
this.defaultFilterBtn(),//
],
DrawerButtonData: [
// {
// type: 'info',
// icon: 'el-icon-printer',
// label: '',
// hide: false,
// name: "print",
// size: 'mini'
// },
],
};
},
mounted () {
this.paging();
},
methods: {
//
// drawerbutton (val) {
// //
// if(val == 'print'){
// if((this.propsData.supplierCode) && (!this.propsData.supplierShortName)){
// getOneSupplierInfoByCode(this.propsData.supplierCode).then(res => {
// if(res){this.propsData.supplierShortName = res.shortName || res.name}
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }).catch(err => {
// console.log(err)
// })
// }else{
// let data = initPrintAllData(this.tableDataDetails,'thd.rdlx','PurReturnReason');
// this.Print(data)
// }
// }
// },
}
};
</script>
<style lang="scss" scoped>
@import "../../../styles/mainbasicData.scss";
</style>

7
fe/PC/src/views/finishedProductManage/deliver/FISDeliverNote-Query.vue

@ -119,13 +119,6 @@ export default {
drawerbutton (val) {
//
if(val == 'print'){
let _option = {
details:{
packingCode:"toPackingCode",
}
}
let data = initPrintAllData(this.tableDataDetails,'chdmxb.rdlx',false,_option);
this.Print(data)
this.beforePrintHandle(()=>{
let _option = {
details:{

69
fe/PC/src/views/finishedProductManage/deliver/FISDeliverRequest.vue

@ -33,7 +33,7 @@
:tabsDesTions="tabsDesTions"
:Butttondata="DrawerButtonData"
@drawerShut="(val) => (displayDialog.detailsDialog = val)"
@drawerbutton="drawerbutton"
@drawerbutton="drawerbuttonHandle"
@handleCommand="drawerHandle"
@close-value="closeValue"
:tableColumns="detailsTableColumns"
@ -57,12 +57,18 @@
</div>
</template>
<script>
import {
processRequest,
getDetailed,
getPageListWip,
} from "@/api/wms-api";
import { tableMixins } from "@/mixins/TableMixins"
import { LoadingMixins } from "@/mixins/LoadingMixins"
import { drawerMixins } from "@/mixins/drawerMixins"
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import { requestData } from "@/utils/processButtonData"
import { initPrintAllData } from '@/mixins/printMixin'
export default {
name: "FISDeliverRequest",
mixins: [
@ -104,6 +110,67 @@ export default {
mounted () {
this.paging();
},
methods:{
printHandle(){
this.Loading.appMainLoading = true
let param = {
maxResultCount: 1000,
condition: {
filters: [{
logic: "And",
column: "deliverRequestNumber",
action: "==",
value: this.propsData.number
}]
},
sorting: "",
skipCount: 0
}
//
this.Loading.appMainLoading = true
getPageListWip(param, 'wms/store/deliver-note/list-for-fis',true)
.then(res => {
let _option = {
details:{
packingCode:"toPackingCode",
}
}
let data = initPrintAllData(res.items[0],'chdmxb.rdlx',false,_option);
this.Print(data)
this.Loading.appMainLoading = false
})
.catch(err=>{
console.log(err)
})
},
drawerbuttonHandle(val){
//
if (val == 'agreeRequest') {
this.Loading.appMainLoading = true
processRequest(this.propsData.id, this.URL + '/agree/').then(res => {
getDetailed(this.propsData.id, this.URL).then(res => {
this.propsData = res
})
this.paging()
this.$confirm('审批成功,是否需要打印发货单', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//
this.printHandle()
}).catch(() => {
});
this.Loading.appMainLoading = false
}).catch(err => {
this.Loading.appMainLoading = false
})
}else{
this.drawerbutton(val)
}
}
}
}
</script>
<style lang="scss" scoped>

547
fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue

@ -0,0 +1,547 @@
<template>
<el-dialog
:title="formTitle"
v-loading="loading"
v-if="displayDialog.newDialog"
:visible="true"
:fullscreen="true"
:append-to-body="false"
:modal="false"
:modal-append-to-body="false"
:show-close="false"
>
<div id="StepsFormTree">
<el-steps
:active="active"
process-status="finish"
finish-status="success"
:align-center="true"
>
<el-step
v-for="(item, index) in stepFilters"
:key="index"
:title="item"
></el-step>
</el-steps>
<curren-Form
v-if="active == 0"
class="page1"
size="medium"
ref="page1"
:searchData="CreateFormData"
:searchForm="CreateForm"
:searchOptions="Options"
:searchHandle="editHandle"
:rules="Rules"
@changeInput="changeInput"
@changeSelect="changeSelect"
@push="DataPush(arguments)"
@submitForm="editFormClick(arguments)"
>
</curren-Form>
<curren-Form
v-if="active === 1"
class="page2"
size="medium"
:searchData="CreateFormData"
:searchHandle="editHandle"
:rules="Rules"
@submitForm="editFormClick(arguments)"
>
<template>
<el-form-item class="formTable-box " prop="details" v-if="active == 1">
<b style="font-size:20px;padding-bottom:10px">父级物料代码{{ propsData.details[0].itemCode }}</b>
<el-table
height="85%"
ref="bomTree_Ref"*
:data="CreateFormData.details"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
:border="true"
default-expand-all
@select="tableHandleSelect"
@select-all="tableHandleSelectAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
:prop="detailsTableColumns[0].prop"
:label="detailsTableColumns[0].label"
width="auto"
>
</el-table-column>
<el-table-column
:prop="detailsTableColumns[1].prop"
:label="detailsTableColumns[1].label"
width="auto">
</el-table-column>
<el-table-column
:prop="detailsTableColumns[2].prop"
:label="detailsTableColumns[2].label"
>
<template slot-scope="scope">
<!-- {{scope.$index}}
{{scope.row}} -->
<filterSelect
:selectModel="scope.row[detailsTableColumns[2].prop]"
:selectItem="detailsTableColumns[2]"
:tableScope="scope"
@filterOptionSelectHandle="(item,props,val)=>{filterOptionSelectHandle(item,props,val,scope)}"
@filterClearHandle="(item)=>{filterClearHandle(item,scope)}"
></filterSelect>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
</curren-Form>
<div
v-if="active === step.length - 1 && pageStatus === 'success'"
class="page4"
>
<el-result
icon="success"
title="成功提示"
:subTitle="formTitle + '成功'"
>
<template slot="extra">
<!-- <el-button type="primary" size="medium" @click="tuoFormPrint"
>打印托标签</el-button
>
<el-button type="primary" size="medium" @click="xbqFormPrint"
>打印箱标签</el-button
> -->
<el-button
v-for="item in successHandle"
:key="item.label"
:type="item.type"
size="medium"
@click="item.click()"
>{{ item.label }}</el-button
>
<!-- @click="successClick(item.click())" -->
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
<div
v-if="active === step.length - 1 && pageStatus === 'error'"
class="page4"
>
<el-result icon="error" title="错误提示" :subTitle="formTitle + '失败'">
<template slot="extra">
<el-button type="primary" size="medium" @click="resubmit()"
>重新提交</el-button
>
<el-button type="primary" size="medium" @click="active--"
>上一步</el-button
>
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
</div>
</el-dialog>
</template>
<script>
import currenForm from "@/components/currenForm"
import currenTable from "@/components/currenTable"
import filterSelect from "@/components/filterSelect"
export default {
name: 'StepsFormTree',
components: {
currenForm,
currenTable,
filterSelect
},
watch: {
active (val) {
if(val == 0){
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}else{
this.editHandle=[
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
];
}
}else if(val == 1){
this.editHandle=[
{ label: "上一步", name: "cancel" },
{ label: "提交", type: "primary", name: "determine" },
];
}
},
stepArray(newVal, oldVal){
this.step = newVal
}
},
filters: {
formData (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = "true"
delete data[index].focus
if (key.type == "autocomplete" || key.type == "import") {
data[index].type = "input"
}
});
return data
},
formDataDetails (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = true
delete data[index].focus
delete data[index].rules
if (key.type == "autocomplete" || key.type == "import") {
delete data[index].type
} else if (key.type == "objectAutocomplete") {
data[index].type = "object"
} else if (key.prop == "containerCode" && key.type == "input") {
data[index].disabled = false
} else if (key.isChange) {
//
data[index].disabled = false
}
});
return data
}
},
props: {
//
formTitle: {
type: String,
default: ''
},
//
displayDialog: {
type: Object,
default: () => {
return {
newDialog: false
}
}
},
//
propsData: {
type: Object,
default: () => {
return {}
}
},
//
CreateFormData: {
type: Object,
default: () => {
return {}
}
},
//form
CreateForm: {
type: Array,
default: () => {
return []
}
},
//
Rules: {
type: Object,
default: () => {
return {}
}
},
//
Options: {
type: Object,
default: () => {
return {}
}
},
//table
detailsTableColumns: {
type: Array,
default: () => {
return []
}
},
//
childTableData: {
type: Array,
default: () => {
return []
}
},
//
successHandle: {
type: Array,
default: () => {
return []
}
},
//
stepArray: {
type: Array,
default: () => {
return ["总体信息", "明细", "结果"]
}
},
//
addClickButton: {
type: Boolean,
default: () => {
return true
}
},
//
importFormButton: {
type: Boolean,
default: () => {
return false
}
},
//
isShowDeleteButton: {
type: Boolean,
default: () => {
return true
}
},
//
isHideFirstActiveCancel:{
type: Boolean,
default: () => {
return false
}
},
},
computed: {
stepFilters () {
let stepFilters = []
const routeName = this.$route.meta.title
this.step.forEach(key => {
stepFilters.push(routeName.concat(key))
})
return stepFilters
},
},
data () {
return {
active: 0,
formReveal: 1,
activeStep: 1,
pageStatus: '',
addClick: this.addClickButton,//
importForm:this.importFormButton,//
showDeleteButton: this.isShowDeleteButton,//-
hideFirstActiveCancel:this.isHideFirstActiveCancel,//
loading: false,
session: null,
step: this.stepArray,
editHandle: [
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
],
isAllCheck:false,//
selectData:[],//
}
},
mounted () {
this.session = JSON.parse(JSON.stringify(this.CreateFormData))
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}
},
methods: {
// filterSelectoption
filterOptionSelectHandle(item,props,val,scope){
this.$emit("push", item,props,val,scope);
},
// // filterSelect
filterClearHandle(item,scope){
this.$emit("clear", item,scope);
},
//
tableHandleSelect(selection, row){
this.selectData = selection
const isCheck = selection.length && selection.indexOf(row) !== -1
if(selection.length <= 0){}
if (isCheck) {
console.log("勾选",selection, row)
}else{
console.log("取消",selection, row)
}
},
//
getLastFloors(root, onePathDeep = 1, deepArr = []){
for (let i = 0; i < root.length; i++) {
if (root[i] == null) return 0
// children
if (!root[i].children?.length) {
deepArr.push(root[i])
} else {
onePathDeep++
this.getLastFloors(root[i].children, onePathDeep, deepArr)
}
}
return deepArr;
},
//
tableHandleSelectAll(selection){
this.isAllCheck = !this.isAllCheck
if(this.isAllCheck){
console.log("全选",selection)
//
this.selectData = this.getLastFloors(this.CreateFormData.details)
console.log(407,this.$refs.bomTree_Ref)
this.$refs.bomTree_Ref.clearSelection();
this.selectData.forEach(item=>{
this.$refs.bomTree_Ref.toggleRowSelection(item,true);
})
}else{
console.log("全不选",selection)
this.$refs.bomTree_Ref.clearSelection();
this.selectData = []
}
},
//退
close (val) {
this.isAllCheck = false
this.selectData = []
this.active = 0
// const pageRef = this.Refs[1]
const data = JSON.parse(JSON.stringify(this.session))
this.$emit('close', data, val)
},
//autoComplete
DataPush (val) {
this.$emit("DataPush", val)
},
// //
// tuoFormPrint () {
// this.$emit('tuoFormPrint')
// },
// //
// xbqFormPrint () {
// this.$emit('xbqFormPrint')
// },
successClick (val) {
this.loading = true
val.then(res => {
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
},
editFormClick (val) {
// Moment(this.CreateFormData.arriveTime).format()
// if (val[0] == 0) {
if (val[2].name == "cancel") {
if (this.active == 0) {
// debugger
// this.active = ''
this.close(0)
} else {
// if (this.active == 2) {
// this.active = this.active - this.activeStep
// } else {
this.active--
// }
}
} else {
val[1].validate((valid) => {
if (valid) {
const parent = this.$parent
if(this.active == 0){
parent.PalletlFunction(this.active).then(res => {
//
this.active++
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}else{
parent.PalletlFunction(this.active).then(res => {
//
this.loading = false
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.active++
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.active++
this.loading = false
}).catch(err=>{
this.loading = false
})
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}
} else {
this.$errorMsg('请检查表单')
}
})
}
},
resubmit(){
const parent = this.$parent
this.loading = true
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.loading = false
}).catch(err=>{
this.loading = false
})
},
//
openAddNew () {
const parent = this.$parent
parent.openAddNew()
},
//
openImportForm(){
const parent = this.$parent
parent.openImportFormHandle()
// this.displayDialog.importDialog = true
},
childTable (e, val) {
const parent = this.$parent
parent.childTable(e, val)
},
changeInput(prop,val){
this.$emit("changeInput", prop, val)
},
changeSelect(prop,val){
this.$emit("changeSelect", prop, val)
},
}
}
</script>
<style lang="scss" scoped>
@import "./style/index.scss";
</style>

542
fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_currenTable.vue

@ -0,0 +1,542 @@
<template>
<el-dialog
:title="formTitle"
v-loading="loading"
v-if="displayDialog.newDialog"
:visible="true"
:fullscreen="true"
:append-to-body="false"
:modal="false"
:modal-append-to-body="false"
:show-close="false"
>
<div id="StepsFormTree">
<el-steps
:active="active"
process-status="finish"
finish-status="success"
:align-center="true"
>
<el-step
v-for="(item, index) in stepFilters"
:key="index"
:title="item"
></el-step>
</el-steps>
<curren-Form
v-if="active == 0"
class="page1"
size="medium"
ref="page1"
:searchData="CreateFormData"
:searchForm="CreateForm"
:searchOptions="Options"
:searchHandle="editHandle"
:rules="Rules"
@changeInput="changeInput"
@changeSelect="changeSelect"
@push="DataPush(arguments)"
@submitForm="editFormClick(arguments)"
>
</curren-Form>
<curren-Form
v-if="active === 1"
class="page2"
size="medium"
:searchData="CreateFormData"
:searchHandle="editHandle"
:rules="Rules"
@submitForm="editFormClick(arguments)"
>
<template>
<el-form-item class="formTable-box " prop="details" v-if="active == 1">
<div class="heder">
<el-button
v-if="addClick"
type="primary"
@click="openAddNew"
icon="el-icon-plus"
size="mini"
>添加一行</el-button>
<el-button
v-if="importFormButton"
type="success"
icon="el-icon-download"
@click="openImportForm"
size="mini"
>导入</el-button>
</div>
<b style="font-size:20px;padding-bottom:10px">父级物料代码{{ propsData.details[0].itemCode }}</b>
<currenTable
ref="bomTree_Ref"
:tableData="CreateFormData.details"
:searchOptions="Options"
:tableColumns="detailsTableColumns"
:selectionTable="true"
@push="detailsDataPush(arguments)"
@clear="detailsClear(arguments)"
@tableHandleSelect="tableHandleSelect"
@tableHandleSelectAll="tableHandleSelectAll"
:isDefaultExpandAll="true"
:treeProps="{children: 'children', hasChildren: 'hasChildren'}"
>
<template v-if="showDeleteButton">
<el-table-column
label="操作"
align="center"
fixed="right"
width="100px"
>
<template slot-scope="scope">
<div class="childTable" @click="childTable($event, scope)">
<span>删除</span>
</div>
</template>
</el-table-column>
</template>
</currenTable>
</el-form-item>
</template>
</curren-Form>
<div
v-if="active === step.length - 1 && pageStatus === 'success'"
class="page4"
>
<el-result
icon="success"
title="成功提示"
:subTitle="formTitle + '成功'"
>
<template slot="extra">
<!-- <el-button type="primary" size="medium" @click="tuoFormPrint"
>打印托标签</el-button
>
<el-button type="primary" size="medium" @click="xbqFormPrint"
>打印箱标签</el-button
> -->
<el-button
v-for="item in successHandle"
:key="item.label"
:type="item.type"
size="medium"
@click="item.click()"
>{{ item.label }}</el-button
>
<!-- @click="successClick(item.click())" -->
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
<div
v-if="active === step.length - 1 && pageStatus === 'error'"
class="page4"
>
<el-result icon="error" title="错误提示" :subTitle="formTitle + '失败'">
<template slot="extra">
<el-button type="primary" size="medium" @click="resubmit()"
>重新提交</el-button
>
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
</div>
</el-dialog>
</template>
<script>
import currenForm from "@/components/currenForm"
import currenTable from "@/components/currenTable"
export default {
name: 'StepsFormTree',
components: {
currenForm,
currenTable
},
watch: {
active (val) {
if(val == 0){
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}else{
this.editHandle=[
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
];
}
}else if(val == 1){
this.editHandle=[
{ label: "上一步", name: "cancel" },
{ label: "提交", type: "primary", name: "determine" },
];
}
},
stepArray(newVal, oldVal){
this.step = newVal
}
},
filters: {
formData (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = "true"
delete data[index].focus
if (key.type == "autocomplete" || key.type == "import") {
data[index].type = "input"
}
});
return data
},
formDataDetails (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = true
delete data[index].focus
delete data[index].rules
if (key.type == "autocomplete" || key.type == "import") {
delete data[index].type
} else if (key.type == "objectAutocomplete") {
data[index].type = "object"
} else if (key.prop == "containerCode" && key.type == "input") {
data[index].disabled = false
} else if (key.isChange) {
//
data[index].disabled = false
}
});
return data
}
},
props: {
//
formTitle: {
type: String,
default: ''
},
//
displayDialog: {
type: Object,
default: () => {
return {
newDialog: false
}
}
},
//
propsData: {
type: Object,
default: () => {
return {}
}
},
//
CreateFormData: {
type: Object,
default: () => {
return {}
}
},
//form
CreateForm: {
type: Array,
default: () => {
return []
}
},
//
Rules: {
type: Object,
default: () => {
return {}
}
},
//
Options: {
type: Object,
default: () => {
return {}
}
},
//table
detailsTableColumns: {
type: Array,
default: () => {
return []
}
},
//
childTableData: {
type: Array,
default: () => {
return []
}
},
//
successHandle: {
type: Array,
default: () => {
return []
}
},
//
stepArray: {
type: Array,
default: () => {
return ["总体信息", "明细", "结果"]
}
},
//
addClickButton: {
type: Boolean,
default: () => {
return true
}
},
//
importFormButton: {
type: Boolean,
default: () => {
return false
}
},
//
isShowDeleteButton: {
type: Boolean,
default: () => {
return true
}
},
//
isHideFirstActiveCancel:{
type: Boolean,
default: () => {
return false
}
},
},
computed: {
stepFilters () {
let stepFilters = []
const routeName = this.$route.meta.title
this.step.forEach(key => {
stepFilters.push(routeName.concat(key))
})
return stepFilters
},
},
data () {
return {
active: 0,
formReveal: 1,
activeStep: 1,
pageStatus: '',
addClick: this.addClickButton,//
importForm:this.importFormButton,//
showDeleteButton: this.isShowDeleteButton,//-
hideFirstActiveCancel:this.isHideFirstActiveCancel,//
loading: false,
session: null,
step: this.stepArray,
editHandle: [
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
],
isAllCheck:false,//
selectData:[],//
}
},
mounted () {
this.session = JSON.parse(JSON.stringify(this.CreateFormData))
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}
},
methods: {
//
tableHandleSelect(selection, row){
this.selectData = selection
const isCheck = selection.length && selection.indexOf(row) !== -1
if(selection.length <= 0){}
if (isCheck) {
console.log("勾选",selection, row)
}else{
console.log("取消",selection, row)
}
},
//
getLastFloors(root, onePathDeep = 1, deepArr = []){
for (let i = 0; i < root.length; i++) {
if (root[i] == null) return 0
// children
if (!root[i].children?.length) {
deepArr.push(root[i])
} else {
onePathDeep++
this.getLastFloors(root[i].children, onePathDeep, deepArr)
}
}
return deepArr;
},
//
tableHandleSelectAll(selection){
this.isAllCheck = !this.isAllCheck
if(this.isAllCheck){
console.log("全选",selection)
//
this.selectData = this.getLastFloors(this.CreateFormData.details)
this.$refs.bomTree_Ref.$refs.multipleTable.clearSelection();
this.selectData.forEach(item=>{
this.$refs.bomTree_Ref.$refs.multipleTable.toggleRowSelection(item,true);
})
}else{
console.log("全不选",selection)
this.$refs.bomTree_Ref.$refs.multipleTable.clearSelection();
this.selectData = []
}
},
//退
close (val) {
this.isAllCheck = false
this.selectData = []
this.active = 0
// const pageRef = this.Refs[1]
const data = JSON.parse(JSON.stringify(this.session))
this.$emit('close', data, val)
},
//autoComplete
DataPush (val) {
this.$emit("DataPush", val)
},
//autoComplete
detailsDataPush (val) {
this.$emit("detailsDataPush", val)
},
detailsClear(val) {
this.$emit("detailsClear", val)
},
// //
// tuoFormPrint () {
// this.$emit('tuoFormPrint')
// },
// //
// xbqFormPrint () {
// this.$emit('xbqFormPrint')
// },
successClick (val) {
this.loading = true
val.then(res => {
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
},
editFormClick (val) {
// Moment(this.CreateFormData.arriveTime).format()
// if (val[0] == 0) {
if (val[2].name == "cancel") {
if (this.active == 0) {
// debugger
// this.active = ''
this.close(0)
} else {
// if (this.active == 2) {
// this.active = this.active - this.activeStep
// } else {
this.active--
// }
}
} else {
val[1].validate((valid) => {
if (valid) {
const parent = this.$parent
if(this.active == 0){
parent.PalletlFunction(this.active).then(res => {
//
this.active++
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}else{
parent.PalletlFunction(this.active).then(res => {
//
this.loading = false
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.active++
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.active++
this.loading = false
}).catch(err=>{
this.loading = false
})
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}
} else {
this.$errorMsg('请检查表单')
}
})
}
},
resubmit(){
const parent = this.$parent
this.loading = true
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.loading = false
}).catch(err=>{
this.loading = false
})
},
//
openAddNew () {
const parent = this.$parent
parent.openAddNew()
},
//
openImportForm(){
const parent = this.$parent
parent.openImportFormHandle()
// this.displayDialog.importDialog = true
},
childTable (e, val) {
const parent = this.$parent
parent.childTable(e, val)
},
changeInput(prop,val){
this.$emit("changeInput", prop, val)
},
changeSelect(prop,val){
this.$emit("changeSelect", prop, val)
},
}
}
</script>
<style lang="scss" scoped>
@import "./style/index.scss";
</style>

548
fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_el.vue

@ -0,0 +1,548 @@
<template>
<el-dialog
:title="formTitle"
v-loading="loading"
v-if="displayDialog.newDialog"
:visible="true"
:fullscreen="true"
:append-to-body="false"
:modal="false"
:modal-append-to-body="false"
:show-close="false"
>
<div id="StepsFormTree">
<el-steps
:active="active"
process-status="finish"
finish-status="success"
:align-center="true"
>
<el-step
v-for="(item, index) in stepFilters"
:key="index"
:title="item"
></el-step>
</el-steps>
<curren-Form
v-if="active == 0"
class="page1"
size="medium"
ref="page1"
:searchData="CreateFormData"
:searchForm="CreateForm"
:searchOptions="Options"
:searchHandle="editHandle"
:rules="Rules"
@changeInput="changeInput"
@changeSelect="changeSelect"
@push="DataPush(arguments)"
@submitForm="editFormClick(arguments)"
>
</curren-Form>
<curren-Form
v-if="active === 1"
class="page2"
size="medium"
:searchData="CreateFormData"
:searchHandle="editHandle"
:rules="Rules"
@submitForm="editFormClick(arguments)"
>
<template>
<el-form-item class="formTable-box " prop="details" v-if="active == 1">
<b style="font-size:20px;padding-bottom:10px">父级物料代码{{ propsData.details[0].itemCode }}</b>
<el-table
ref="bomTree_Ref"
:data="CreateFormData.details"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
:border="true"
default-expand-all
@select="tableHandleSelect"
@select-all="tableHandleSelectAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="partCode"
label="子物料代码"
width="auto"
>
</el-table-column>
<el-table-column
prop="qty"
label="数量"
width="auto">
</el-table-column>
<el-table-column
prop="rawLocationCode"
label="目标库位">
<template slot-scope="scope">
<!-- {{scope.$index}}
{{scope.row}} -->
<filterSelect
:selectModel="scope.row['rawLocationCode']"
:selectItem="detailsTableColumns[2]"
:tableScope="scope"
@filterOptionSelectHandle="(item,props,val)=>{filterOptionSelectHandle(item,props,val,scope)}"
@filterClearHandle="(item)=>{filterClearHandle(item,scope)}"
></filterSelect>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
</curren-Form>
<div
v-if="active === step.length - 1 && pageStatus === 'success'"
class="page4"
>
<el-result
icon="success"
title="成功提示"
:subTitle="formTitle + '成功'"
>
<template slot="extra">
<!-- <el-button type="primary" size="medium" @click="tuoFormPrint"
>打印托标签</el-button
>
<el-button type="primary" size="medium" @click="xbqFormPrint"
>打印箱标签</el-button
> -->
<el-button
v-for="item in successHandle"
:key="item.label"
:type="item.type"
size="medium"
@click="item.click()"
>{{ item.label }}</el-button
>
<!-- @click="successClick(item.click())" -->
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
<div
v-if="active === step.length - 1 && pageStatus === 'error'"
class="page4"
>
<el-result icon="error" title="错误提示" :subTitle="formTitle + '失败'">
<template slot="extra">
<el-button type="primary" size="medium" @click="resubmit()"
>重新提交</el-button
>
<el-button type="primary" size="medium" @click="close(1)"
>退出</el-button
>
</template>
</el-result>
</div>
</div>
</el-dialog>
</template>
<script>
import currenForm from "@/components/currenForm"
import currenTable from "@/components/currenTable"
import filterSelect from "@/components/filterSelect"
export default {
name: 'StepsFormTree',
components: {
currenForm,
currenTable,
filterSelect
},
watch: {
active (val) {
if(val == 0){
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}else{
this.editHandle=[
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
];
}
}else if(val == 1){
this.editHandle=[
{ label: "上一步", name: "cancel" },
{ label: "提交", type: "primary", name: "determine" },
];
}
},
stepArray(newVal, oldVal){
this.step = newVal
}
},
filters: {
formData (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = "true"
delete data[index].focus
if (key.type == "autocomplete" || key.type == "import") {
data[index].type = "input"
}
});
return data
},
formDataDetails (val) {
let data = JSON.parse(JSON.stringify(val))
val.forEach((key, index) => {
data[index].disabled = true
delete data[index].focus
delete data[index].rules
if (key.type == "autocomplete" || key.type == "import") {
delete data[index].type
} else if (key.type == "objectAutocomplete") {
data[index].type = "object"
} else if (key.prop == "containerCode" && key.type == "input") {
data[index].disabled = false
} else if (key.isChange) {
//
data[index].disabled = false
}
});
return data
}
},
props: {
//
formTitle: {
type: String,
default: ''
},
//
displayDialog: {
type: Object,
default: () => {
return {
newDialog: false
}
}
},
//
propsData: {
type: Object,
default: () => {
return {}
}
},
//
CreateFormData: {
type: Object,
default: () => {
return {}
}
},
//form
CreateForm: {
type: Array,
default: () => {
return []
}
},
//
Rules: {
type: Object,
default: () => {
return {}
}
},
//
Options: {
type: Object,
default: () => {
return {}
}
},
//table
detailsTableColumns: {
type: Array,
default: () => {
return []
}
},
//
childTableData: {
type: Array,
default: () => {
return []
}
},
//
successHandle: {
type: Array,
default: () => {
return []
}
},
//
stepArray: {
type: Array,
default: () => {
return ["总体信息", "明细", "结果"]
}
},
//
addClickButton: {
type: Boolean,
default: () => {
return true
}
},
//
importFormButton: {
type: Boolean,
default: () => {
return false
}
},
//
isShowDeleteButton: {
type: Boolean,
default: () => {
return true
}
},
//
isHideFirstActiveCancel:{
type: Boolean,
default: () => {
return false
}
},
},
computed: {
stepFilters () {
let stepFilters = []
const routeName = this.$route.meta.title
this.step.forEach(key => {
stepFilters.push(routeName.concat(key))
})
return stepFilters
},
},
data () {
return {
active: 0,
formReveal: 1,
activeStep: 1,
pageStatus: '',
addClick: this.addClickButton,//
importForm:this.importFormButton,//
showDeleteButton: this.isShowDeleteButton,//-
hideFirstActiveCancel:this.isHideFirstActiveCancel,//
loading: false,
session: null,
step: this.stepArray,
editHandle: [
{ label: "取消", name: "cancel" },
{ label: "下一步", type: "primary", name: "determine" },
],
isAllCheck:false,//
selectData:[],//
}
},
mounted () {
this.session = JSON.parse(JSON.stringify(this.CreateFormData))
if(this.hideFirstActiveCancel){
this.editHandle=[
{ label: "下一步", type: "primary", name: "determine" },
];
}
},
methods: {
// filterSelectoption
filterOptionSelectHandle(item,props,val,scope){
console.log(666,item,props,val,scope)
scope.row.rawLocationCode = val
scope.row.rawLocationArea = item.areaCode
scope.row.rawLocationErpCode = item.erpLocationCode
scope.row.rawLocationGroup = item.locationGroupCode
scope.row.warehouseCode = item.warehouseCode
},
// // filterSelect
filterClearHandle(item,scope){
console.log(777,this.CreateFormData.details,scope.$index)
scope.row.rawLocationCode = null
},
//
tableHandleSelect(selection, row){
this.selectData = selection
const isCheck = selection.length && selection.indexOf(row) !== -1
if(selection.length <= 0){}
if (isCheck) {
console.log("勾选",selection, row)
}else{
console.log("取消",selection, row)
}
},
//
getLastFloors(root, onePathDeep = 1, deepArr = []){
for (let i = 0; i < root.length; i++) {
if (root[i] == null) return 0
// children
if (!root[i].children?.length) {
deepArr.push(root[i])
} else {
onePathDeep++
this.getLastFloors(root[i].children, onePathDeep, deepArr)
}
}
return deepArr;
},
//
tableHandleSelectAll(selection){
this.isAllCheck = !this.isAllCheck
if(this.isAllCheck){
console.log("全选",selection)
//
this.selectData = this.getLastFloors(this.CreateFormData.details)
console.log(407,this.$refs.bomTree_Ref)
this.$refs.bomTree_Ref.clearSelection();
this.selectData.forEach(item=>{
this.$refs.bomTree_Ref.toggleRowSelection(item,true);
})
}else{
console.log("全不选",selection)
this.$refs.bomTree_Ref.clearSelection();
this.selectData = []
}
},
//退
close (val) {
this.isAllCheck = false
this.selectData = []
this.active = 0
// const pageRef = this.Refs[1]
const data = JSON.parse(JSON.stringify(this.session))
this.$emit('close', data, val)
},
//autoComplete
DataPush (val) {
this.$emit("DataPush", val)
},
// //
// tuoFormPrint () {
// this.$emit('tuoFormPrint')
// },
// //
// xbqFormPrint () {
// this.$emit('xbqFormPrint')
// },
successClick (val) {
this.loading = true
val.then(res => {
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
},
editFormClick (val) {
// Moment(this.CreateFormData.arriveTime).format()
// if (val[0] == 0) {
if (val[2].name == "cancel") {
if (this.active == 0) {
// debugger
// this.active = ''
this.close(0)
} else {
// if (this.active == 2) {
// this.active = this.active - this.activeStep
// } else {
this.active--
// }
}
} else {
val[1].validate((valid) => {
if (valid) {
const parent = this.$parent
if(this.active == 0){
parent.PalletlFunction(this.active).then(res => {
//
this.active++
this.loading = false
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}else{
parent.PalletlFunction(this.active).then(res => {
//
this.loading = false
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.active++
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.active++
this.loading = false
}).catch(err=>{
this.loading = false
})
}, reason => {
this.loading = false
}).catch(err=>{
this.loading = false
})
}
} else {
this.$errorMsg('请检查表单')
}
})
}
},
resubmit(){
const parent = this.$parent
this.loading = true
parent.stepsSubmit().then(res => {
this.pageStatus = 'success'
this.loading = false
}, reason => {
this.loading = false
if(reason=="return")return
this.pageStatus = 'error'
this.loading = false
}).catch(err=>{
this.loading = false
})
},
//
openAddNew () {
const parent = this.$parent
parent.openAddNew()
},
//
openImportForm(){
const parent = this.$parent
parent.openImportFormHandle()
// this.displayDialog.importDialog = true
},
childTable (e, val) {
const parent = this.$parent
parent.childTable(e, val)
},
changeInput(prop,val){
this.$emit("changeInput", prop, val)
},
changeSelect(prop,val){
this.$emit("changeSelect", prop, val)
},
}
}
</script>
<style lang="scss" scoped>
@import "./style/index.scss";
</style>

142
fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/style/index.scss

@ -0,0 +1,142 @@
#StepsFormTree {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
padding-bottom: 15px;
::v-deep .el-steps {
padding-bottom: 15px;
.el-step__main {
.el-step__title {
line-height: 24px;
font-size: 14px;
}
}
}
.page1 {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
overflow-y: auto;
}
.page2 {
// flex: 1;
// display: flex;
// flex-direction: column;
// justify-content: space-between;
// // padding-bottom: 54px;
// overflow: hidden;
// overflow-y: auto;
height: calc(100% - 95px);
::v-deep .el-form {
flex: 1;
display: flex;
height: 100%;
.el-row {
display: none;
}
.formTable-box {
flex: 1;
overflow: hidden;
overflow-y: auto;
.el-form-item__content {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
margin: 0 !important;
.heder {
padding: 5px 0;
text-align: center;
font-size: 18px;
button{
margin: 0 10px;
}
}
.el-table {
flex: 1;
.cell {
display:flex !important
}
.childTable {
display: flex;
justify-content: space-around;
span {
cursor: pointer;
&:nth-child(1) {
color: red;
}
&:nth-child(2) {
color: green;
}
}
}
}
}
}
}
::v-deep .formButton {
// position: absolute;
// bottom: 0;
// right: 0;
z-index: 3;
}
}
.page3 {
flex: 1;
display: flex;
flex-direction: column;
// padding-bottom: 54px;
overflow: hidden;
overflow-y: auto;
::v-deep .el-form {
flex: 1;
display: flex;
flex-direction: column;
.el-row {
flex: 1;
flex-wrap: wrap;
}
.formTable-box {
margin-bottom: 0;
// flex: 1;
.el-form-item__content {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
margin: 0 !important;
}
}
}
::v-deep .formButton {
// position: absolute;
// bottom: 0;
// right: 0;
z-index: 3;
}
}
}

4
fe/PC/src/views/finishedProductManage/dismantle/customerDismantleJob-old.vue

@ -66,7 +66,7 @@
import {
getDetailed,
getPageList,
getBomByComponentTree,
getBomByComponentList,
productRecycleNoteExport,
productionRecycleJobHandle,
// productionRecycleJobComplete
@ -337,7 +337,7 @@ export default {
this.Loading.appMainLoading = true
// bom
let _itemInfo = this.propsData.details[0]
getBomByComponentTree(_itemInfo.itemCode)
getBomByComponentList(_itemInfo.itemCode)
.then(res=>{
this.bomList = res
this.Loading.appMainLoading = false

112
fe/PC/src/views/finishedProductManage/dismantle/customerDismantleJob.vue

@ -44,7 +44,9 @@
:firstTabs="firstTabs"
></curren-Drawer>
<!--编辑-->
<StepsFormNotView
<StepsFormTree
ref="StepsFormTree_Ref"
:propsData="propsData"
:formTitle="formTitle"
:displayDialog="displayDialog"
:CreateFormData="CreateFormData"
@ -53,13 +55,13 @@
:Options="editOptions"
:detailsTableColumns="AddDetailsTableColumns"
:childTableData="childTableData"
@push="FormTreePush"
@clear="FormTreeClear"
@close="stepsCloseHandle(arguments)"
@detailsDataPush="detailsDataPush"
@detailsClear="detailsClear"
:isShowDeleteButton="false"
:addClickButton="false"
:successHandle="successHandle"
></StepsFormNotView>
></StepsFormTree>
</div>
</template>
<script>
@ -78,6 +80,7 @@ import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import { filterSelectMixins } from '@/mixins/filter-Select'
import store from '@/store'
import StepsFormTree from './StepsFormTree'
export default {
name: "customerDismantleJob",
mixins: [
@ -101,6 +104,7 @@ export default {
}
},
},
components:{StepsFormTree},
data () {
return {
URL: 'wms/store/production-recycle-job',
@ -160,21 +164,21 @@ export default {
},
},
AddDetailsTableColumns: [
{ label: "子物料代码", prop: "partCode",width:"auto" },
{ label: "子物料代码", prop: "itemCode",width:"auto",align:'left' },
{ label: "数量", prop: 'qty',width:"auto" },
{ type: "filterSelect", label: "目标库位", prop: "rawLocationCode", optionsLabel: "name", optionsValue: "code",
{ type: "filterSelect", label: "目标库位", prop: "locationCode", optionsLabel: "name", optionsValue: "code",
focus: (type,val) => { return this.getFilterList(type, val, "basedata/Location",this.isFilter("type", "5"))},
// searchButton: (val) => { this.showSerarchPage(val, 'basedata/Location', 'InventoryBalance', '', this.CreateFormData) },
width:"auto",
},
],
childTableData:[{
partCode:undefined,
itemCode:undefined,
qty:undefined,
rawLocationCode:undefined,
rawLocationArea:undefined,
rawLocationErpCode:undefined,
rawLocationGroup:undefined,
locationCode:undefined,
locationArea:undefined,
locationErpCode:undefined,
locationGroup:undefined,
warehouseCode:undefined,
}],
successHandle:[
@ -193,6 +197,51 @@ export default {
this.paging();
},
methods: {
FormTreePush(item,props,val,scope){
console.log(props)
if(props.prop == "locationCode"){
scope.row.locationCode = val
scope.row.locationArea = item.areaCode
scope.row.locationErpCode = item.erpLocationCode
scope.row.locationGroup = item.locationGroupCode
scope.row.warehouseCode = item.warehouseCode
}
},
FormTreeClear(item,scope){
console.log(item)
if(item.prop == "locationCode"){
scope.row.locationCode = null
}
},
buildTree(list){
let pidStr = 'parentCode';
let idStr = 'itemCode';
let childrenStr = 'children';
let listOjb = {}; // {key: obj}
let treeList = []; //
// {key: obj}便
for (let i = 0; i < list.length; i++) {
listOjb[list[i][idStr]] = list[i]
}
for (let j = 0; j < list.length; j++) {
//
let haveParent = listOjb[list[j][pidStr]]
if (haveParent) {
// childrenchildren
!haveParent[childrenStr] && (haveParent[childrenStr] = [])
//
haveParent[childrenStr].push(list[j])
} else {
//
treeList.push(list[j])
}
}
return treeList
},
drawerbuttonHandle(val){
//
if (val == "handle") {
@ -202,12 +251,12 @@ export default {
let _qty = Number(this.propsData.details[0].qty) - Number(this.propsData.details[0].executedQty)
this.$set(this.CreateFormData, "qty", _qty)
this.childTableData = [{
partCode:undefined,
itemCode:undefined,
qty:undefined,
rawLocationCode:undefined,
rawLocationArea:undefined,
rawLocationErpCode:undefined,
rawLocationGroup:undefined,
locationCode:undefined,
locationArea:undefined,
locationErpCode:undefined,
locationGroup:undefined,
warehouseCode:undefined,
}]
this.theEvent = "edit"
@ -241,17 +290,6 @@ export default {
]
return filter
},
detailsDataPush(data){
if(data[1].prop == "rawLocationCode"){
this.CreateFormData.details[data[3].$index].rawLocationArea = data[0].areaCode
this.CreateFormData.details[data[3].$index].rawLocationErpCode = data[0].erpLocationCode
this.CreateFormData.details[data[3].$index].rawLocationGroup = data[0].locationGroupCode
this.CreateFormData.details[data[3].$index].warehouseCode = data[0].warehouseCode
}
},
detailsClear(data){
console.log(data)
},
//
downloadReport(){
//
@ -288,7 +326,7 @@ export default {
let _tableList = this.CreateFormData.details
let _empty = 0
_tableList.forEach(item=>{
if(!item.rawLocationCode || item.rawLocationCode.length <= 0){
if(!item.locationCode || item.locationCode.length <= 0){
_empty ++
}
})
@ -301,6 +339,11 @@ export default {
let _data = JSON.parse(JSON.stringify(_jobInfo))
_data.details[0].materialDetails = [],//
_data.details[0].qty = Number(this.CreateFormData.qty)
// todo:
let _isSelectData = this.$refs.StepsFormTree_Ref.selectData
console.log(3333,_isSelectData)
console.log(3333,this.bomList)
return
this.bomList.forEach((item,index)=>{
let _item = {
itemCode: item.component,
@ -345,17 +388,20 @@ export default {
this.CreateFormData.details = []
res.forEach(item=>{
let _item={
partCode:item.component,
id:item.id,
itemCode:item.component,
parentCode:item.product,
// detailsqtyqty
qty:Number(item.componentQty)*this.CreateFormData.qty,
rawLocationCode:_itemInfo.rawLocationCode,
rawLocationArea:_itemInfo.rawLocationArea,
rawLocationGroup:_itemInfo.rawLocationGroup,
rawLocationErpCode:_itemInfo.rawLocationErpCode,
locationCode:_itemInfo.rawLocationCode,
locationArea:_itemInfo.rawLocationArea,
locationGroup:_itemInfo.rawLocationGroup,
locationErpCode:_itemInfo.rawLocationErpCode,
warehouseCode:_itemInfo.warehouseCode,
}
this.CreateFormData.details.push(_item)
})
this.CreateFormData.details = this.buildTree(JSON.parse(JSON.stringify(this.CreateFormData.details)))
resolve();
}else{
this.$errorMsg(`并未找到${_itemInfo.itemCode}对应的bom数据`)

Loading…
Cancel
Save