仓库管理-工序库位关联

This commit is contained in:
朱文强 2022-03-11 16:38:54 +08:00
rodzic e7629a6ea0
commit 7fd51b5211
11 zmienionych plików z 149 dodań i 90 usunięć

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 16:00:14
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 13:59:54
* @LastEditTime: 2022-03-11 16:23:43
* @Description:
*/
import request from '@/utils/request'
@ -84,3 +84,19 @@ export function StorageBoxRackDelete(id) { // 删除存储箱上架单条数据
data: { id }
})
}
export function batchListAdd(data) { // 新增工序库位关联
return request({
url: '/api/wms/processlocation/batchList',
method: 'post',
data
})
}
export function locationByProcessList(data) { // 工序库位列表获取
return request({
url: '/api/wms/processlocation/locationByProcess',
method: 'post',
data
})
}

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2021-03-04 16:13:51
* @LastEditors: zwq
* @LastEditTime: 2022-03-11 08:28:27
* @LastEditTime: 2022-03-11 10:55:37
* @Description: file content
*/
export default {
@ -255,7 +255,7 @@ export default {
entryType: 'Manual/Automatic',
automatic: 'automatic',
manual: 'Manual',
workOrderId: 'workOrderId'
workOrderName: 'Work Order Name'
},
productPool: {
productName: 'Product Name',

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2021-03-04 16:13:51
* @LastEditors: zwq
* @LastEditTime: 2022-03-11 08:28:40
* @LastEditTime: 2022-03-11 10:55:25
*/
export default {
visual: {
@ -247,7 +247,7 @@ export default {
entryType: '手动/自动',
automatic: '自动',
manual: '手动',
workOrderId: '工单名称'
workOrderName: '工单名称'
},
processLocation: {
sequence: '顺序',

Wyświetl plik

@ -281,6 +281,7 @@ export const constantRoutes = [
},
{
path: '/StorageBoxRack',
hidden: true,
component: () =>
import('@/views/basicData/Warehouse/StorageBoxRack'),
name: 'StorageBoxRack',

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 16:37:56
* @LastEditors: zwq
* @LastEditTime: 2022-03-11 09:48:52
* @LastEditTime: 2022-03-11 10:55:27
* @Description:
-->
<template>
@ -66,10 +66,10 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('module.basicData.ScrapInfo.workOrderId')" prop="workOrderId">
<el-form-item :label="$t('module.basicData.ScrapInfo.workOrderName')" prop="workOrderId">
<el-select
v-model="dataForm.workOrderId"
:placeholder="$i18nForm(['placeholder.input', $t('module.basicData.ScrapInfo.workOrderId')])"
:placeholder="$i18nForm(['placeholder.input', $t('module.basicData.ScrapInfo.workOrderName')])"
clearable
:style="{width: '100%'}"
>

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 15:41:11
* @LastEditors: zwq
* @LastEditTime: 2022-03-04 10:40:51
* @LastEditTime: 2022-03-11 11:24:48
* @Description:
-->
<template>
@ -11,10 +11,10 @@
:model="formData"
:inline="true"
size="medium"
label-width="100px"
label-width="80px"
>
<el-form-item v-if="false" :label="$t('module.basicData.ScrapInfo.PlateId')" prop="basalId">
<el-input v-model="formData.basalId" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.ScrapInfo.PlateId')])" style="width:200px" clearable />
<el-form-item :label="$t('module.basicData.ScrapInfo.PlateId')" prop="substrateId">
<el-input v-model="formData.substrateId" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.ScrapInfo.PlateId')])" style="width:200px" clearable />
</el-form-item>
<el-form-item :label="$t('module.basicData.ScrapInfo.TimePeriod')" prop="time">
<el-date-picker
@ -38,6 +38,16 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('module.basicData.ScrapInfo.workOrderName')" prop="orderId">
<el-select v-model="formData.orderId" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.ScrapInfo.workOrderName')])" clearable :style="{width: '100%'}" filterable>
<el-option
v-for="(item, index) in orderList"
:key="index"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList()"> {{ 'btn.search' | i18nFilter }} </el-button>
<el-button type="primary" @click="addNew()"> {{ 'btn.add' | i18nFilter }} </el-button>
@ -79,6 +89,7 @@ import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
import { timeFormatter } from '@/filters'
import i18n from '@/lang'
import { getEqList } from '@/api/equipment/maintain'
import { ExecutionInfoList } from '@/api/orderManage/00A'
// import DictFilter from '@/components/BaseTable/subcomponents/DataDictFilter'
/**
* 表格表头配置项 TypeScript接口注释
@ -113,8 +124,13 @@ const tableProps = [
// filter: timeFormatter
// },
{
prop: 'source',
label: i18n.t('module.basicData.ScrapInfo.source'),
prop: 'substrateId',
label: i18n.t('module.basicData.ScrapInfo.PlateId'),
align: 'center'
},
{
prop: 'workOrderName',
label: i18n.t('module.basicData.ScrapInfo.workOrderName'),
align: 'center'
},
{
@ -122,11 +138,6 @@ const tableProps = [
label: i18n.t('module.basicData.ScrapInfo.name'),
align: 'center'
},
{
prop: 'substrateId',
label: i18n.t('module.basicData.ScrapInfo.PlateId'),
align: 'center'
},
{
prop: 'registerPersonName',
label: i18n.t('module.basicData.ScrapInfo.RegisterPerson'),
@ -138,6 +149,11 @@ const tableProps = [
filter: timeFormatter,
align: 'center'
},
{
prop: 'placeOfRegis',
label: i18n.t('module.basicData.ScrapInfo.registrationPlace'),
align: 'center'
},
{
prop: 'scrapReason',
label: i18n.t('module.basicData.ScrapInfo.cause'),
@ -166,7 +182,9 @@ export default {
listLoading: true,
formData: {
timeSlot: null,
basalId: '',
substrateId: '',
orderId: '',
equipmentId: '',
current: 1,
size: 10,
id: ''
@ -178,6 +196,7 @@ export default {
dict: {
scrap: []
},
orderList: [],
device: []
}
},
@ -236,6 +255,13 @@ export default {
if (result1.code === 0) {
this.device = result1.data.records
}
const result2 = await ExecutionInfoList({
current: 1,
size: 999
})
if (result2.code === 0) {
this.orderList = result2.data.records
}
const result = await scrapReasonList()
this.dict.scrap = result
},

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 15:41:11
* @LastEditors: zwq
* @LastEditTime: 2022-03-04 15:45:23
* @LastEditTime: 2022-03-11 10:31:39
* @Description:
-->
<template>
@ -64,7 +64,6 @@ import { list } from '@/api/art-manage/process'
import BaseTable from '@/components/BaseTable'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
import { timeFormatter } from '@/filters'
import i18n from '@/lang'
/**
* 表格表头配置项 TypeScript接口注释
@ -102,7 +101,6 @@ const tableProps = [
{
prop: 'createTime',
label: i18n.t('module.art.eqName'),
filter: timeFormatter,
align: 'center'
}
]
@ -160,29 +158,23 @@ export default {
})
},
getList() {
// this.listLoading = true
// ExecutionInfoList(this.listQuery).then(response => {
// if (response.data.records) {
// this.list = response.data.records
// } else {
// this.list.splice(0, this.list.length)
// }
// this.total = response.data.total
this.list = [
{
code: 11,
name: '11'
this.listLoading = true
list(this.listQuery).then(response => {
if (response.data.records) {
this.list = response.data.records
} else {
this.list.splice(0, this.list.length)
}
]
this.listLoading = false
// })
this.total = response.data.total
this.listLoading = false
})
},
// /
addNew(id) {
this.$router.push({
name: 'ProcessStorageManagementInfo',
query: {
dictTypeId: id
id
}
})
}

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 15:41:11
* @LastEditors: zwq
* @LastEditTime: 2022-03-09 09:57:41
* @LastEditTime: 2022-03-11 16:29:46
* @Description:
-->
<template>
@ -18,20 +18,21 @@
:table-data="list"
:is-loading="listLoading"
>
<method-btn
<!-- <method-btn
slot="handleBtn"
:width="trueWidth"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
/> -->
</base-table>
</div>
</template>
<script>
import { locationByProcessList } from '@/api/basicData/Warehouse/StorageBoxInfo'
import i18n from '@/lang'
import BaseTable from '@/components/BaseTable'
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
// import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
import { timeFormatter } from '@/filters'
/**
* 表格表头配置项 TypeScript接口注释
@ -49,12 +50,12 @@ import { timeFormatter } from '@/filters'
*
*/
const tableBtn = [
{
type: 'delete',
btnName: 'btn.delete'
}
]
// const tableBtn = [
// {
// type: 'delete',
// btnName: 'btn.delete'
// }
// ]
const tableProps = [
{
prop: 'code',
@ -76,7 +77,7 @@ const tableProps = [
export default {
name: 'Shelf',
components: { BaseTable, MethodBtn },
components: { BaseTable },
filters: {
statusFilter(status) {
const statusMap = {
@ -89,7 +90,7 @@ export default {
},
data() {
return {
tableBtn,
// tableBtn,
trueWidth: 200,
tableProps,
list: [],
@ -97,12 +98,12 @@ export default {
listQuery: {
current: 1,
size: 990,
areaId: ''
workSequenId: ''
}
}
},
created() {
this.listQuery.areaId = this.$route.query.id
this.listQuery.workSequenId = this.$route.query.id
this.getList()
},
methods: {
@ -126,23 +127,23 @@ export default {
}).catch(() => {})
}
},
getList(key) {
getList() {
this.listLoading = true
// shelfList(this.listQuery).then(response => {
// if (response.data.records) {
// this.list = response.data.records
// } else {
// this.list.splice(0, this.list.length)
// }
this.listLoading = false
// })
locationByProcessList(this.listQuery).then(response => {
if (response.data.records) {
this.list = response.data.records
} else {
this.list.splice(0, this.list.length)
}
this.listLoading = false
})
},
// /
addNew(id) {
addNew() {
this.$router.push({
name: 'ProcessStorageLink',
query: {
dictTypeId: id
id: this.listQuery.workSequenId
}
})
},

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2022-03-03 09:16:10
* @LastEditors: zwq
* @LastEditTime: 2022-03-09 15:17:46
* @LastEditTime: 2022-03-11 16:33:41
* @Description: file content
* @FilePath: \mt-ck-wms-ui\src\views\dashboard\index.vue
-->
@ -38,6 +38,8 @@
<el-button type="primary" size="mini" @click="submitLinkList">{{
"btn.submit" | i18nFilter
}}</el-button>
<el-button type="warning" size="mini" @click="init()">{{ 'btn.reset' | i18nFilter }}</el-button>
<el-button type="success" size="mini" @click="goback()">{{ 'btn.back' | i18nFilter }}</el-button>
</div>
<div class="dashboard-legend-search">
<el-select
@ -104,7 +106,7 @@
? '#A2A8B5'
: '',
border:
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
selectStorageList.some(StorageItem=>StorageItem.locationId===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
? '1px solid red' : ''
}"
@click="
@ -140,7 +142,7 @@
</el-row>
<div class="dashboard-layout-footer">
{{
"第" + (index + 1) + "排(" + ((current - 1) * 4 + item) + ")"
"第" + bottomIndex[index] + "排(" + ((current - 1) * 4 + item) + ")"
}}
</div>
</el-col>
@ -203,7 +205,7 @@
? '#A2A8B5'
: '',
border:
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
selectStorageList.some(StorageItem=>StorageItem.locationId===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
? '1px solid red' : ''
}"
@click="
@ -270,7 +272,7 @@
? '#A2A8B5'
: '',
border:
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
selectStorageList.some(StorageItem=>StorageItem.locationId===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
? '1px solid red' : ''
}"
@click="
@ -306,7 +308,7 @@
</el-row>
<div class="dashboard-layout-footer">
{{
"第" + (index + 1) + "排(" + ((current - 1) * 4 + item) + ")"
"第" + bottomIndex[index] + "排(" + ((current - 1) * 4 + item) + ")"
}}
</div>
</el-col>
@ -323,6 +325,7 @@
</template>
<script>
import { batchListAdd } from '@/api/basicData/Warehouse/StorageBoxInfo'
import testdata from './testdata'
import processStorageType from './processStorageType'
@ -333,7 +336,7 @@ export default {
return testdata
},
created() {
console.log(this.shelfList)
this.id = this.$route.query.id
this.totalPage = Math.ceil(
this.shelfList[0].rowList[0].portList.length / 80
)
@ -345,8 +348,8 @@ export default {
},
setType(item) {
if (item.attribute !== 3) {
if (this.selectStorageList.findIndex(StorageItem => StorageItem.id === item.id) + 1) {
this.selectStorageList.splice(this.selectStorageList.findIndex(StorageItem => StorageItem.id === item.id), 1)
if (this.selectStorageList.findIndex(StorageItem => StorageItem.locationId === item.id) + 1) {
this.selectStorageList.splice(this.selectStorageList.findIndex(StorageItem => StorageItem.locationId === item.id), 1)
} else {
this.typeVisible = true
this.$nextTick(() => {
@ -355,8 +358,8 @@ export default {
}
}
},
setStorageList(id, dataForm) {
const obj = Object.assign({ id }, dataForm)
setStorageList(locationId, dataForm) {
const obj = Object.assign({ locationId }, dataForm)
this.selectStorageList.push(obj)
},
handleChange(v) {
@ -364,14 +367,32 @@ export default {
},
submitLinkList() {
const tipArr = this.selectStorageList.map(item => {
return item.id
return item.locationId
})
const obj = {
id: this.id,
processLocationStorageList: this.selectStorageList
}
this.$confirm(`${this.$t('module.basicData.visual.TipsStorageBefore')}[${tipArr.join(',')}]?`, this.$t('module.basicData.visual.Tips'), {
confirmButtonText: this.$t('module.basicData.visual.confirmButtonText'),
cancelButtonText: this.$t('module.basicData.visual.cancelButtonText'),
type: 'warning'
}).then(() => {
batchListAdd(obj).then(res => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500,
onClose: () => {
this.selectStorageList.splice(0, this.selectStorageList.length)
}
})
})
}).catch(() => {})
},
goback() {
this.selectStorageList.splice(0, this.selectStorageList.length)
this.$router.go(-1)
}
}
}

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2020-12-29 16:37:56
* @LastEditors: zwq
* @LastEditTime: 2022-03-10 14:27:47
* @LastEditTime: 2022-03-11 14:48:18
* @Description:
-->
<template>
@ -18,13 +18,13 @@
label-width="110px"
label-position="left"
>
<el-form-item :label="$t('module.basicData.Warehouse.SelectStorageType')" prop="storageType">
<el-radio v-model="dataForm.storageType" :label="1">Working Port</el-radio>
<el-radio v-model="dataForm.storageType" :label="2">Buffer Port</el-radio>
<el-radio v-model="dataForm.storageType" :label="3">Exception Port</el-radio>
<el-form-item :label="$t('module.basicData.Warehouse.SelectStorageType')" prop="portAttrId">
<el-radio v-model="dataForm.portAttrId" :label="1">Working Port</el-radio>
<el-radio v-model="dataForm.portAttrId" :label="2">Buffer Port</el-radio>
<el-radio v-model="dataForm.portAttrId" :label="3">Exception Port</el-radio>
</el-form-item>
<el-form-item :label="$t('module.basicData.storageBox.name')" prop="storageBoxName">
<el-select v-model="dataForm.storageBoxName" filterable :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.storageBox.name')])" clearable>
<el-form-item :label="$t('module.basicData.storageBox.name')" prop="storageId">
<el-select v-model="dataForm.storageId" filterable :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.storageBox.name')])" clearable>
<el-option
v-for="item in storageBoxArr"
:key="item.id"
@ -48,13 +48,13 @@ export default {
data() {
return {
visible: false,
storageId: '',
locationId: '',
dataForm: {
storageType: 1,
storageBoxName: ''
portAttrId: 1,
storageId: ''
},
dataRule: {
storageBoxName: [
storageId: [
{
required: true,
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.storageBox.name')]),
@ -66,7 +66,7 @@ export default {
},
methods: {
init(id) {
this.storageId = id
this.locationId = id
const listQuery = {
current: 1,
size: 999
@ -85,7 +85,7 @@ export default {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.visible = false
this.$emit('refreshDataList', this.storageId, this.dataForm)
this.$emit('refreshDataList', this.locationId, this.dataForm)
}
})
}

Wyświetl plik

@ -2,7 +2,7 @@
* @Author: gtz
* @Date: 2022-03-03 15:47:47
* @LastEditors: zwq
* @LastEditTime: 2022-03-09 13:53:23
* @LastEditTime: 2022-03-11 10:46:18
* @Description: file content
* @FilePath: \mt-ck-wms-ui\src\views\dashboard\testdata.js
*/
@ -2950,6 +2950,8 @@ export default {
},
selectStorageList: [],
typeVisible: false,
id: '',
bottomIndex: ['一', '二'],
current: 1,
totalPage: 1
}