no message

main
bbl\baobl 2024-05-14 14:53:29 +08:00
parent 5f7d3812cf
commit 3a73ca8f72
21 changed files with 777 additions and 760 deletions

View File

@ -2,6 +2,6 @@ ENV = 'production'
# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇Nginx 配置
# 接口地址,注意协议,如果你没有配置 ssl需要将 https 改为 http
VUE_APP_BASE_API = 'https://eladmin.vip'
VUE_APP_BASE_API = '/'
# 如果接口是 http 形式, wss 需要改为 ws
VUE_APP_WS_API = 'wss://eladmin.vip'
VUE_APP_WS_API = '/'

View File

@ -54,5 +54,12 @@ export function sendAgvTask(data) {
data
})
}
export function toAgvTaskFinish(data) {
return request({
url: '/api/agvTask/toAgvTaskFinish',
method: 'post',
data
})
}
export default { add, edit, del,missionStateCallback,agvTaskCallback ,sendAgvTask}
export default { add, edit, del,missionStateCallback,agvTaskCallback ,sendAgvTask,toAgvTaskFinish}

View File

@ -29,4 +29,4 @@ export function getBillType() {
method: 'post'
})
}
export default { add, edit, del }
export default { add, edit, del, getBillType }

View File

@ -32,21 +32,23 @@ export function bindOrder(data) {
})
}
//按钮车呼叫
export function callTrolley(id,pointCode) {
// 按钮车呼叫
export function callTrolley(id, pointCode) {
return request({
url: 'api/app/callTrolley?id='+id+"&pointCode="+pointCode,
url: 'api/app/callTrolley?id=' + id + '&pointCode=' + pointCode,
method: 'post'
})
}
//按钮盒呼叫
export function callBox(data) {
// 按钮盒呼叫
export function callBox(id) {
return request({
url: 'api/app/callBox',
url: 'api/appScene/asn/rqRkSub',
method: 'post',
data
data: {
id: id
}
})
}
export default { add, edit, del,bindOrder ,callBox}
export default { add, edit, del, bindOrder, callBox }

View File

@ -11,8 +11,7 @@ export function getItems(params) {
export function getItemsList(params) {
return request({
url: 'api/item/itemList',
method: 'get',
params
method: 'get'
})
}
export function add(data) {

View File

@ -68,11 +68,27 @@ export function pointCallStock(data) {
export function pointStockBack(data) {
return request({
url: 'api/appScene/pointStockBack',
url: 'api/task/STAgvReceiving',
method: 'post',
data
})
}
export function pointStockRk(data) {
return request({
url: 'api/task/pointStockRk',
method: 'post',
data
})
}
export function pointStockCk(ids) {
return request({
url: 'api/task/pointStockCk',
method: 'post',
data: {
'ids': ids
}
})
}
export function fullStockOut(data) {
return request({
url: 'api/appScene/fullStockOut',
@ -89,4 +105,4 @@ export function multiAdjust(data) {
})
}
export default { add, edit, del,getPoints,queryPointList ,fullStockIn,pointCallStock,fullStockOut,pointStockBack,multiAdjust}
export default { add, edit, del,pointStockCk,getPoints,queryPointList ,fullStockIn,pointCallStock,fullStockOut,pointStockBack,multiAdjust,pointStockRk}

View File

@ -120,7 +120,19 @@
/* 全局修改el-table 表头和内容颜色 header color content color */
.el-table th {
font-size: 14px;
font-size: 12px;
background: #F6F9FC !important;
color: #606266;
}
// td
.el-table--small .el-table__cell {
padding: 3px 0;
}
// table
.el-table__body tr:hover>td{
background-color: #a0c2e7 !important;
}
/*.el-table__body tr.current-row>td{
background-color: #a0c2e7 !important;
color: #fff;
}*/

View File

@ -4,7 +4,9 @@ import Cookies from 'js-cookie'
import 'normalize.css/normalize.css'
import Element, { Table, TableColumn } from 'element-ui'
import Element, { Table, TableColumn,Button } from 'element-ui'
const ButtonProps = Element.Button.props
ButtonProps.loading = { type: Boolean, default: false } // 按钮禁用
const TableProps = Element.Table.props
const TableColumnProps = Element.TableColumn.props
TableProps.border = { type: Boolean, default: true } // 边框
@ -12,6 +14,7 @@ TableProps.align = { type: String, default: 'center' } // 居中
TableProps.stripe = { type: Boolean, default: true } // 斑马纹
TableColumnProps.showOverflowTooltip = { type: Boolean, default: true } // 文本溢出
// TableColumnProps.sortable = { type: Boolean, default: true } // 置默认的排序列和排序顺序
Vue.use(Button)
Vue.use(Table)
Vue.use(TableColumn)

View File

@ -0,0 +1,168 @@
@import 'reset'
@import "variables.styl"
.icon
width 1em
height 1em
vertical-align -0.15em
fill currentColor
overflow hidden
@keyframes spin {
0% {
transform rotate(0deg)
}
100% {
transform rotate(360deg)
}
}
.tc
text-align center
.tl
text-align left
.tr
text-align right
.spin
animation spin .6s infinite linear
display inline-block
html
height 100%
body
font-size 12px
font-family "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "", Arial, sans-serif
height 100%
.ivu-select-dropdown
padding 0
.lineov2
overflow hidden
text-overflow ellipsis
display -webkit-box
-webkit-line-clamp 2
-webkit-box-orient vertical
.lineov1
text-overflow ellipsis
overflow hidden
white-space nowrap
.flex-container
display flex
.align-center
align-items center
.flex-center
display flex
align-items center
.flex-top
display flex
align-items flex-start
.justify-end
justify-content flex-end
.flex-one
flex 1 1 0
.flex-two
flex 2
.mouse-pointer
cursor pointer
.no-break
word-break keep-all
white-space nowrap
.break-all
word-break break-all
white-space normal
/* ---- Chrome ----*/
.scroll::-webkit-scrollbar
width: 5px;
/**/
.scroll::-webkit-scrollbar-track
-webkit-box-shadow: none;
background: #f8f8f9; /**/
border-radius: 5px;
/**/
.scroll::-webkit-scrollbar-thumb
background: #c1c1c1; /**/
border-radius: 5px
/**/
.scroll::-webkit-scrollbar-thumb:hover
background: gray;
/**/
/*--- FirFox ---*/
.scroll
scrollbar-width: thin;
scrollbar-color: orange green;
/* --- IE ---*/
body
scrollbar-arrow-color: #f4ae21; /**/
scrollbar-face-color: #333; /**/
scrollbar-3dlight-color: #666; /**/
scrollbar-highlight-color: #666; /**/
scrollbar-shadow-color: #999; /**/
scrollbar-darkshadow-color: #666; /**/
scrollbar-track-color: #666; /**/
scrollbar-base-color: #f8f8f8;
/**/
.common-table
width 100%
border-collapse: collapse;
tr > td, tr > th
border 1px solid $border-color
padding 5px 8px
tr > th
font-weight bolder
white-space nowrap
.inline-div
display inline-block
[class~=flex].gutter-span
> * + *
margin-left .75rem
.warning
color $yellow
.active
color $active-color
.white
color white
.gold
color $gold-color
.gray
color $gray-color
.red
color $red
.blue
color $blue
.green
color green
.bg-white
background #fff
.pct100
width 100%
.bolder-font
font-weight bolder
.large-tip
font-size 16px

View File

@ -41,6 +41,7 @@
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" height="67vh" 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="code" label="库区编号" />
<el-table-column prop="name" label="库区名称" />
<el-table-column prop="description" label="描述" />
@ -154,9 +155,10 @@ export default {
})
},
getAgvSceneAllDate(){
selectEgvSceneAll().then(res => {
/*selectEgvSceneAll().then(res => {
this.avgSceneOptions=res;
})
})*/
console.log("tableKey:"+this.$options.name)
}
}
}

View File

@ -186,7 +186,7 @@ export default {
pointList: [],
rules: {
code: [
{required: true, message: '请输入编号', trigger: 'blur'},
{ required: true, message: '请输入编号', trigger: 'blur'},
],
name: [
{required: true, message: '请输入名称', trigger: 'blur'},

View File

@ -76,7 +76,7 @@
<el-option
v-for="item in pointList"
:key="item.id"
:label="item.name"
:label="item.code"
:value="item"
/>
</el-select>
@ -98,6 +98,7 @@
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="code" label="编号"/>
<el-table-column prop="name" label="名称"/>
<el-table-column prop="lampStatus" label="单据类型"/>
@ -126,11 +127,13 @@
<el-table-column v-if="checkPer(['admin','box:edit','box:del'])" label="操作" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
:show-dle="false"
/>
<el-button
size="mini"
type="text"
:disabled="scope.row.enabled == false "
@click="callBox(scope.row)"
>入场/呼叫
</el-button>
</template>
</el-table-column>
</el-table>
@ -184,7 +187,7 @@ export default {
crudMethod: {...crudBox},
optShow: {
add: true,
edit: false,
edit: true,
del: false,
reset: true,
download: true
@ -253,30 +256,21 @@ export default {
})
})
},
callBox(datas) {
if (this.$refs.table.selection.length >= 1) {
this.$confirm(`选中的${datas.length}条数据呼叫确认?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = [];
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
crudBox.callBox(ids).then(res => {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery();
})
}).catch(() => {
this.$refs.table.clearSelection()
DonMessage.info('取消成功!')
});
} else {
DonMessage.error('请至少选中一条记录!')
}
callBox(row) {
this.$confirm(`确认操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
crudBox.callBox(row.id).then(res => {
this.crud.notify(res.message,res.status)
this.crud.toQuery();
})
}).catch(() => {
this.$refs.table.clearSelection()
DonMessage.info('取消成功!')
});
},
changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.base_staus[val] + '" ' + data.code + ', 是否继续?', '提示', {

View File

@ -57,7 +57,7 @@
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 180px;"/>
</el-form-item>
<el-form-item label="装载数">
<el-form-item label="预期占用数">
<el-input v-model="form.extendD1" style="width: 180px;"/>
</el-form-item>
<el-form-item label="存储库区" prop="goodType">
@ -131,7 +131,7 @@
<el-table-column prop="name" label="名称" width="150"/>
<el-table-column prop="goodType" label="存储库区" width="150">
</el-table-column>
<el-table-column prop="extendD1" label="装载数"/>
<el-table-column prop="extendD1" label="预期占用数"/>
<el-table-column prop="unit" label="单位">
<template slot-scope="scope">
{{ dict.label.item_unit[scope.row.unit] }}

View File

@ -8,6 +8,8 @@
@keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.name" clearable placeholder="名称" style="width: 120px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.storageType" clearable placeholder="分配容器" style="width: 100px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select
v-model="query.status"
clearable
@ -24,7 +26,39 @@
:value="item.value"
/>
</el-select>
<el-select v-model="query.areaName" style="width: 120px;" clearable placeholder="请选择"
<el-select
v-model="query.agvStatus"
clearable
size="small"
placeholder="锁定状态"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.use_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-select
v-model="query.type"
clearable
size="small"
placeholder="类型"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.point_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-select v-model="query.areaName" style="width: 120px;" clearable placeholder="库区"
@keyup.enter.native="crud.toQuery" class="filter-item" @change="crud.toQuery">
<el-option
v-for="area in areas"
@ -33,6 +67,15 @@
:value="area.name"
/>
</el-select>
<el-select v-model="query.enabled" clearable placeholder="是否启用" style="width: 100px;" class="filter-item"
@change="crud.toQuery">
<el-option
v-for="baseStatus in dict.base_staus"
:key="baseStatus.id"
:label="baseStatus.label"
:value="baseStatus.value"
/>
</el-select>
<rrOperation :crud="crud"/>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
@ -46,11 +89,26 @@
size="mini"
v-show="true"
:loading="crud.delAllLoading"
:disabled="crud.selections.length === 0 "
:disabled="crud.selections.length !== 1 "
@click="callStockBackOut(crud.selections)"
>
容器出场
</el-button>
<el-button
v-permission="permission.stockAsn"
slot="right"
class="filter-item"
type="primary"
icon="el-icon-edit"
size="mini"
v-show="true"
:loading="crud.delAllLoading"
:disabled="crud.selections.length !== 1 "
@click="EmptyCarBackStatus=true"
>
容器入场
</el-button>
<el-button
v-permission="permission.stockAgvTask"
slot="right"
@ -60,7 +118,7 @@
size="mini"
v-show="true"
:loading="crud.delAllLoading"
:disabled="crud.selections.length === 0 "
:disabled="crud.selections.length !== 1 "
@click="callEmptyCarStatus=true"
>
容器搬运
@ -165,7 +223,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="当前容器">
<el-form-item label="锁定状态">
<el-select
v-model="form.agvStatus"
size="small"
placeholder="锁定状态"
class="filter-item"
style="width: 370px"
>
<el-option
v-for="item in dict.use_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</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"
@ -195,7 +269,8 @@
<el-table border ref="table" height="66vh" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;"
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="code" label="代码"/>
<el-table-column prop="id" label="ID"/>
<el-table-column prop="code" :show-overflow-tooltip="false" label="代码"/>
<el-table-column prop="name" label="名称"/>
<el-table-column prop="type" label="类型">
<template slot-scope="scope">
@ -207,12 +282,17 @@
<div>{{ scope.row.area.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="status" label="状态">
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.use_status[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="storageType" label="当前容器">
<el-table-column prop="agvStatus" label="锁定状态">
<template slot-scope="scope">
{{ dict.label.use_status[scope.row.agvStatus] }}
</template>
</el-table-column>
<el-table-column prop="storageType" label="分配容器">
<template slot-scope="scope">
<span v-if="scope.row.storageType !=null">{{ scope.row.storageType }}</span>
</template>
@ -237,7 +317,8 @@
/>
</template>
</el-table-column>
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" width="160px" align="center">
<el-table-column fixed="right"
v-if="checkPer(['admin','item:edit'])" label="操作" width="60px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
@ -247,19 +328,6 @@
style="float: left"
>
</udOperation>
</template>
</el-table-column>
<el-table-column
fixed="right"
width="50px">
<template slot-scope="scope">
<el-button type="primary" v-if="false" align="center" size="mini" @click="callEmptyCarStatusOffOn(scope.row)">
</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>
</template>
</el-table-column>
</el-table>
@ -288,7 +356,7 @@ 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, storageType: null,beatCode: null,heat: null}
const defaultForm = {id: null,agvStatus: null, status: 'FREE', enabled: 1, code: null, name: null, description: null, area: null, storageType: null,beatCode: null,heat: null}
export default {
name: 'Point',
components: {
@ -429,11 +497,12 @@ export default {
this.callStock.pointCode = this.from1.pointCode
this.callStock.ids=ids
pointUrl.pointCallStock(this.callStock).then(res => {
this.callEmptyCarStatus = false;
this.crud.notify(res.message,res.status)
this.crud.toQuery()
this.crud.notify("搬运成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
}).catch(e => {
this.crud.notify("搬运失败", CRUD.NOTIFICATION_TYPE.ERROR);
if (res.status===200){
this.callStock={};
this.callEmptyCarStatus=false
}
})
},
//
@ -443,7 +512,7 @@ export default {
ids.push(datas[i].id)
}
this.fromBack.ids=ids;
pointUrl.pointStockBack(this.fromBack).then(res => {
pointUrl.pointStockRk(this.fromBack).then(res => {
this.EmptyCarBackStatus = false;
this.crud.toQuery()
this.crud.notify("入场成功", CRUD.NOTIFICATION_TYPE.SUCCESS);
@ -451,6 +520,16 @@ export default {
this.crud.notify("入场失败", CRUD.NOTIFICATION_TYPE.ERROR);
})
},
callStockBackOut(datas) {
const ids = [];
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
pointUrl.pointStockCk(ids).then(res => {
this.crud.toQuery()
this.crud.notify(res.message, res.status);
})
},
//
getPointListData() {
crudPoint.queryPointList({}).then(res => {

View File

@ -2,30 +2,30 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-input v-model="query.relatedBill1" clearable placeholder="系统单号" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.relatedBill2" clearable placeholder="登记单号" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select
v-model="query.status"
clearable
size="small"
placeholder="状态"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.asn_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<date-range-picker start-placeholder="" v-model="query.createTime" class="date-item" />
<rrOperation :crud="crud"/>
<el-input v-model="query.relatedBill1" clearable placeholder="系统单号" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.relatedBill2" clearable placeholder="登记单号" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select
v-model="query.status"
clearable
size="small"
placeholder="状态"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.asn_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<date-range-picker start-placeholder="" v-model="query.createTime" class="date-item" />
<rrOperation :crud="crud"/>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :table-key="this.$options.name">
<crudOperation :permission="permission" :tableKey="this.$options.name">
<el-button
slot="left"
v-permission="permission.pointUsed"
@ -121,14 +121,11 @@
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" fixed="right" label="操作" style="width: 120px" align="center">
<template slot-scope="scope">
<el-button
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
@click="jumpAsnDetail(scope.row.relatedBill1)"
>
查看明细
size="mini"
type="text"
icon="el-icon-edit"
@click="jumpAsnDetail(scope.row)"
>明细
</el-button>
</template>
</el-table-column>
@ -149,7 +146,6 @@ 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";
import DateRangePicker from '@/components/DateRangePicker'
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 }
@ -193,9 +189,9 @@ export default {
[CRUD.HOOK.beforeRefresh]() {
return true
},
jumpAsnDetail(relatedBill1) {
jumpAsnDetail(asn) {
// /homerouterindex.jspath
this.$router.push({ path: '/business-data/asnDetail/asnDetail', query: { relatedBill1: relatedBill1 }})
this.$router.push({ path: '/business-data/asnDetail/asnDetail', query: { asn: asn }})
},
startAsn(id) {
this.$confirm(`确定开始收货?`, '提示', {

View File

@ -2,240 +2,185 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 搜索 -->
<!-- <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"
v-for="item in this.itemListData"
:key="item.code"
:label="item.code"
:value="item.code">
<span style="float: left">{{ item.code }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</span>
</el-option>
</el-select>
<el-input v-model="query.itemName" clearable placeholder="物料名称" style="width: 140px;" class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select
v-model="query.status"
clearable
size="small"
placeholder="状态"
class="filter-item"
style="width: 100px"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.asn_status"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
<date-range-picker start-placeholder="" v-model="query.createTime" class="date-item" style="width: 100px"/>
<rrOperation :crud="crud"/>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :table-key="this.$options.name">
<el-button
slot="right"
v-permission="permission.checkAsn"
class="filter-item"
type="primary"
size="mini"
@click="collectMO = true"
icon="el-icon-document-add"
v-if="false"
>
MO票采集
</el-button>
<el-button
slot="right"
v-permission="permission.checkAsn"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-bottom-right"
:disabled="receivingStatus"
@click="checkAsn(crud.selections)"
v-if="false"
>
</el-button>
<!-- 容器更换 -->
<el-button
slot="right"
v-permission="permission.checkAsn"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-bottom-right"
:disabled="crud.selections.length !== 1 || containerReplacementStatus"
@click="ontainerReplacementOnOff=true"
v-if="false"
>
容器更换
</el-button>
<el-button
slot="right"
class="filter-item"
size="mini"
type="info"
icon="el-icon-s-order"
@click="doAsnTask(crud.selections[0].id)"
:disabled="crud.selections.length !== 1"
v-if="false"
>收货详情
</el-button>
<el-upload
class="upload-demo"
slot='right'
style="float: right;padding-left: 5px"
:headers="headers"
action="/api/asnDetail/import_mo"
:file-list="fileList"
:on-error="handleErr"
:on-success=" (response, file, fileList) => { return handleSuccess(response, file, fileList,crud);}"
:show-file-list="true">
<el-button size="mini" v-if="false" type="success" icon="el-icon-upload2"></el-button>
</el-upload>
</crudOperation>
<AsnTask ref="asnTask"/>
</div>
<!--表单组件-->
<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="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
v-for="item in asnList"
:key="item.id"
:label="item.relatedBill1"
:value="item.relatedBill1"
/>
</el-select>
<el-form ref="asnForm" :inline="true" :model="asnFrom" :rules="rules" size="small" label-width="80px">
<el-form-item label="系统单号" prop="relatedBill1">
<el-input v-model="asnFrom.relatedBill1" style="width: 140px;" />
</el-form-item>
<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 items"
:key="item.id"
:label="item.code"
:value="item"
/>
</el-select>
<el-form-item label="订单来源">
<el-input v-model="asnFrom.orderOrigin" style="width: 140px;" />
</el-form-item>
<el-form-item label="订单数量">
<el-input v-model="form.orderQty" style="width: 200px;"/>
<el-form-item label="货主" filters filter-method>
<el-input v-model="asnFrom.structure" style="width: 140px;" />
</el-form-item>
<el-form-item label="收货数量">
<el-input v-model="form.receivedQty" style="width: 200px;"/>
<el-form-item label="登记单号">
<el-input v-model="asnFrom.relatedBill2" style="width: 140px;" />
</el-form-item>
<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.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">
<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" height="68vh" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;"
@selection-change="this.selectionChangeHandler" @row-click="this.clickRow" border>
<el-table-column prop="asn.relatedBill1" label="入库单号" width="100"/>
<el-table-column prop="asn.billType.name" 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>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="itemName" label="物料名称">
<template slot-scope="scope">
<div>{{ scope.row.item.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="propC4" label="操作方式">
<template slot-scope="scope">
<div>{{ scope.row.propC4 }}</div>
</template>
</el-table-column>
<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="orderQty" label="订单数量"/>
<el-table-column prop="receivedQty" 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" />
<el-table-column v-if="checkPer(['admin','item:edit'])" label="操作" fixed="right" width="120px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
:show-dle="true"
<el-form-item label="订单状态" prop="status">
<el-select
v-model="asnFrom.status"
filterable
placeholder="订单状态"
style="width: 140px;"
>
</udOperation>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<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="单据类型" prop="billType">
<el-select v-model="asnFrom.billType" value-key="id" filterable placeholder="请选择单据类型"
style="width: 140px;">
<el-option
v-for="item in billTypeList"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
<div style="float: right;">
<pagination/>
</el-form>
<el-divider></el-divider>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name">
<el-button
slot="left"
v-permission="permission.edit"
class="filter-item"
type="primary"
size="mini"
@click="editAsn()"
>
保存
</el-button>
<el-button
slot="right"
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
plain="plain"
icon="el-icon-document-add"
@click="crud.toAdd"
>
添加物料
</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="120px">
<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 itemList"
:key="item.id"
:label="item.code"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="订单数量">
<el-input v-model="form.orderQty" style="width: 200px;"/>
</el-form-item>
<el-form-item label="收货数量">
<el-input v-model="form.receivedQty" style="width: 200px;"/>
</el-form-item>
<el-form-item label="上架数量">
<el-input v-model="form.putQty" style="width: 200px;"/>
</el-form-item>
<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.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">
<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" height="67vh" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column prop="asn.relatedBill1" label="入库单号" width="100"/>
<el-table-column prop="asn.billType.name" 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>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="itemName" label="物料名称">
<template slot-scope="scope">
<div>{{ scope.row.item.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="propC4" label="操作方式">
<template slot-scope="scope">
<div>{{ scope.row.propC4 }}</div>
</template>
</el-table-column>
<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="orderQty" label="订单数量"></el-table-column>
<el-table-column prop="receivedQty" label="收货数量"/>
<el-table-column prop="putQty" 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" />
<el-table-column v-if="checkPer(['admin','asnDetail:edit','asnDetail:del'])" :show-overflow-tooltip="false" label="操作" fixed="right" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<div style="float: right;">
<pagination />
</div>
</div>
</div>
</template>
<script>
import crudAsnDetail, {add, updateContainer} from '@/api/asnDetail'
import CRUD, {presenter, header, form, crud} from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import crudAsnDetail from '@/api/asnDetail'
import crudItem from '@/api/item'
import crudAsn from '@/api/asn'
import crudBillType from '@/api/billType'
import {selectEgvSceneAll} from '@/api/agvScene'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
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"
import DonMessage from "@/utils/message";
import DateRangePicker from "@/components/DateRangePicker/index.vue";
import {getToken} from "@/utils/auth";
const defaultForm = {
id: null,
asn: {relatedBill1:null},
asn:null,
item: null,
stock: null,
lineNo: null,
@ -266,246 +211,91 @@ const defaultForm = {
}
export default {
name: 'AsnDetail',
components: {DateRangePicker, AsnTask, Search, Treeselect, pagination, crudOperation, rrOperation, udOperation},
// eslint-disable-next-line vue/no-unused-components
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['asn_status'],
cruds() {
return CRUD({
title: '收货明细', url: 'api/asnDetail', idField: 'id', sort: 'id,desc', crudMethod: {...crudAsnDetail},
return CRUD({ title: '入库明细', url: 'api/asnDetail', idField: 'id', sort: 'id,desc', crudMethod: { ...crudAsnDetail },
optShow: {
add: true,
add: false,
edit: false,
del: false,
reset: true,
download: true
download: false
},
queryOnPresenterCreated: false
})
},
data() {
return {
headers: {'Authorization': getToken()},
fileList:[],
asnList: [],
items: [],
stocks: [],
form2: {po: null, stock: null},
form3: {stockName: null, newStock: null, asnDetailUpdate: null},
show_update: true,
queryTypeOptions: [
{ key: 'code', display_name: '代码' },
{ key: 'name', display_name: '名称' },
{ key: 'enabled', display_name: '状态' },
{ key: 'heat', display_name: '热度' }
],
permission: {
add: ['admin', 'asnDetail:add'],
edit: ['admin', 'asnDetail:edit'],
del: ['admin', 'asnDetail:del'],
checkAsn: ['admin', 'asnDetail:checkAsn']
download: ['admin', 'asnDetail:download']
},
rules: {
item: [
{required: true, message: '物料不能为空', trigger: 'blur'}
],
stock: [
{required: true, message: '容器不能为空', trigger: 'blur'}
code: [
{ required: true, message: '库区编号不能为空', trigger: 'blur' }
]
},
queryTypeOptions: [
{key: 'itemCode', display_name: '物料代码'},
{key: 'itemName', display_name: '物料名称'},
{key: 'po', display_name: 'MO票'},
{key: 'status', display_name: '状态'}
],
collectMO: false,
//
receivingStatus: true,
//
containerReplacementStatus: true,
ontainerReplacementOnOff: false,
itemListData: []
itemList:[],
billTypeList:[],
asnFrom:{}
}
},
mounted() {
//
this.itemDataGet()
this.getItem()
this.getAsns()
this.getItemList()
this.getBillTypeList()
this.defaultTableList()
},
methods: {
//
defaultTableList() {
this.query.relatedBill1 = this.$route.query.relatedBill1
defaultForm.asn.relatedBill1 = this.query.relatedBill1
let statusList=[];
statusList.push('OPEN')
statusList.push('ACTIVE')
statusList.push('PUTAWAY')
statusList.push('RECEIVING')
this.query.statusList = statusList
this.crud.toQuery()
},
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'])
crud.toQuery()
},
handleErr(err, file, fileList) {
let myError = err.toString();//
myError = myError.replace("Error: ", "") // " Error: "
myError = JSON.parse(myError);//
DonMessage.error("" + myError['message'])
},
// false
[CRUD.HOOK.beforeRefresh]() {
return true
},
getItem() {
getItems({}).then(res => {
this.items = res.content.map(function (obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
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) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
indexMethod(index) {
return index * 1 + 1;
},
checkAsn(datas) {
this.$confirm(`选中的${datas.length}条数据收货确认?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
for (let i = 0; i < datas.length; i++) {
ids.push(datas[i].id)
}
crudAsnDetail.doCheckAsn(ids).then(res => {
DonMessage.success('收货成功!');
this.crud.toQuery()
this.getStock()
})
}).catch(() => {
DonMessage.success('收货失败!');
})
},
collectMO2() {
crudAsnDetail.collectMOCreate(this.form2).then(res => {
this.collectMO = false
//
defaultTableList() {
if (this.$route.query.asn.id===undefined){
this.crud.notify("找不到入库单",400)
}else {
this.asn = this.$route.query.asn
this.query.asnId = this.asn.id
this.asnFrom = this.asn
this.crud.toQuery()
this.getStock()
this.resetForm()
}).catch(() => {
}
},
getItemList() {
crudItem.getItemsList({}).then(res => {
this.itemList = res.map(function (obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
//
doAsnTask(id) {
this.$refs.asnTask.dialog = true
this.$refs.asnTask.doInit(id)
getBillTypeList() {
crudBillType.getBillType({}).then(res => {
this.billTypeList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
//
resetForm() {
this.$refs["form2"].resetFields();
this.$data.form2 = JSON.parse(JSON.stringify(this.$options.data().form2))
},
WuLiaoClick(pack_number) {
this.form.orderQty = pack_number;
},
clickRow(row) {
this.crud.getTable().clearSelection()
this.crud.getTable().toggleRowSelection(row, true)
this.selectSingleClick_()
},
selectionChangeHandler(val) {
this.crud.selections = val
this.selectSingleClick_()
},
// => Checkbox
selectSingleClick_() {
if (this.crud.selections.length > 0) {
this.receivingStatus = false;
} else {
this.receivingStatus = true;
}
this.containerReplacementStatus = true;
for (const valElement of this.crud.selections) {
if (valElement.status === 'RECEIVED') {
this.receivingStatus = true;
}
if (valElement.status === 'OPEN') {
this.containerReplacementStatus = false;
this.form3.stockName = valElement.stock.name;
this.form3.asnDetailUpdate = valElement;
}
}
},
//
performContainerChange() {
this.$refs['form3'].validate((valid) => {
if (valid) {
let data_ = {data: null, id: null};
data_.id = this.form3.asnDetailUpdate.stock.id;
this.form3.asnDetailUpdate.stock = this.form3.newStock;
data_.data = this.form3.asnDetailUpdate;
updateContainer(data_).then(res => {
this.ontainerReplacementOnOff = false;
this.crud.toQuery()
this.getStock()
DonMessage.success('容器更换成功');
}).catch(() => {
DonMessage.success('容器更换失败!');
})
} else {
return false;
}
});
},
//
itemDataGet() {
getItemsList().then(res => {
this.itemListData = res;
}).catch(e => {
this.$message({
showClose: true,
message: '物料加载失败',
type: 'error'
});
editAsn(){
crudAsn.edit(this.asnFrom).then(res => {
this.crud.notify("保存成功",200)
})
}
}

View File

@ -4,41 +4,22 @@
<div class="head-container">
<div v-if="crud.props.searchToggle" type="flex">
<!-- 搜索 -->
<div>
<label class="el-form-item-label">创建日期</label>
<date-range-picker v-model="query.createTime" style="width: 365px;" class="filter-item"/>
<el-input
v-model="query.stockCode"
clearable
placeholder="请输入容器编码"
style="width: 170px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.startSlotCode" clearable placeholder="起点位置" style="width: 170px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.endSlotCode" clearable placeholder="终点位置" style="width: 140px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
</div>
<div>
<el-input
<date-range-picker start-placeholder="" v-model="query.createTime" class="date-item" />
<el-input v-model="query.startSlotCode" clearable placeholder="起点位置" style="width: 120px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
<el-input v-model="query.endSlotCode" clearable placeholder="终点位置" style="width: 120px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
<el-input
v-model="query.id"
clearable
placeholder="请输入任务序号"
placeholder="任务序号"
style="width: 140px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-input
v-model="query.jobForce"
clearable
placeholder="请输入任务组号"
style="width: 140px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"/>
<el-select v-model="query.status" clearable multiple placeholder="请选择" style="width: 170px;"
class="filter-item"
@keyup.enter.native="crud.toQuery">
<div>
<el-select v-model="query.status" clearable multiple placeholder="任务状态" style="width: 180px;"
class="filter-item">
<el-option
v-for="taskStatus in dict.task_status"
:key="taskStatus.id"
@ -46,8 +27,7 @@
:value="taskStatus.value"
/>
</el-select>
<el-select v-model="query.type" clearable placeholder="请选择" style="width: 170px;" class="filter-item"
@keyup.enter.native="crud.toQuery">
<el-select v-model="query.jobType" clearable placeholder="工作类型" style="width: 120px;" class="filter-item">
<el-option
v-for="taskType in dict.task_type"
:key="taskType.id"
@ -61,17 +41,6 @@
<el-button class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">
</el-button>
</div>
</div>
<div class="statusButton" style="border-bottom: solid lightgray 1px;">
<el-radio-group v-model="radio3" @change="clickChange" size="small">
<el-radio-button label="全部"> 全部</el-radio-button>
<el-radio-button label="货架">叉车</el-radio-button>
<el-radio-button label="料箱">潜伏车</el-radio-button>
</el-radio-group>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name"/>
@ -140,8 +109,7 @@
:default-sort="{prop: 'id', order: 'descending'}"
@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="id" label="任务序号"/>
<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"/>
@ -152,13 +120,12 @@
</el-table-column>
<el-table-column prop="type" label="任务类型">
<template slot-scope="scope">
<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>
{{ scope.row.type }}
</template>
</el-table-column>
<el-table-column prop="jobType" label="工作类型">
<template slot-scope="scope">
{{ scope.row.jobType }}
<span v-if="scope.row.jobType !=null">{{ dict.label.task_type[scope.row.jobType] }}</span>
</template>
</el-table-column>
<el-table-column prop="jobPriority" label="优先级" width="60"/>
@ -167,6 +134,7 @@
<el-table-column prop="startTime" label="开始时间" width="140"/>
<el-table-column prop="endTime" label="完成时间" width="140"/>
<el-table-column
:show-overflow-tooltip="false"
fixed="right"
label="操作"
width="140">
@ -177,10 +145,9 @@
发送
</el-button>
<el-button type="danger"
:disabled="scope.row.status!='OPEN' && scope.row.status!='UP_CONTAINER' && scope.row.status!='OPEN' "
align="center"
size="mini"
style="float: left" @click="toAgvTaskFinish(scope.row)">
style="float: left" @click="toAgvTaskFinish(scope.row.id)">
异常
</el-button>
</template>
@ -249,7 +216,7 @@ export default {
},
data() {
return {
radio3: '全部',
radio3: '未完成',
permission: {
add: ['admin', 'agvTask:add'],
edit: ['admin', 'agvTask:edit'],
@ -312,18 +279,16 @@ export default {
formatter(row, column) {
return row.endSlotCode;
},
toAgvTaskFinish(data) {
this.MissionStateCallback.missionCode = data.id
this.MissionStateCallback.containerCode = data.stockCode
this.MissionStateCallback.missionStatus = 'COMPLETED'
crudAgvTask.missionStateCallback(this.MissionStateCallback).then(res => {
if (res.status == 200) {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS);
this.crud.toQuery()
} else {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.ERROR);
}
}).catch(() => {
toAgvTaskFinish(id) {//
crudAgvTask.toAgvTaskFinish(id).then(res => {
this.crud.notify(res.message, res.status);
this.crud.toQuery()
})
},
butSendAgvTask(id) {//
crudAgvTask.sendAgvTask(id).then(res => {
this.crud.notify(res.message, res.status);
this.crud.toQuery()
})
},
agvTaskCallbackMethod() {//
@ -351,30 +316,18 @@ export default {
this.form1.missionCode = id;
this.agvTaskCallbackStatus = true;
},
butSendAgvTask(id) {//
crudAgvTask.sendAgvTask(id).then(res => {
this.crud.notify(res.message, res.status);
this.crud.toQuery()
})
},
resetQuery() {
this.radio3 = '全部';
this.crud.resetQuery()
},
clickChange(lab) {
/*clickChange(lab) {
if (lab === "全部") {
this.crud.resetQuery();
} else if (lab === "货架") {
} else if (lab === "未完成") {
this.query.jobType = 'RACK'
this.crud.toQuery();
} else if (lab === "料箱") {
this.query.jobType = 'PICKER'
this.crud.toQuery();
} else if (lab === "滚筒") {
this.query.jobType = 'ROLLER'
this.crud.toQuery();
}
}
}*/
}
}
</script>

View File

@ -40,18 +40,6 @@
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" :table-key="this.$options.name">
<el-button
v-permission="permission.ctDeav"
slot="right"
class="filter-item"
type="danger"
icon="el-icon-edit"
size="mini"
:disabled="crud.selections.length !== 1 || this.crud.selections[0].orderQty<=this.crud.selections[0].allocatedQty"
@click="LoadDevanning()"
>
拆托
</el-button>
<el-button
v-if="ButReplaceInvFlag"
slot="right"
@ -73,9 +61,9 @@
:title="crud.status.title"
width="500px"
>
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="点位" prop="point">
<el-select v-model="form.point" filterable placeholder="请选点位" value-key="id" style="width: 370px;">
<el-select v-model="form.point" filterable placeholder="请选点位" value-key="id" style="width: 200px;">
<el-option
v-for="point in points"
:key="point.id"
@ -84,27 +72,14 @@
/>
</el-select>
</el-form-item>
<el-form-item label="容器" prop="stock">
<el-select v-model="form.stock" value-key="id" filterable placeholder="请选择容器" style="width: 370px;">
<el-option
v-for="stock in stocks"
:key="stock.id"
:label="stock.code"
:value="stock"
/>
</el-select>
</el-form-item>
<el-form-item label="数量">
<el-input v-model="form.quantity" style="width: 370px;" />
<el-input v-model="form.quantity" :disabled="true" style="width: 100px;" />
</el-form-item>
<el-form-item label="分配数">
<el-input v-model="form.queuedQty" style="width: 370px;" />
<el-input v-model="form.queuedQty" :disabled="true" style="width: 100px;" />
</el-form-item>
<el-form-item label="重量">
<el-input v-model="form.weight" style="width: 370px;" />
</el-form-item>
<el-form-item label="体积">
<el-input v-model="form.volume" style="width: 370px;" />
<el-form-item label="RFID">
<el-input v-model="form.itemKey.propC7" :rows="3" type="textarea" style="width: 370px;" />
</el-form-item>
<el-form-item label="描述">
<el-input v-model="form.description" :rows="3" type="textarea" style="width: 370px;" />
@ -164,7 +139,6 @@
<el-table
ref="table"
v-loading="crud.loading"
show-summary
:data="crud.data"
border
size="small"
@ -172,7 +146,7 @@
height="70vh"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column type="selection" width="30" />
<el-table-column prop="id" label="库存ID" />
<el-table-column :show-overflow-tooltip="true" prop="itemCode" label="物料编码">
<template slot-scope="scope">
@ -236,33 +210,26 @@
</el-table-column>
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="queuedQty" label="占用数" />
<el-table-column prop="propC1" label="批次号">
<template slot-scope="scope">
<div>{{ scope.row.itemKey.propC1 }}</div>
</template>
</el-table-column>
<el-table-column prop="orderNumber" label="工单号">
<template slot-scope="scope">
<div>{{ scope.row.itemKey.orderNumber }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" />
<el-table-column
v-if="checkPer(['admin','fileManagement:edit','fileManagement:del'])"
label="操作"
width="150px"
align="center"
fixed="right"
>
<!-- <el-table-column v-if="checkPer(['admin','inventory:ckxq'])" fixed="right" label="操作" style="width: 120px" align="center">
<template slot-scope="scope">
<el-popconfirm
title="确定删除吗?"
@confirm="deleteDataM(scope.row.id)"
<el-button
v-permission="permission.ckxq"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
@click="jumpAsnDetail(scope.row.relatedBill1)"
>
<el-button slot="reference" type="danger">删除</el-button>
</el-popconfirm>
查看详情
</el-button>
</template>
</el-table-column>
</el-table-column>-->
</el-table>
<!--分页组件-->
<div style="float: right;">
@ -281,11 +248,12 @@ import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import {queryPickTask} from "@/api/task";
import {getPoints} from "@/api/point";
const defaultForm = {
id: null,
billCode: null,
itemKey: { item: { id:null } },
itemKey: { item: { id:null },propC7:null },
point: null,
stock: null,
bigStockId: null,
@ -321,7 +289,7 @@ export default {
crudMethod: { ...crudInventory },
optShow: {
add: false,
edit: false,
edit: true,
del: true,
reset: false,
download: true
@ -340,7 +308,8 @@ export default {
edit: ['admin', 'inventory:edit'],
del: ['admin', 'inventory:del'],
download: ['admin', 'inventory:download'],
ctDeav: ['admin', 'inventory:ctDeav']
ctDeav: ['admin', 'inventory:ctDeav'],
ckxq: ['admin', 'inventory:ckxq']
},
FromDevanningFlag: false,
devanPropC6: { startPropC6: null, endPropC6: null },
@ -348,6 +317,9 @@ export default {
rules: {}
}
},
mounted() {
this.getPoints()
},
methods: {
// false
[CRUD.HOOK.beforeRefresh]() {
@ -363,6 +335,16 @@ export default {
})
})
},
getPoints() {
getPoints().then(res => {
this.points= res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
LoadDevanning() {
this.FromDevanningFlag = true
this.fromDevanning.invIds = []
@ -438,6 +420,6 @@ export default {
}
</script>
<style scoped>
<style>
</style>

View File

@ -132,14 +132,11 @@
<el-table-column v-if="checkPer(['admin','asn:edit','asn:del'])" fixed="right" label="操作" align="center">
<template slot-scope="scope">
<el-button
v-permission="permission.add"
class="filter-item"
type="primary"
size="mini"
icon="el-icon-document-add"
@click="jumpPickDetail(scope.row.relatedBill1)"
>
查看明细
type="text"
icon="el-icon-edit"
@click="jumpPickDetail(scope.row)"
>明细
</el-button>
</template>
</el-table-column>
@ -234,9 +231,9 @@ export default {
this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
jumpPickDetail(relatedBill1) {
jumpPickDetail(pick) {
// /homerouterindex.jspath
this.$router.push({ path: '/business-data/pickDetail/pickDetail', query: { relatedBill1: relatedBill1 }})
this.$router.push({ path: '/business-data/pickDetail/pickDetail', query: { pick: pick }})
},
cancelAllocate(datas) {
this.$confirm(`选中的${datas.length}条数据取消分配确认?`, '提示', {

View File

@ -2,36 +2,65 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 查询操作-->
<el-input
style="width: 140px"
v-model="query.relatedBill1"
clearable
placeholder="系统单号"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-input
style="width: 140px"
v-model="query.itemCode"
clearable
placeholder="物料代码"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-input
style="width: 140px"
v-model="query.itemName"
clearable
placeholder="请输入物料名称"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<date-range-picker v-model="query.createTime" class="date-item" />
<!-- 搜索-->
<rrOperation ref="rrOperation" :crud="crud" />
<el-form ref="form" :inline="true" :model="pick" :rules="rules" size="small" label-width="120px">
<el-form-item label="系统单号" prop="relatedBill1">
<el-input v-model="pick.relatedBill1" style="width: 135px;" />
</el-form-item>
<el-form-item label="登记单号">
<el-input v-model="pick.relatedBill2" style="width: 135px;" />
</el-form-item>
<el-form-item label="单据类型" prop="billType">
<el-select v-model="pick.billType" value-key="id" filterable placeholder="请选择单据类型"
style="width: 135px;">
<el-option
v-for="item in billTypeList"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="订单状态" prop="status">
<el-select v-model="pick.status" filterable placeholder="请选择" style="width: 135px;">
<el-option
v-for="item in dict.pick_status"
:key="item.id"
:label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="pick.orderOrigin" style="width: 135px;" />
</el-form-item>
<el-form-item label="优先级">
<el-input v-model="pick.priority" style="width: 135px;" />
</el-form-item>
<el-form-item label="货主">
<el-input v-model="pick.owner" style="width: 135px;" />
</el-form-item>
<el-form-item label="来源名称">
<el-input v-model="pick.sourceName" style="width: 135px;" />
</el-form-item>
<el-form-item label="发货时间">
<el-date-picker v-model="pick.dispatchDate" type="datetime" style="width: 135px;" />
</el-form-item>
<el-form-item label="操作时间">
<el-date-picker v-model="pick.erTime" type="datetime" style="width: 135px;" />
</el-form-item>
</el-form>
<el-divider></el-divider>
<!-- 业务操作-->
<crudOperation :permission="permission" :table-key="tableKey">
<el-button
slot="left"
v-permission="permission.pointUsed"
class="filter-item"
type="primary"
size="mini"
@click="editPick()"
>
保存
</el-button>
<el-button
v-permission="permission.allocate"
slot="right"
@ -123,30 +152,14 @@
<el-table-column label="操作" width="150px" fixed="right" align="center">
<template slot-scope="scope">
<el-button
size="mini"
:disabled="scope.row.status!='OPEN'"
type="primary"
icon="el-icon-edit"
@click="editPick(scope.row)"
/>
<template>
<el-popconfirm
title="确定删除吗?"
icon="el-icon-delete"
icon-color="red"
@confirm="deletePick(scope.row)"
>
<el-button
slot="reference"
:disabled="scope.row.status!='OPEN'"
size="mini"
type="danger"
icon="el-icon-delete"
/>
</el-popconfirm>
</template>
<udOperation
:data="scope.row"
:permission="permission"
:show-dle="true"
:showPointIn="true"
style="float: left"
>
</udOperation>
</template>
</el-table-column>
</el-table>
@ -162,17 +175,6 @@
width="580px"
>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="120px">
<el-form-item label="所属订单" prop="pick">
<el-select v-model="form.pick" value-key="id" filterable placeholder="请所属订单"
style="width: 135px;">
<el-option
v-for="item in pickList"
:key="item.id"
:label="item.relatedBill1"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="明细行号">
<el-input v-model="form.lineNo" style="width: 135px;" />
</el-form-item>
@ -182,7 +184,7 @@
filterable
placeholder="请选择物料"
value-key="id"
style="width: 405px;"
style="width: 135px;"
@focus="getItem"
>
<el-option
@ -255,7 +257,8 @@ import { getItems, getItemsList } from '@/api/item'
import PickTask from '@/views/business-data/pickDetail/pickTicketTask.vue'
import DateRangePicker from '@/components/DateRangePicker/index.vue'
import DonMessage from "@/utils/message";
import {getAsnList} from "@/api/asn";
import curdAsn, {getAsnList} from "@/api/asn";
import {getBillType} from "@/api/billType";
const defaultForm = {
id: null,
@ -314,6 +317,8 @@ export default {
show_jh: true,
show_cancelfp: true,
pickList: [],
billTypeList: [],
pick: { id: null, deptId: null, billType: null, orderOrigin: null, priority: null, owner: null, relatedBill1: null, relatedBill2: null, sourceName: null, status: null, address: null, dispatchDate: null, erTime: null, createBy: null, updateBy: null, createTime: null, updateTime: null, orderDate: null },
radio3: '全部',
items: [],
permission: {
@ -350,6 +355,7 @@ export default {
this.getItem()
this.itemDataGet()
this.getPicks()
this.getBillType()
this.defaultTableList()
},
methods: {
@ -368,8 +374,18 @@ export default {
})
},
getItem() {
getItems({}).then(res => {
this.items = res.content.map(function(obj) {
getItemsList({}).then(res => {
this.items = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
getBillType() {
getBillType({}).then(res => {
this.billTypeList = res.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
@ -377,7 +393,6 @@ export default {
})
})
},
selectionChangeHandlerTwo(val) {
this.crud.selections = val
if (this.crud.selections.length === 0) {
@ -461,17 +476,19 @@ export default {
},
//
defaultTableList() {
this.query.relatedBill1 = this.$route.query.relatedBill1
defaultForm.pick.relatedBill1 = this.query.relatedBill1
let statusList=[];
statusList.push('OPEN')
statusList.push('ALLOCATE')
this.query.statusList = statusList
this.crud.toQuery()
this.pick = this.$route.query.pick
if (this.pick.id===undefined){
this.crud.notify("找不到出库单",400)
}else {
this.query.pickId = this.pick.id
this.form.pick = this.pick
this.crud.toQuery()
}
},
editPick(data) {
this.crud.toEdit(data)
editPick() {
crudPick.edit(this.pick).then(res => {
this.crud.notify("保存成功",200)
})
},
deletePick(data) {
this.crud.doDelete(data)

View File

@ -27,9 +27,6 @@
<el-form-item label="任务名称" prop="jobName">
<el-input v-model="form.jobName" style="width: 220px;" />
</el-form-item>
<el-form-item label="任务描述" prop="description">
<el-input v-model="form.description" style="width: 220px;" />
</el-form-item>
<el-form-item label="Bean名称" prop="beanName">
<el-input v-model="form.beanName" style="width: 220px;" />
</el-form-item>
@ -60,6 +57,9 @@
<el-radio :label="true">暂停</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="任务描述" prop="description">
<el-input v-model="form.description" style="width: 556px;" rows="4" type="textarea"/>
</el-form-item>
<el-form-item label="参数内容">
<el-input v-model="form.params" style="width: 556px;" rows="4" type="textarea" />
</el-form-item>