feat(wms): 添加管制卷移库记录和管件信息缺失预警功能
新增管制卷移库记录管理模块,支持查询、标记完成、重新移库操作 新增成品入库管件信息为空预警定时任务 新增前端管制卷移库记录页面 子卷定级接口添加处理结果字段获取和保存到数据库 外箱标签打印改为| 为分隔符,适配公司名称中带,情况
This commit is contained in:
254
lms/nladmin-ui/src/views/wms/st/levelchange/index.vue
Normal file
254
lms/nladmin-ui/src/views/wms/st/levelchange/index.vue
Normal file
@@ -0,0 +1,254 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<!-- 搜索 -->
|
||||
<el-form
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
label-position="right"
|
||||
label-width="80px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="子卷号">
|
||||
<el-input
|
||||
v-model="query.container_name"
|
||||
size="mini"
|
||||
clearable
|
||||
placeholder="子卷号"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-select
|
||||
v-model="query.status"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="全部"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option label="已完成" value="1" />
|
||||
<el-option label="未完成" value="0" />
|
||||
<el-option label="移库异常" value="9" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="移库单据号" label-width="100px">
|
||||
<el-input
|
||||
v-model="query.move_bill_code"
|
||||
size="mini"
|
||||
clearable
|
||||
placeholder="移库单据号"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="query.createTime"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
@change="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<rrOperation />
|
||||
</el-form>
|
||||
</div>
|
||||
<!--操作栏-->
|
||||
<crudOperation :permission="permission" />
|
||||
<el-button
|
||||
type="success"
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
:disabled="!canOperate"
|
||||
@click="handleMarkComplete(crud.selections[0])"
|
||||
>
|
||||
标记完成
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
icon="el-icon-refresh"
|
||||
size="mini"
|
||||
:disabled="!canOperate"
|
||||
@click="handleRetryMove(crud.selections[0])"
|
||||
>
|
||||
重新移库
|
||||
</el-button>
|
||||
<div style="margin-bottom: 10px"></div>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
size="mini"
|
||||
:data="crud.data"
|
||||
highlight-current-row
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip label="移库单据号" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span style="color: #f89b0c; font-weight: bold;">{{ scope.row.move_bill_code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="container_name" label="子卷号" width="180" />
|
||||
<el-table-column show-overflow-tooltip prop="status" label="状态" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status === '1'" type="success" size="mini">已完成</el-tag>
|
||||
<el-tag v-else-if="scope.row.status === '0'" type="info" size="mini">未完成</el-tag>
|
||||
<el-tag v-else-if="scope.row.status === '9'" type="danger" size="mini">移库异常</el-tag>
|
||||
<span v-else>{{ scope.row.status }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="old_level" label="旧级别" width="80" :render-header="renderLevelHeader" />
|
||||
<el-table-column show-overflow-tooltip prop="old_result" label="旧处理结果" width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="new_level" label="新级别" width="80" :render-header="renderLevelHeader" />
|
||||
<el-table-column show-overflow-tooltip prop="new_result" label="新处理结果" width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="result_message" label="操作结果" min-width="400" />
|
||||
<el-table-column show-overflow-tooltip prop="create_optname" label="创建人" width="100" />
|
||||
<el-table-column show-overflow-tooltip prop="create_time" label="创建时间" width="160" />
|
||||
<el-table-column show-overflow-tooltip prop="update_optname" label="修改人" width="100" />
|
||||
<el-table-column show-overflow-tooltip prop="update_time" label="修改时间" width="160" />
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
<!--移库单详情弹窗(复用moveStor的AddDialog)-->
|
||||
<AddDialog @AddChanged="crud.toQuery" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import levelchangedtl from '@/views/wms/st/levelchange/levelchangedtl'
|
||||
import CRUD, { crud, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import request from '@/utils/request'
|
||||
import AddDialog from '@/views/wms/st/inStor/moveStor/AddDialog'
|
||||
|
||||
export default {
|
||||
name: 'Levelchangedtl',
|
||||
components: { crudOperation, rrOperation, pagination, AddDialog },
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '管制卷移库记录',
|
||||
url: '/api/levelchangedtl',
|
||||
idField: 'id',
|
||||
sort: 'create_time,desc',
|
||||
crudMethod: { ...levelchangedtl },
|
||||
optShow: {
|
||||
add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true
|
||||
},
|
||||
queryOnPresenterCreated: false
|
||||
})
|
||||
},
|
||||
mixins: [presenter(), header(), crud()],
|
||||
data() {
|
||||
return {
|
||||
permission: {
|
||||
add: ['admin', 'levelchangedtl:add'],
|
||||
edit: ['admin', 'levelchangedtl:edit'],
|
||||
del: ['admin', 'levelchangedtl:del']
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
canOperate() {
|
||||
if (this.crud.selections.length === 0) return false
|
||||
const row = this.crud.selections[0]
|
||||
return row.status === '0' || row.status === '9'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.initQuery()
|
||||
},
|
||||
methods: {
|
||||
// 自定义级别列表头(含问号提示)
|
||||
renderLevelHeader(h, { column }) {
|
||||
return h('span', [
|
||||
h('span', column.label || '级别'),
|
||||
h('el-tooltip', {
|
||||
props: {
|
||||
effect: 'dark',
|
||||
placement: 'top',
|
||||
content: '级别对应关系说明:\n 6级 → 管制、\n 5级→报废、\n 4级→改切 、\n 3级→A- 、\n 2级→A 、\n 1级→A+'
|
||||
}
|
||||
}, [
|
||||
h('i', {
|
||||
class: 'el-icon-question',
|
||||
style: { marginLeft: '4px', color: '#909399', cursor: 'pointer', fontSize: '14px' }
|
||||
})
|
||||
])
|
||||
])
|
||||
},
|
||||
handleMarkComplete(row) {
|
||||
this.$confirm('确认将子卷 ' + row.container_name + ' 标记为完成吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
levelchangedtl.markComplete(row).then(res => {
|
||||
this.crud.notify('标记完成成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
}).catch(() => {})
|
||||
},
|
||||
handleRetryMove(row) {
|
||||
this.$confirm('确认对子卷 ' + row.container_name + ' 重新执行移库操作吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
levelchangedtl.retryMove(row).then(res => {
|
||||
this.crud.notify('重新移库完成', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
}).catch(() => {
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
/* 搜索框创建时间默认最近一周 */
|
||||
initQuery() {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
const endYear = end.getFullYear()
|
||||
var endMonth = end.getMonth() + 1
|
||||
if (end.getMonth() + 1 < 10) {
|
||||
endMonth = '0' + endMonth.toString()
|
||||
}
|
||||
var endDay = end.getDate()
|
||||
if (end.getDate() < 10) {
|
||||
endDay = '0' + endDay.toString()
|
||||
}
|
||||
const endDate = endYear + '-' + endMonth + '-' + endDay + ' 23:59:59'
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
||||
const startYear = start.getFullYear()
|
||||
var startMonth = start.getMonth() + 1
|
||||
if (start.getMonth() + 1 < 10) {
|
||||
startMonth = '0' + startMonth.toString()
|
||||
}
|
||||
var startDay = start.getDate()
|
||||
if (start.getDate() < 10) {
|
||||
startDay = '0' + startDay.toString()
|
||||
}
|
||||
const startDate = startYear + '-' + startMonth + '-' + startDay + ' 00:00:00'
|
||||
this.$set(this.query, 'createTime', [startDate, endDate])
|
||||
this.crud.toQuery()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
::v-deep .el-dialog__body {
|
||||
padding-top: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,43 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: '/api/levelchangedtl',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: '/api/levelchangedtl',
|
||||
method: 'delete',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: '/api/levelchangedtl',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function retryMove(data) {
|
||||
return request({
|
||||
url: '/api/levelchangedtl/retryMove',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function markComplete(data) {
|
||||
return request({
|
||||
url: '/api/levelchangedtl/markComplete',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, retryMove, markComplete }
|
||||
@@ -160,7 +160,38 @@
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.IS_OR_NOT"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="管件信息是否为空" label-width="140px">
|
||||
<el-select
|
||||
v-model="query.is_empty"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.IS_OR_NOT"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否有库存" label-width="140px">
|
||||
<el-select
|
||||
v-model="query.is_join"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.IS_OR_NOT"
|
||||
|
||||
Reference in New Issue
Block a user