no message

main
bbl\baobl 2024-03-07 09:23:49 +08:00
parent fcced4d59d
commit 0bcc406420
12 changed files with 473 additions and 287 deletions

View File

@ -23,5 +23,18 @@ export function edit(data) {
data
})
}
export function getAsnList() {
return request({
url: 'api/asn/getAsnList',
method: 'post'
})
}
export function startAsn(id) {
return request({
url: 'api/asn/startAsn',
method: 'post',
data: id
})
}
export default { add, edit, del }
export default { add, edit, del, getAsnList, startAsn }

View File

@ -23,5 +23,10 @@ export function edit(data) {
data
})
}
export function getBillType() {
return request({
url: 'api/billType/getBillType',
method: 'post'
})
}
export default { add, edit, del }

View File

@ -7,7 +7,6 @@ export function getPoints(params) {
params
})
}
export function add(data) {
return request({
url: 'api/point',

View File

@ -1,132 +0,0 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name"/>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="仓库" prop="deptId">
<el-select v-model="dept.deptId" filterable placeholder="请选择">
<el-option
v-for="item in depts"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="单据类型ID">
未设置字典请手动设置 Select
</el-form-item>
<el-form-item label="来源ID">
<el-input v-model="form.sourceId" style="width: 370px;" />
</el-form-item>
<el-form-item label="客户ID">
未设置字典请手动设置 Select
</el-form-item>
<el-form-item label="系统单号">
<el-input v-model="form.relatedbill1" style="width: 370px;" />
</el-form-item>
<el-form-item label="客户订单号">
<el-input v-model="form.relatedbill2" style="width: 370px;" />
</el-form-item>
<el-form-item label="地址">
<el-input v-model="form.address" :rows="3" type="textarea" style="width: 370px;" />
</el-form-item>
<el-form-item label="用户ID">
<el-input v-model="form.userId" style="width: 370px;" />
</el-form-item>
<el-form-item label="用户名">
<el-input v-model="form.username" style="width: 370px;" />
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="form.createTime" type="datetime" style="width: 370px;" />
</el-form-item>
<el-form-item label="订单时间">
<el-date-picker v-model="form.orderDate" type="datetime" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU"></el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU"></el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="id" label="ID" />
<el-table-column prop="deptId" label="仓库ID" />
<el-table-column prop="billTypeId" label="单据类型ID" />
<el-table-column prop="sourceId" label="来源ID" />
<el-table-column prop="structureId" label="客户ID" />
<el-table-column prop="relatedbill1" label="系统单号" />
<el-table-column prop="relatedbill2" label="客户订单号" />
<el-table-column prop="address" label="地址" />
<el-table-column prop="userId" label="用户ID" />
<el-table-column prop="username" label="用户名" />
<el-table-column prop="createTime" label="创建时间" />
<el-table-column prop="orderDate" label="订单时间" />
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" label="操作" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudDept from '@/api/system/dept'
import crudAsn from '@/api/asn'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation.vue'
import crudOperation from '@crud/CRUD.operation.vue'
import udOperation from '@crud/UD.operation.vue'
import pagination from '@crud/Pagination.vue'
const defaultForm = { id: null, deptId: null, billTypeId: null, sourceId: null, structureId: null, relatedbill1: null, relatedbill2: null, address: null, userId: null, username: null, createTime: null, orderDate: null }
export default {
name: 'Asn',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({ title: 'asn', url: 'api/asn', idField: 'id', sort: 'id,desc', crudMethod: { ...crudAsn }})
},
data() {
return {
dept:{
deptId:""
},
depts:[],
permission: {
add: ['admin', 'asn:add'],
edit: ['admin', 'asn:edit'],
del: ['admin', 'asn:del']
},
rules: {
deptId: [
{ required: true, message: '仓库ID不能为空', trigger: 'blur' }
]
} }
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
},
}
}
</script>
<style scoped>
</style>

View File

@ -48,6 +48,9 @@
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 370px;"/>
</el-form-item>
<el-form-item label="上游识别码" prop="name">
<el-input v-model="form.sourceName" style="width: 370px;"/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="form.type" style="width: 370px;" filterable placeholder="请选择">
<el-option
@ -77,6 +80,7 @@
<el-table-column prop="xh" label="序号" type="index" width="50"/>
<el-table-column prop="code" label="编号"/>
<el-table-column prop="name" label="名称"/>
<el-table-column prop="sourceName" label="上游识别码"/>
<el-table-column prop="type" label="类型">
<template slot-scope="scope">
{{ dict.label.bill_type[scope.row.type] }}

View File

@ -4,8 +4,8 @@
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<label class="el-form-item-label">代码</label>
<el-input v-model="query.code" clearable placeholder="请输入代码" style="width: 185px;" class="filter-item"
<label class="el-form-item-label">sku</label>
<el-input v-model="query.code" clearable placeholder="请输入sku" style="width: 185px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<label class="el-form-item-label">名称</label>
@ -54,7 +54,7 @@
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
:title="crud.status.title" width="600px">
<el-form ref="form" :model="form" :inline="true" :rules="rules" size="small" label-width="66px">
<el-form-item label="代码" prop="code">
<el-form-item label="sku" prop="code">
<el-input v-model="form.code" style="width: 180px;"/>
</el-form-item>
<el-form-item label="名称" prop="name">
@ -63,14 +63,14 @@
<el-form-item label="装载数">
<el-input v-model="form.extendD1" style="width: 180px;"/>
</el-form-item>
<el-form-item label="类型" prop="goodType">
<el-form-item label="存储库区" prop="goodType">
<el-select v-model="form.goodType" filterable placeholder="请选择" style="width: 180px;"
:default-first-option="true">
<el-option
v-for="item in dict.item_type"
v-for="item in areas"
:key="item.id"
:label="item.label"
:value="item.value"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
@ -130,12 +130,9 @@
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="xh" label="序号" type="index" width="50"/>
<el-table-column prop="code" label="代码" width="150"/>
<el-table-column prop="code" label="sku" width="150"/>
<el-table-column prop="name" label="名称" width="150"/>
<el-table-column prop="goodType" label="类型" width="150">
<template slot-scope="scope">
{{ dict.label.item_type[scope.row.goodType] }}
</template>
<el-table-column prop="goodType" label="存储库区" width="150">
</el-table-column>
<el-table-column prop="extendD1" label="容器装载数"/>
<el-table-column prop="unit" label="单位">
@ -161,7 +158,7 @@
</el-table-column>
<el-table-column prop="agvScene.name" label="AGV场景" v-if="false">
</el-table-column>
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" width="150px" align="center">
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" fixed="right" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
@ -189,6 +186,7 @@ import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DonMessage from "@/utils/message";
import {getToken} from "@/utils/auth";
import {getAres} from "@/api/area";
const defaultForm = {id: null}
export default {
@ -211,6 +209,7 @@ export default {
return {
headers: { 'Authorization': getToken() },
fileList: [],
areas: [],
permission: {
add: ['admin', 'item:add'],
edit: ['admin', 'item:edit'],
@ -218,7 +217,7 @@ export default {
},
rules: {
code: [
{required: true, message: '代码不能为空', trigger: 'blur'}
{required: true, message: 'sku不能为空', trigger: 'blur'}
],
name: [
{required: true, message: '名称不能为空', trigger: 'blur'}
@ -231,7 +230,7 @@ export default {
]
},
queryTypeOptions: [
{key: 'code', display_name: '代码'},
{key: 'code', display_name: 'sku'},
{key: 'name', display_name: '名称'},
{key: 'specs', display_name: '规格'}
],
@ -240,8 +239,19 @@ export default {
}, mounted() {
//
this.getAgvSceneAllDate();
this.getArea()
},
methods: {
getArea() {
getAres({size: 50}).then(res => {
this.areas = res.content.map(function (obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
handleSuccess(response, file, fileList,crud) {
let myError = response.toString();//

View File

@ -37,28 +37,36 @@
:value="area.name"
/>
</el-select>
<label class="el-form-item-label">冷却区-小库区编号</label>
<el-select
v-model="query.beatCode"
clearable
size="small"
placeholder="小库区编号"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.smallArea"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<rrOperation :crud="crud"/>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name">
<el-button
slot="right"
class="filter-item"
type="primary"
icon="el-icon-edit"
size="mini"
v-show="true"
:loading="crud.delAllLoading"
:disabled="crud.selections.length === 0 "
@click="EmptyCarBackStatus=true"
>
容器入场
</el-button>
<el-button
slot="right"
class="filter-item"
type="primary"
icon="el-icon-edit"
size="mini"
v-show="true"
:loading="crud.delAllLoading"
:disabled="crud.selections.length === 0 "
@click="callEmptyCarStatus=true"
>
容器搬运
</el-button>
<el-upload
class="upload-demo"
slot='right'
@ -71,44 +79,42 @@
:show-file-list="true">
<el-button size="mini" type="success" icon="el-icon-upload2">导入</el-button>
</el-upload>
<el-button
slot="right"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-s-order"
@click="MultiAdjust"
>批量调整
</el-button>
</crudOperation>
<!-- 批量调整界面-->
<multiAdjust ref="multiAdjust"/>
<!-- 呼叫空车 -->
<el-dialog title="地标点绑定" :visible.sync="callEmptyCarStatus" width="400px">
<!-- 容器搬运 -->
<el-dialog title="容器搬运" :visible.sync="callEmptyCarStatus" width="400px">
<el-form ref="from1" :model="from1" :rules="rules" size="small" label-width="80px">
<el-form-item label="标点" prop="pointCode">
<el-form-item label="目标点" prop="pointCode">
<el-input v-model="from1.pointCode" style="width: 180px;"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="callEmptyCarStatus = false"> </el-button>
<el-button type="primary" @click="callEmpty()"> </el-button>
<el-button type="primary" @click="callEmpty(crud.selections)"> </el-button>
</div>
</el-dialog>
<!-- 空车入库 -->
<el-dialog title="空车入库" :visible.sync="EmptyCarBackStatus" width="400px">
<!-- 容器入场 -->
<el-dialog title="容器入场" :visible.sync="EmptyCarBackStatus" width="400px">
<el-form ref="fromBack" :model="fromBack" :rules="rules" size="small" label-width="80px">
<el-form-item label="地标点" prop="pointCode">
<el-input v-model="fromBack.pointCode" style="width: 180px;"/>
<el-form-item label="容器类型" prop="storageType">
<el-select v-model="fromBack.storageType" value-key="id" filterable placeholder="请选择">
<el-option
v-for="item in storageTypes"
:key="item.id"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="EmptyCarBackStatus = false"> </el-button>
<el-button type="primary" @click="callStockBackIn()"> </el-button>
<el-button type="primary" @click="callStockBackIn(crud.selections)"> </el-button>
</div>
</el-dialog>
<viewFullStockIn ref="fullStockIn"/>
<viewFullStockOut ref="fullStockOut"/>
<!--表单组件-->
@ -144,11 +150,9 @@
/>
</el-select>
</el-form-item>
<el-form-item label="状态">
<el-select
v-model="form.status"
clearable
size="small"
placeholder="状态"
class="filter-item"
@ -162,7 +166,16 @@
/>
</el-select>
</el-form-item>
<el-form-item label="存储类型(容器)">
<el-select v-model="form.storageType" clearable value-key="id" filterable placeholder="请选择" style="width: 370px;">
<el-option
v-for="item in storageTypes"
:key="item.id"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="描述">
<el-input type="textarea" v-model="form.description" style="width: 370px;"/>
</el-form-item>
@ -184,21 +197,19 @@
{{ dict.label.point_type[scope.row.type] }}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="area" label="库区">
<template slot-scope="scope">
<div>{{ scope.row.area.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.use_status[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="description" label="存储类型"/>
<el-table-column :show-overflow-tooltip="true" prop="areaName" label="库区">
<el-table-column prop="storageType" label="存储类型(容器)">
<template slot-scope="scope">
<div>{{ scope.row.area.name }}</div>
</template>
</el-table-column>
<el-table-column prop="beatCode" label="冷却区-小库区编号"/>
<el-table-column :show-overflow-tooltip="true" prop="deptName" label="仓库">
<template slot-scope="scope">
<div>{{ scope.row.dept.name }}</div>
<span v-if="scope.row.storageType !=null">{{ scope.row.storageType }}</span>
</template>
</el-table-column>
<el-table-column label="启用" align="center" prop="enabled">
@ -211,7 +222,7 @@
/>
</template>
</el-table-column>
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" width="60px" align="center">
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" width="160px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
@ -219,7 +230,9 @@
:show-dle="false"
:showPointIn="true"
style="float: left"
/>
>
</udOperation>
</template>
</el-table-column>
<el-table-column
@ -228,8 +241,7 @@
<template slot-scope="scope">
<el-button type="primary" v-if="false" align="center" size="mini" @click="callEmptyCarStatusOffOn(scope.row)">
</el-button>
<el-button @click="showFullStockIn(scope.row)" v-if="false" type="primary" align="center" size="small">
</el-button>
<el-button @click="showFullStockOut(scope.row)" v-if="false" type="primary" align="center" size="small">
</el-button>
<el-button @click="emptyCarBack(scope.row)" v-if="false" type="primary" align="center" size="small"></el-button>
@ -259,8 +271,9 @@ import viewFullStockIn from '@/views/base-data/point/fullStockIn.vue';
import viewFullStockOut from '@/views/base-data/point/fullStockOut.vue';
import pointUrl from '@/api/point'
import multiAdjust from "@/views/base-data/point/multiAdjust.vue";
import {getStockTypes} from "@/api/stockType";
const defaultForm = {id: null, status: 'FREE', enabled: 1, code: null, name: null, description: null, area: null}
const defaultForm = {id: null, status: 'FREE', enabled: 1, code: null, name: null, description: null, area: null, storageType: null}
export default {
name: 'Point',
components: {
@ -286,8 +299,10 @@ export default {
return {
//
fileList:[],
//()
storageTypes:[],
from1: [],
fromBack: [],
fromBack: {storageType: null,ids:[]},
pointListData: [],
headers: {'Authorization': getToken()},
queryTypeOptions: [
@ -300,7 +315,7 @@ export default {
],
callStock: {
pointCode: '',
agvScene: 'ZC'
ids: []
},
callStockBack: {
pointCode: '',
@ -333,6 +348,7 @@ export default {
this.getArea()
//
this.getPointListData();
this.getStorageTypes();
},
methods: {
handleSuccess(response, file, fileList, crud) {
@ -376,26 +392,45 @@ export default {
})
})
},
//
callEmpty() {
this.callStock.pointCode = this.from1.pointCode
this.callStock.agvScene = "ZC"
pointUrl.pointCallStock(this.callStock).then(res => {
this.callEmptyCarStatus = false;
this.crud.notify("呼叫成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
}).catch(e => {
this.crud.notify("呼叫失败", CRUD.NOTIFICATION_TYPE.ERROR);
getStorageTypes() {
getStockTypes({ }).then(res => {
this.storageTypes= res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
//
callStockBackIn() {
this.callStockBack.pointCode = this.fromBack.pointCode
this.callStockBack.agvScene = "ZC"
pointUrl.pointStockBack(this.callStockBack).then(res => {
this.EmptyCarBackStatus = false;
this.crud.notify("呼叫成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
//
callEmpty(datas) {
const ids = [];
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
this.callStock.pointCode = this.from1.pointCode
this.callStock.ids=ids
pointUrl.pointCallStock(this.callStock).then(res => {
this.callEmptyCarStatus = false;
this.crud.toQuery()
this.crud.notify("搬运成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
}).catch(e => {
this.crud.notify("呼叫失败", CRUD.NOTIFICATION_TYPE.ERROR);
this.crud.notify("搬运失败", CRUD.NOTIFICATION_TYPE.ERROR);
})
},
//
callStockBackIn(datas) {
const ids = [];
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
this.fromBack.ids=ids;
pointUrl.pointStockBack(this.fromBack).then(res => {
this.EmptyCarBackStatus = false;
this.crud.toQuery()
this.crud.notify("入场成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
}).catch(e => {
this.crud.notify("入场失败", CRUD.NOTIFICATION_TYPE.ERROR);
})
},
//

View File

@ -0,0 +1,185 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :table-key="this.$options.name">
<el-button
slot="left"
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
@click="startAsn(crud.selections[0].id)"
>
开始收货
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="订单来源">
<el-input v-model="form.orderOrigin" style="width: 370px;" />
</el-form-item>
<el-form-item label="货主">
<el-input v-model="form.structure" style="width: 370px;" />
</el-form-item>
<el-form-item label="系统单号">
<el-input v-model="form.relatedBill1" style="width: 370px;" />
</el-form-item>
<!-- <el-form-item label="订单状态">
<el-input v-model="form.status" style="width: 370px;" />
</el-form-item>-->
<el-form-item label="订单状态">
<el-select
v-model="form.status"
filterable
placeholder="订单状态"
style="width: 370px;"
>
<el-option
v-for="item in dict.asn_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="单据类型">
<el-select
v-model="form.billType"
filterable
placeholder="单据类型"
style="width: 370px;"
>
<el-option
v-for="item in billTypeList"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU"></el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU"></el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="dept.name" label="仓库" />
<el-table-column prop="billType.name" label="单据类型" />
<el-table-column prop="orderOrigin" label="订单来源" />
<el-table-column prop="structure" label="货主" />
<el-table-column prop="erTime" label="操作时间" />
<el-table-column prop="relatedBill1" label="系统单号" />
<el-table-column prop="status" label="订单状态">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" />
<el-table-column prop="orderDate" label="订单时间" />
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" label="操作" width="350px" align="center">
<template slot-scope="scope">
<!-- <udOperation
:data="scope.row"
:permission="permission"
>
</udOperation>-->
<el-button
slot="left"
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
@click="jumpAsnDetail(scope.row.relatedBill1)"
>
查看明细
</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudAsn from '@/api/asn'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import { getItems } from '@/api/item'
import { getBillType } from '@/api/billType'
import crudAsnDetail from "@/api/asnDetail";
import DonMessage from "@/utils/message";
const defaultForm = { id: null, dept: null, billType: null, orderOrigin: null, structure: null, erTime: null, relatedBill1: null, relatedBill2: null, sourceName: null, status: null, address: null, createBy: null, updateBy: null, createTime: null, updateTime: null, orderDate: null }
export default {
name: 'Asn',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['asn_status'],
cruds() {
return CRUD({ title: 'asn', url: 'api/asn', idField: 'id', sort: 'id,desc', crudMethod: { ...crudAsn }})
},
data() {
return {
permission: {
add: ['admin', 'asn:add'],
edit: ['admin', 'asn:edit'],
del: ['admin', 'asn:del']
},
billTypeList: [],
rules: {
}
}
},
mounted() {
this.getBillType()
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
return true
},
jumpAsnDetail(relatedBill1) {
// /homerouterindex.jspath
this.$router.push({ path: '/business-data/asnDetail/asnDetail', query: { relatedBill1: relatedBill1 }})
},
startAsn(id) {
crudAsn.startAsn(id).then(res => {
console.log('res:' + res)
if (res.status === 200) {
DonMessage.success(res.message)
} else {
DonMessage.error(res.message)
}
this.crud.toQuery()
})
},
getBillType() {
getBillType({}).then(res => {
this.billTypeList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
}
}
}
</script>
<style scoped>
</style>

View File

@ -5,6 +5,8 @@
<!-- 搜索 -->
<!-- <el-input v-model="query.itemCode" clearable placeholder="物料代码" style="width: 140px;" class="filter-item"-->
<!-- @keyup.enter.native="crud.toQuery"/>-->
<el-input v-model="query.relatedBill1" clearable placeholder="入库单号" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select v-model="query.itemCode" placeholder="物料代码" style="width: 140px;" class="filter-item">
<el-option
@keyup.enter.native="crud.toQuery"
@ -106,7 +108,7 @@
<AsnTask ref="asnTask"/>
</div>
<!--MO票采集表单组件-->
<el-dialog title="MO票采集" :visible.sync="collectMO" width="400px">
<!-- <el-dialog title="MO票采集" :visible.sync="collectMO" width="400px">
<el-form ref="form2" :model="form2" :rules="rules" size="small" label-width="80px">
<el-form-item label="MO票" prop="po">
<el-input v-model="form2.po" style="width: 200px;"/>
@ -127,9 +129,9 @@
<el-button @click="collectMO= false"> </el-button>
<el-button type="primary" @click="collectMO2()"> </el-button>
</div>
</el-dialog>
</el-dialog>-->
<!-- 容器更换 -->
<el-dialog title="容器更换" :visible.sync="ontainerReplacementOnOff" width="400px">
<!-- <el-dialog title="容器更换" :visible.sync="ontainerReplacementOnOff" width="400px">
<el-form ref="form3" :model="form3" :rules="rules" size="small" label-width="80px">
<el-form-item label="原容器" prop="stockName">
<el-input v-model="form3.stockName" style="width: 200px;" readonly="true"/>
@ -150,28 +152,30 @@
<el-button @click="ontainerReplacementOnOff= false"> </el-button>
<el-button type="primary" @click="performContainerChange"> </el-button>
</div>
</el-dialog>
</el-dialog>-->
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
:title="crud.status.title" width="400px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="物料" prop="item">
<el-select v-model="form.item" @focus="getItem" value-key="id" filterable placeholder="请选择物料"
style="width: 200px;">
:title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="100px">
<!-- <el-form-item label="所属订单">
<el-input v-model="form.asn.relatedBill1" style="width: 200px;"/>
</el-form-item>-->
<el-form-item label="所属订单" prop="item">
<el-select v-model="form.asn.relatedBill1" value-key="id" filterable placeholder="请所属订单"
style="width: 200px;" @change="applicantTypes">
<el-option
@click.native="WuLiaoClick(item.packNumber)"
v-for="item in items"
:key="item.id"
:label="item.code"
:value="item"
v-for="item in asnList"
:key="item.id"
:label="item.relatedBill1"
:value="item.relatedBill1"
/>
</el-select>
</el-form-item>
<el-form-item label="容器" prop="stock">
<el-select v-model="form.stock" @focus="getStock" value-key="id" filterable placeholder="请选择容器"
<el-form-item label="物料" prop="item" style="width: 200px">
<el-select v-model="form.item" value-key="id" filterable placeholder="请选择物料"
style="width: 200px;">
<el-option
v-for="item in stocks"
v-for="item in items"
:key="item.id"
:label="item.code"
:value="item"
@ -181,11 +185,14 @@
<el-form-item label="订单数量">
<el-input v-model="form.orderQty" style="width: 200px;"/>
</el-form-item>
<el-form-item label="批次号">
<el-form-item label="成品物料编码">
<el-input v-model="form.propC1" style="width: 200px;"/>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" style="width: 200px;"/>
<el-form-item label="中标批次名称">
<el-input v-model="form.propC2" style="width: 200px;"/>
</el-form-item>
<el-form-item label="序列号">
<el-input type="textarea" v-model="form.propC3" style="width: 270px;"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -196,8 +203,17 @@
<!--表格渲染-->
<el-table ref="table" height="68vh" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;"
@selection-change="this.selectionChangeHandler" @row-click="this.clickRow">
<el-table-column type="selection" width="55"/>
<el-table-column prop="xh" type="index" :index="indexMethod" label="序号"/>
<el-table-column prop="asn.relatedBill1" label="入库单号" width="100"/>
<el-table-column prop="asn.status" label="入库单状态" width="100">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.asn.status] }}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="lineNo" width="50" label="行号">
<template slot-scope="scope">
<div>{{ scope.row.lineNo }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="物料编码">
<template slot-scope="scope">
<div>{{ scope.row.item.code }}</div>
@ -208,11 +224,6 @@
<div>{{ scope.row.item.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="stock" label="容器">
<template slot-scope="scope">
<div>{{ scope.row.stock == null ? '' : scope.row.stock.code }}</div>
</template>
</el-table-column>
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.asn_status[scope.row.status] }}
@ -220,12 +231,20 @@
</el-table-column>
<el-table-column prop="orderQty" label="订单数量"/>
<el-table-column prop="receivedQty" label="收货数量"/>
<el-table-column prop="propC1" label="批次号"/>
<el-table-column prop="po" label="MO票" width="200"/>
<el-table-column prop="orderNumber" label="工单号" width="200"/>
<el-table-column prop="remark" label="备注"/>
<el-table-column prop="createBy" label="创建人"/>
<el-table-column prop="propC1" label="中标批次名称"/>
<el-table-column prop="propC2" label="成品物料编码"/>
<el-table-column prop="propC3" label="序列号" :show-overflow-tooltip="true"/>
<el-table-column prop="createTime" label="创建时间" width="135" sortable/>
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" fixed="right" width="200px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
:show-dle="true"
>
</udOperation>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
@ -245,6 +264,7 @@ import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import {getItems, getItemsList} from "@/api/item"
import {queryKyStockList} from "@/api/stock"
import {getAsnList} from "@/api/asn"
import Treeselect from '@riophae/vue-treeselect'
import Search from "@/views/monitor/log/search.vue"
import AsnTask from "@/views/business-data/asnDetail/viewAsnTask"
@ -254,7 +274,7 @@ import {getToken} from "@/utils/auth";
const defaultForm = {
id: null,
asnId: null,
asn: {relatedBill1:null},
item: null,
stock: null,
lineNo: null,
@ -290,20 +310,22 @@ export default {
dicts: ['asn_status'],
cruds() {
return CRUD({
title: '收货数据', url: 'api/asnDetail', idField: 'id', sort: 'id,desc', crudMethod: {...crudAsnDetail},
title: '收货明细', url: 'api/asnDetail', idField: 'id', sort: 'id,desc', crudMethod: {...crudAsnDetail},
optShow: {
add: true,
edit: false,
del: false,
reset: true,
download: true
}
},
queryOnPresenterCreated: false
})
},
data() {
return {
headers: {'Authorization': getToken()},
fileList:[],
asnList: [],
items: [],
stocks: [],
form2: {po: null, stock: null},
@ -342,9 +364,25 @@ export default {
},
mounted() {
//
this.itemDataGet();
this.itemDataGet()
this.getItem()
this.jumpAsnDetail()
this.getAsns()
},
methods: {
applicantTypes(value){
this.asnList.forEach(item => {
if(item.id===item.id){
console.log("item:"+item)
this.form.asn.value = item
}
})
},
jumpAsnDetail() {
this.query.relatedBill1 = this.$route.query.relatedBill1
defaultForm.asn.relatedBill1=this.query.relatedBill1
this.crud.toQuery()
},
handleSuccess(response, file, fileList, crud) {
let myError = response.toString();//
DonMessage.success("" + response['message'])
@ -371,6 +409,16 @@ export default {
})
})
},
getAsns() {
getAsnList({}).then(res => {
this.asnList = res.map(function (obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
getStock() {
queryKyStockList({}).then(res => {
this.stocks = res.map(function (obj) {

View File

@ -8,7 +8,6 @@
<label class="el-form-item-label">创建日期</label>
<date-range-picker v-model="query.createTime" style="width: 365px;" class="filter-item"/>
<label class="el-form-item-label">容器编码</label>
<el-input
v-model="query.stockCode"
clearable
@ -16,18 +15,13 @@
style="width: 170px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<label class="el-form-item-label">起点位置</label>
<el-input v-model="query.startSlotCode" clearable placeholder="起点位置" style="width: 170px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
<label class="el-form-item-label">终点位置</label>
<el-input v-model="query.endSlotCode" clearable placeholder="终点位置" style="width: 140px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
</div>
<div>
<label class="el-form-item-label">任务序号</label>
<el-input
v-model="query.id"
clearable
@ -35,8 +29,6 @@
style="width: 140px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<label class="el-form-item-label">任务组号</label>
<el-input
v-model="query.jobForce"
clearable
@ -44,8 +36,6 @@
style="width: 140px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<label class="el-form-item-label">任务状态</label>
<el-select v-model="query.status" clearable multiple placeholder="请选择" style="width: 170px;"
class="filter-item"
@keyup.enter.native="crud.toQuery">
@ -56,8 +46,6 @@
:value="taskStatus.value"
/>
</el-select>
<label class="el-form-item-label">任务类型</label>
<el-select v-model="query.type" clearable placeholder="请选择" style="width: 170px;" class="filter-item"
@keyup.enter.native="crud.toQuery">
<el-option
@ -153,9 +141,8 @@
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="id" label="任务序号" v-if="this.radio3=='' || this.radio3==''"/>
<el-table-column prop="jobForce" width="160" label="任务组号" v-if="this.radio3!='' "/>
<el-table-column prop="stockCode" width="170" label="容器码"/>
<!-- <el-table-column prop="jobForce" width="160" label="任务组号" v-if="this.radio3!='' "/>-->
<el-table-column prop="stockTypeCode" width="170" label="容器类型"/>
<el-table-column prop="startSlotCode" label="起点位置" width="130"/>
<el-table-column prop="endSlotCode" label="终点位置" width="130" sortable :formatter="formatter"/>
<el-table-column prop="status" label="任务状态">
@ -165,7 +152,13 @@
</el-table-column>
<el-table-column prop="type" label="任务类型">
<template slot-scope="scope">
{{ dict.label.task_type[scope.row.type] }}
<span v-if="dict.label.task_type[scope.row.type] ==null">{{ scope.row.type }}</span>
<span v-if="scope.row.type !=null">{{ dict.label.task_type[scope.row.type] }}</span>
</template>
</el-table-column>
<el-table-column prop="jobType" label="工作类型">
<template slot-scope="scope">
{{ scope.row.jobType }}
</template>
</el-table-column>
<el-table-column prop="jobPriority" label="优先级" width="60"/>

View File

@ -38,7 +38,19 @@
<el-input v-model="query.dstPointCode" clearable placeholder="目标点位" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<rrOperation :crud="crud" />
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name" />
<crudOperation :permission="permission" :tableKey="this.$options.name">
<el-button
slot="right"
class="filter-item"
type="primary"
size="mini"
@click=""
icon="el-icon-document-add"
v-if="false"
>
生成搬运任务
</el-button>
</crudOperation>
<!--表单组件-->
<!--表格渲染-->
@ -47,24 +59,38 @@
<el-table-column prop="xh" type="index" :index="indexMethod" label="序号"/>
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="物料编码">
<template slot-scope="scope">
<div>{{ scope.row.item.code }}</div>
<div>{{ scope.row.itemKey.item.code }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="itemName" label="物料名称">
<template slot-scope="scope">
<div>{{ scope.row.item.name }}</div>
<div>{{ scope.row.itemKey.item.name }}</div>
</template>
</el-table-column>
<el-table-column prop="srcStockCode" label="容器编码" />
<el-table-column prop="srcPointCode" label="原点位" />
<el-table-column prop="dstPointCode" label="目标点位" />
<el-table-column prop="agvStatus" label="任务状态">
<template slot-scope="scope">
{{ dict.label.task_status[scope.row.agvTask.status] }}
<span v-if="dict.label.asn_status[scope.row.taskStatus] ==null">{{ scope.row.taskStatus }}</span>
<span v-if="scope.row.taskStatus !=null">{{ dict.label.asn_status[scope.row.taskStatus] }}</span>
</template>
</el-table-column>
<el-table-column prop="srcPointCode" label="原点位">
<template slot-scope="scope">
<div v-if="scope.row.srcPoint !=null">{{ scope.row.srcPoint.code }}</div>
</template>
</el-table-column>
<el-table-column prop="dstPointCode" label="目标点位">
<template slot-scope="scope">
<div v-if="scope.row.dstPoint !=null">{{ scope.row.dstPoint.code }}</div>
</template>
</el-table-column>
<el-table-column prop="planQty" label="计划数量" />
<el-table-column prop="moveQty" label="移位数量" />
<el-table-column prop="itemKey.propC1" label="批次号" />
<el-table-column prop="itemKey.propC2" label="字符" />
<el-table-column prop="itemKey.propC3" label="计划单号" />
<el-table-column prop="itemKey.propC4" label="厂家供货码" />
<el-table-column prop="itemKey.propC5" label="供货数量" />
<el-table-column prop="itemKey.propC6" :show-overflow-tooltip="true" label="流水号" />
<el-table-column prop="createBy" label="创建人" />
<el-table-column prop="createTime" label="创建时间" />
</el-table>
@ -86,12 +112,12 @@ import pagination from '@crud/Pagination'
import DateRangePicker from "@/components/DateRangePicker/index.vue";
import {getItemsList} from "@/api/item";
const defaultForm = { id: null, itemId: null, itemKeyId: null, billCode: null, taskType: null, asnDetailId: null, moveDetailId: null, waveDetailId: null, pickDetailId: null, srcStockId: null, dstStockId: null, srcPointId: null, dstPointId: null, srcStockCode: null, dstStockCode: null, srcPointCode: null, dstPointCode: null, invStatus: null, taskStatus: null, beSkip: null, beBack: null, planQty: null, moveQty: null, putCode: null, invId: null, deptId: null, createBy: null, updateBy: null, createTime: null, updateTime: null }
const defaultForm = { id: null, itemId: null, itemKeyId: null, billCode: null, taskType: null, asnDetailId: null, moveDetailId: null, waveDetailId: null, pickDetailId: null, srcStockId: null, dstStockId: null, srcPoint: null, dstPoint: null, srcStockCode: null, dstStockCode: null, srcPointCode: null, dstPointCode: null, invStatus: null, taskStatus: null, beSkip: null, beBack: null, planQty: null, moveQty: null, putCode: null, invId: null, deptId: null, createBy: null, updateBy: null, createTime: null, updateTime: null }
export default {
name: 'Task',
components: {DateRangePicker, pagination, crudOperation, rrOperation, udOperation},
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['task_status'],
dicts: ['task_status','asn_status'],
cruds() {
return CRUD({
query: {taskType: ['ASN']},
@ -130,7 +156,7 @@ export default {
}
},
mounted() {
//
//
this.itemDataGet();
},
methods: {
@ -141,7 +167,7 @@ export default {
indexMethod(index) {
return index * 1 + 1;
},
//
//
itemDataGet() {
getItemsList().then(res => {
this.itemListData = res;

View File

@ -110,7 +110,7 @@ export default {
name: 'Dept',
components: { Treeselect, crudOperation, rrOperation, udOperation, DateRangePicker },
cruds() {
return CRUD({ title: '部门', url: 'api/dept', crudMethod: { ...crudDept }})
return CRUD({ title: '仓库', url: 'api/dept', crudMethod: { ...crudDept }})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
//