Merge remote-tracking branch 'origin/master_merge' into master_1_opt

# Conflicts:
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationMapper.xml
#	lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/config/TlogIdGenerator.java
#	lms/nladmin-system/src/main/java/org/nl/modules/common/utils/FileUtil.java
#	lms/nladmin-system/src/main/java/org/nl/modules/common/utils/enums/CellTypeEnum.java
#	lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/LogAspect.java
#	lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/QuartzManage.java
#	lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STRUCTIVT001.wql
#	lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql
#	lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java
#	lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoSaveIvtExcel.java
#	lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql
#	lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql
#	lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql
#	lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java
#	lms/nladmin-system/src/main/java/org/nl/wms/util/TranUtil.java
#	lms/nladmin-system/src/main/resources/config/application-dev.yml
#	lms/nladmin-system/src/main/resources/config/application-prod.yml
#	lms/nladmin-ui/src/views/login.vue
#	lms/nladmin-ui/src/views/system/user/index.vue
#	lms/nladmin-ui/src/views/wms/pdm/bi/index.vue
#	lms/nladmin-ui/src/views/wms/sch/task/index.vue
This commit is contained in:
zhangzq
2025-05-22 13:44:35 +08:00
243 changed files with 8221 additions and 2092 deletions

View File

@@ -24,4 +24,27 @@ export function edit(data) {
})
}
export default { add, edit, del }
export function showDetail(data) {
return request({
url: 'api/bstIvtStockingivt/showDetail',
method: 'post',
data
})
}
export function showDetail2(params) {
return request({
url: 'api/bstIvtStockingivt/showDetail2',
method: 'get',
params
})
}
export function showBom2(params) {
return request({
url: 'api/bstIvtStockingivt/showBom2',
method: 'get',
params
})
}
export default { add, edit, del, showDetail, showDetail2, showBom2 }

View File

@@ -83,12 +83,27 @@
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
:highlight-current-row="true"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')" />
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')"/>
<!-- <template slot-scope="scope">
<el-link type="primary" @click="toView(scope.$index, scope.row)">{{ scope.row.point_code }}</el-link>
</template>
</el-table-column>-->
<el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" />
<el-table-column prop="vehicle_code" label="托盘号" :min-width="flexWidth('vehicle_code',crud.data,'托盘号')" />
<el-table-column prop="product_area" label="区域" :min-width="flexWidth('product_area',crud.data,'区域')" />
<el-table-column prop="vehicle_code" label="托盘号" :min-width="flexWidth('vehicle_code',crud.data,'托盘号')">
<template slot-scope="scope">
<el-link type="primary" @click="toView2(scope.$index, scope.row)">{{ scope.row.vehicle_code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="point_type" label="点位类型" :min-width="flexWidth('point_type',crud.data,'点位类型')">
<template slot-scope="scope">
{{ dict.label.STOCK_POINT_TYPE[scope.row.point_type] }}
@@ -105,10 +120,12 @@
</template>
</el-table-column>
<el-table-column prop="sort_seq" label="顺序号" :min-width="flexWidth('sort_seq',crud.data,'顺序号')" />
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')" />
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')">
<template slot-scope="scope">
{{ scope.row.is_used === '1' ? '启用' : '禁用' }}
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="update_optname" label="修改人" :min-width="flexWidth('update_optname',crud.data,'修改人')" />
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
<el-table-column prop="plan" label="规划" :min-width="flexWidth('plan',crud.data,'规划')" />
@@ -125,16 +142,17 @@
<!--分页组件-->
<pagination />
</div>
<tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" />
</div>
</template>
<script>
import crudBstIvtStockingivt from './bstIvtStockingivt'
import CRUD, { crud, form, header, presenter } 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 TubeDialog2 from '@/views/b_lms/bst/ivt/stockingivt/tubeDialog2.vue'
const defaultForm = {
ivt_id: null,
@@ -159,7 +177,7 @@ const defaultForm = {
export default {
name: 'BstIvtStockingivt',
dicts: ['STOCK_POINT_STATUS', 'STOCK_POINT_TYPE', 'point_location'],
components: { pagination, crudOperation, rrOperation, udOperation },
components: { TubeDialog2, pagination, crudOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -203,12 +221,26 @@ export default {
create_time: [
{ required: true, message: '创建时间不能为空', trigger: 'blur' }
]
}}
},
showView: false,
vehicle_code: '',
showView2: false,
rows: [],
mstrow: {}
}
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
querytable() {
this.$refs.table.clearSelection()
this.crud.toQuery()
},
toView2(index, row) {
this.showView2 = true
this.mstrow = row
}
}
}

View File

@@ -0,0 +1,125 @@
<template>
<el-dialog :visible.sync="dialogVisible" title="托盘详情">
<div class="grid-container">
<div
v-for="(row, rowIndex) in grid"
:key="rowIndex"
class="grid-row"
>
<div
v-for="(cell, colIndex) in row"
:key="colIndex"
class="grid-cell"
>
<img
:src="cell.have_qzz == '0' ? imageC : cell.have_qzz == '1' ? imageA : imageB"
alt="方块"
class="grid-image"
>
</div>
</div>
</div>
</el-dialog>
</template>
<script>
import crudBstIvtStockingivt from './bstIvtStockingivt'
export default {
name: 'TubeDialog',
props: {
dialogShow: {
type: Boolean,
default: false
},
rows: {
type: Object
},
vehicleCode: {
type: String
}
},
data() {
return {
dialogVisible: false,
form: {},
imageA: require('@/assets/images/empty.png'), // 默认图片路径
imageC: require('@/assets/images/empty2.png'), // 默认图片路径
imageB: require('@/assets/images/showTube.png'), // 特殊状态图片路径
grid: Array(5).fill().map(() =>
Array(5).fill().map(() => ({
have_qzz: false
}))
)
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
},
rows: {
handler(newValue) {
this.grid = newValue
}
}
},
methods: {
open() {
// this.queryTableDtl()
},
close() {
this.$emit('update:dialogShow', false)
this.currentDis = {}
this.currentdtl = null
this.tableDtl = []
this.tabledis = []
this.$emit('AddChanged')
},
// toggleCell(row, col) {
// console.log(this.grid)
// this.$set(this.grid[row], col, {
// ...this.grid[row][col],
// have_qzz: !this.grid[row][col].have_qzz
// })
// },
queryTableDtl() {
const param = {
vehicle_code: this.vehicle_code
}
crudBstIvtStockingivt.showDetail(param).then(res => {
this.grid = res
})
}
}
}
</script>
<style scoped>
.grid-container {
display: flex;
flex-direction: column;
gap: 5px;
}
.grid-row {
display: flex;
gap: 5px;
justify-content: center;
}
.grid-cell {
width: 50px;
height: 50px;
cursor: pointer;
border: 1px solid #ddd;
transition: all 0.3s;
}
.grid-image {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>

View File

@@ -0,0 +1,114 @@
<template>
<el-dialog
append-to-body
title="托盘详情"
:visible.sync="dialogVisible"
destroy-on-close
fullscreen
@close="close"
@open="open"
>
<div class="grid-container">
<el-table
ref="table2"
:data="tableDtl"
style="width: 100%;"
max-height="300"
size="mini"
border
:highlight-current-row="true"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column min-width="50" show-overflow-tooltip prop="vehicle_code" label="托盘号" align="center" />
<el-table-column min-width="50" show-overflow-tooltip prop="row_num" label="排" align="center" />
<el-table-column prop="material_code" label="物料号" align="center" width="150" />
<el-table-column prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="50" prop="qty" label="数量" align="center" :formatter="crud.formatNum0" />
<el-table-column prop="update_time" label="修改时间" align="center" />
<el-table-column prop="update_optname" label="修改人" align="center" />
</el-table>
</div>
</el-dialog>
</template>
<script>
import crudBstIvtStockingivt from './bstIvtStockingivt'
import { crud } from '@crud/crud'
export default {
name: 'TubeDialog2',
components: { },
mixins: [crud()],
props: {
dialogShow: {
type: Boolean,
default: false
},
rowmst: {
type: Object
}
},
data() {
return {
dialogVisible: false,
tableDtl: [],
form: {}
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
},
rowmst: {
handler(newValue) {
this.form = newValue
}
}
},
methods: {
open() {
this.queryTableDtl()
},
close() {
this.$emit('update:dialogShow', false)
this.tableDtl = []
this.$emit('AddChanged')
},
queryTableDtl() {
crudBstIvtStockingivt.showDetail2({ 'vehicle_code': this.form.vehicle_code }).then(res => {
this.tableDtl = res
})
}
}
}
</script>
<style scoped>
.grid-container {
display: flex;
flex-direction: column;
gap: 5px;
}
.grid-row {
display: flex;
gap: 5px;
justify-content: center;
}
.grid-cell {
width: 50px;
height: 50px;
cursor: pointer;
border: 1px solid #ddd;
transition: all 0.3s;
}
.grid-image {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>

View File

@@ -162,53 +162,53 @@ export default {
</script>
<style rel="stylesheet/scss" lang="scss">
.login {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
margin: 0 auto 30px auto;
text-align: center;
color: #006cb6;
}
.sidebar-logo2 {
width: 370px;
height: 56px;
position: absolute; /* 绝对定位 */
top: 8px; /* 顶部对齐 */
left: 8px; /* 左侧对齐 */
}
.login-form {
border-radius: 6px;
background-color: rgb(252, 247, 247, 0.5); /* 白色背景50%透明度 */
width: 385px;
padding: 25px 25px 5px 25px;
.el-input {
height: 38px;
input {
.login {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
margin: 0 auto 30px auto;
text-align: center;
color: #006cb6;
}
.sidebar-logo2 {
width: 370px;
height: 56px;
position: absolute; /* 绝对定位 */
top: 8px; /* 顶部对齐 */
left: 8px; /* 左侧对齐 */
}
.login-form {
border-radius: 6px;
background-color: rgb(252, 247, 247, 0.5); /* 白色背景50%透明度 */
width: 385px;
padding: 25px 25px 5px 25px;
.el-input {
height: 38px;
input {
height: 38px;
}
}
.input-icon{
height: 39px;width: 14px;margin-left: 2px;
}
}
.input-icon{
height: 39px;width: 14px;margin-left: 2px;
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img{
cursor: pointer;
vertical-align:middle
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img{
cursor: pointer;
vertical-align:middle
}
}
}
</style>

View File

@@ -22,5 +22,12 @@ export function clearLogs(param) {
data: param
})
}
export function downloadData(param) {
return request({
url: '/api/pdmBiSubpackagerelation/downloadData',
method: 'post',
responseType: 'blob'
})
}
export default { getLogData, labelsValues, clearLogs }
export default { getLogData, labelsValues, clearLogs, downloadData }

View File

@@ -7,7 +7,7 @@
<el-select
v-model="system"
clearable
style="width: 100px; height: 35px;top: -5px;"
style="width: 100px; height: 35px;top: 0px;"
placeholder="所属标签"
>
<el-option
@@ -22,7 +22,7 @@
<el-select
v-model="logLevelValue"
clearable
style="width: 100px; height: 35px;top: -5px;"
style="width: 100px; height: 35px;top: 0px;"
placeholder="日志级别"
>
<el-option
@@ -34,11 +34,26 @@
</el-select>
</el-form-item>
<el-form-item label="接口">
<el-select
v-model="requestMethod"
clearable
filterable
style="width: 150px; height: 35px;top: 0px;"
placeholder="接口"
>
<el-option
v-for="item in interfaces"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item >
<el-input
v-model="requestMethod"
size="mini"
placeholder="请输入内容"
clearable
placeholder="接口地址"
/>
</el-form-item>
<el-form-item label="关键字">
@@ -135,6 +150,7 @@
</el-form-item>
<el-form-item>
<el-button @click="clearLogs">清空日志</el-button>
<el-button @click="downloadData">导出分切数据</el-button>
</el-form-item>
</el-form>
</div>
@@ -180,6 +196,7 @@
<script>
import logOperation from '@/views/loki/api/loki'
import { downloadFile } from '@/utils'
let queryParam = {
logLevel: null,
@@ -200,6 +217,7 @@ export default {
return {
labelsOptions: [], // 所有标签和对应所有值数据
systemOptions: [], // 所有标签和对应所有值数据
interfaces: [], // 所有标签和对应所有值数据
logLevelValue: '',
system: '',
timeRange: [],
@@ -274,7 +292,7 @@ export default {
},
created() {
this.initLabelsValues('logLevel')
this.initLabelsValues('system')
this.initLabelsValues('interface')
},
methods: {
fontType(level) {
@@ -294,8 +312,8 @@ export default {
if (type === 'logLevel') {
this.labelsOptions = res
}
if (type === 'system') {
this.systemOptions = res
if (type === 'interface') {
this.interfaces = res
}
})
},
@@ -376,6 +394,12 @@ export default {
},
changetype() {
},
downloadData() {
logOperation.downloadData().then(result => {
debugger
downloadFile(result, '导出数据', 'xlsx')
});
},
clearParam() {
queryParam = {

View File

@@ -49,4 +49,12 @@ export function edit(data) {
})
}
export default { get, add, edit, del, getDictMap }
export function getDictDetails(data) {
return request({
url: 'api/dict/dictDetail/post',
method: 'post',
data
})
}
export default { get, add, edit, del, getDictMap, getDictDetails }

View File

@@ -1,36 +1,37 @@
<template>
<el-popover
v-model="visible"
placement="top-end"
width="900"
trigger="manual"
v-model="visible">
>
点击信息标识已读
<div style="margin: 5px" v-loading="loading">
<el-tabs v-model="activeName" @tab-click="handleClick" >
<el-tab-pane :label="d.label" :name="d.value" v-for="d in dict.notice_type" :key="d.id" >
<el-empty v-if="notReadMsgList && notReadMsgList[d.value-1] && notReadMsgList[d.value-1].length === 0" description="暂无信息" ></el-empty>
<div v-loading="loading" style="margin: 5px">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane v-for="d in dict.notice_type" :key="d.id" :label="d.label" :name="d.value">
<el-empty v-if="notReadMsgList && notReadMsgList[d.value-1] && notReadMsgList[d.value-1].length === 0" description="暂无信息" />
<div v-for="o in notReadMsgList[d.value-1]" :key="o.notice_id">
<a href="javascript:" @click="showMessage(o)">
<el-row @click="showMessage">
<el-col :span="2">
<el-tag type="danger">{{ dict.label.notice_type[o.notice_type] }}</el-tag>
</el-col>
<el-col :span="15" style="font-weight: bolder">{{o.notice_title}}</el-col>
<el-col :span="7" style="color: #cccccc">{{o.create_time}}</el-col>
<el-col :span="15" style="font-weight: bolder">{{ o.notice_title }}</el-col>
<el-col :span="7" style="color: #cccccc">{{ o.create_time }}</el-col>
</el-row>
<el-divider ></el-divider>
<el-divider />
</a>
</div>
</el-tab-pane>
</el-tabs>
<div style="text-align: right">
<el-button type="text" @click="visible = !visible">取消</el-button>
<el-button type="text" @click="toSiteMessage" >查看更多>></el-button>
<el-button type="text" @click="toSiteMessage">查看更多>></el-button>
</div>
</div>
<span slot="reference" @click="fetchNotice">
<el-badge :value="notReadMsgCount" :hidden="notReadMsgCount==0">
<el-icon class="el-icon-bell" style="font-size: 22px;"></el-icon>
<el-icon class="el-icon-bell" style="font-size: 22px;" />
</el-badge>
</span>
</el-popover>
@@ -57,6 +58,15 @@ export default {
beforeMount() {
this.getMessage()
},
mounted() {
this.getMessage()
this.receivedCount()
this.initStageData()
this.$bus.on(NOTICE_MESSAGE_UPDATE, this.receivedCount) // 监听事件
},
destroyed() {
this.$bus.off(NOTICE_MESSAGE_UPDATE)
},
methods: {
/**
* 打开列表页
@@ -94,7 +104,7 @@ export default {
},
// 定时获取消息数量
initStageData() {
// todo: 定时器
// 定时器
this.timer = setInterval(() => {
console.log('定时器启动')
this.receivedCount()
@@ -125,15 +135,6 @@ export default {
// console.log(this.dict.notice_type)
// console.log(tab, event)
}
},
mounted() {
this.getMessage()
this.receivedCount()
this.initStageData()
this.$bus.on(NOTICE_MESSAGE_UPDATE, this.receivedCount) // 监听事件
},
destroyed() {
this.$bus.off(NOTICE_MESSAGE_UPDATE)
}
}
</script>

View File

@@ -260,7 +260,7 @@
style="width: 100%;"
@selection-change="getRows"
>
<el-table-column type="selection" width="55" />
<el-table-column type="selection" width="55" />
<el-table-column prop="label" label="权限范围" />
<el-table-column label="数据权限">
<template slot-scope="scope">

View File

@@ -31,5 +31,18 @@ export function confirmUpdate(data) {
data
})
}
export default { add, edit, del, confirmUpdate }
export function getBoxTypes(params) {
return request({
url: 'api/boxtype/getBoxTypes',
method: 'get',
params
})
}
export function confirmBox(data) {
return request({
url: 'api/boxtype/confirmBox',
method: 'post',
data
})
}
export default { add, edit, del, confirmUpdate, getBoxTypes, confirmBox }

View File

@@ -178,6 +178,53 @@
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog
title="子卷步序信息"
append-to-body
:visible.sync="dtlVisible"
destroy-on-close
width="1000px"
>
<!--表格渲染-->
<el-table
:data="childrenList"
>
<el-table-column prop="container_name" label="子卷号" show-overflow-tooltip width="210px" />
<el-table-column prop="spec" label="步序" show-overflow-tooltip width="120">
<template slot-scope="scope">
{{ dict.label.subSpec[scope.row.spec] }}
</template>
</el-table-column>
<el-table-column prop="result" label="执行结果" show-overflow-tooltip width="120">
<template slot-scope="scope">
{{ scope.row.result.toString() }}
</template>
</el-table-column>
<el-table-column prop="param" label="执行参数" show-overflow-tooltip width="150" />
<el-table-column prop="msg" label="备注" show-overflow-tooltip width="150" />
<el-table-column prop="create_time" label="创建时间">
<template slot-scope="scope">
{{ new Date(scope.row.create_time).toLocaleString() }}
</template>
</el-table-column>
<el-table-column label="操作">
<template scope="scope">
<el-button
v-if="scope.row.result==false && scope.row.url"
type="danger"
class="filter-item"
size="mini"
icon="el-icon-position"
@click.native.prevent="syncMes(scope.row)"
>同步</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<span slot="footer" class="dialog-footer">
<el-button @click="dtlVisible = false"> </el-button>
</span>
</el-dialog>
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
@@ -445,7 +492,11 @@
prop="container_name"
label="子卷号"
:min-width="flexWidth('container_name',crud.data,'子卷号')"
/>
>
<template slot-scope="scope">
<el-link type="warning" @click="toView(scope.row.container_name)">{{ scope.row.container_name }}</el-link>
</template>
</el-table-column>
<el-table-column prop="product_name" label="产品编码" :min-width="flexWidth('product_name',crud.data,'产品描述')" />
<el-table-column
prop="product_description"
@@ -454,7 +505,7 @@
/>
<el-table-column sortable prop="sap_pcsn" label="sap批次" :min-width="flexWidth('sap_pcsn',crud.data,'SAP批次')" />
<el-table-column prop="width" label="产品规格(幅宽)" :min-width="flexWidth('width',crud.data,'产品规格(幅宽)')" />
<el-table-column prop="width_standard" :formatter="crud.formatNum0" label="客户要求幅宽" :min-width="flexWidth('width_standard',crud.data,'客户要求幅宽')" />
<el-table-column prop="width_standard" :formatter="crud.formatNum1" label="客户要求幅宽" :min-width="flexWidth('width_standard',crud.data,'客户要求幅宽')" />
<el-table-column prop="thickness" label="产品厚度" :min-width="flexWidth('thickness',crud.data,'产品厚度')" />
<el-table-column
prop="mass_per_unit_area"
@@ -595,7 +646,9 @@ import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
import crudUserStor from "@/views/wms/basedata/st/userStor/userStor";
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
import crudPastivtquery from '@/views/wms/stat/pastivt/pastivtquery'
import { format } from 'date-fns'
const defaultForm = {
workorder_id: null,
@@ -635,7 +688,7 @@ const defaultForm = {
}
export default {
name: 'Subpackagerelation',
dicts: ['sub_package_relation', 'IS_OR_NOT'],
dicts: ['sub_package_relation', 'IS_OR_NOT', 'subSpec'],
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
@@ -650,6 +703,8 @@ export default {
},
data() {
return {
dtlVisible: false,
childrenList: [],
permission: {
add: ['admin', 'sub:add'],
edit: ['admin', 'sub:edit'],
@@ -739,6 +794,28 @@ export default {
[CRUD.HOOK.beforeRefresh]() {
return true
},
toView(data) {
crudPastivtquery.subRecord(data).then(res => {
if (res) {
this.dtlVisible = true
this.childrenList = res
}
})
},
async syncMes(row) {
const url = 'http://10.1.3.36:8081/' + row.url
const response = await fetch(url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
body: row.param // body 数据类型必须与“Content-Type”头匹配
})
const data = await response.json()
window.alert(JSON.stringify(data))
},
initQuery() {
const end = new Date()
const start = new Date()

View File

@@ -21,6 +21,16 @@
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="子卷编码">
<el-input
v-model="query.container_name"
clearable
placeholder="输入子卷编码"
style="width: 185px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="点位区域">
<el-select
v-model="query.packageinfo_area"
@@ -125,6 +135,7 @@
v-loading="crud.loading"
:data="crud.data"
size="mini"
:row-style="rowStyle"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
@@ -142,6 +153,8 @@
</template>
</el-table-column>
<el-table-column prop="container_name" label="子卷编号" width="140px" />
<el-table-column prop="weight" label="子卷毛重" width="100px" />
<el-table-column prop="paper_weight" label="纸管净重" width="100px" />
<el-table-column prop="row_num" label="" width="100px" />
<el-table-column prop="col_num" label="" width="100px" />
<el-table-column prop="depth" label="深浅位" width="100px" />
@@ -184,7 +197,7 @@ const defaultForm = {
qzzno: null,
vehicle_code: null,
point_status: null,
packageinfo_area: null,
packageinfo_area: '3',
sch_packageinfo_status: null,
sort_seq: null,
is_used: null,
@@ -209,6 +222,10 @@ export default {
idField: 'ivt_id',
sort: 'ivt_id,desc',
crudMethod: { ...crudDeliverypointivt },
query: {
packageinfo_area:'3',
size:100
},
optShow: {
add: false,
edit: false,
@@ -239,6 +256,20 @@ export default {
[CRUD.HOOK.beforeRefresh]() {
return true
},
rowStyle({row,index}){
let backgroun = {}
if (row.container_name!=null && row.update_time!=null && row.update_time!=undefined){
let now = new Date()
let before = new Date(row.update_time)
const diff = now.getTime() - before.getTime();
let min = Math.floor(diff/(1000*60))
console.log(min)
if (min>120){
backgroun.background = 'red';
}
}
return backgroun;
},
hand(value) {
this.crud.toQuery()
}

View File

@@ -488,7 +488,11 @@
<el-table-column v-if="false" prop="workorder_id" label="分切计划标识" />
<el-table-column prop="status" label="状态" :formatter="formatStatusName" />
<el-table-column prop="order_type" label="订单类型" :formatter="formatTypeName" />
<el-table-column prop="mfg_order_name" label="订单号" min-width="140" show-overflow-tooltip />
<el-table-column prop="mfg_order_name" label="订单号" min-width="200" >
<template slot-scope="scope">
<el-link type="primary" @click="toView2(scope.$index, scope.row)">{{ scope.row.mfg_order_name }}</el-link>
</template>
</el-table-column>
<el-table-column prop="container_name" label="子卷号" min-width="140" show-overflow-tooltip />
<el-table-column prop="parent_container_name" label="母卷号" min-width="120" show-overflow-tooltip />
<el-table-column prop="ware_house" label="来源位置" :formatter="formatHouseName" width="120px" />
@@ -557,6 +561,7 @@
<!--分页组件-->
<pagination />
</div>
<tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" />
</div>
</template>
@@ -565,8 +570,8 @@ import crudSlittingproductionplan from '@/views/wms/pdm/order/slittingplan/slitt
import CRUD, { crud, form, header, presenter } 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 TubeDialog2 from '@/views/wms/pdm/order/slittingplan/tubeDialog2.vue'
const defaultForm = {
workorder_id: null,
@@ -619,7 +624,7 @@ const defaultForm = {
export default {
name: 'Slittingproductionplan',
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp', 'IS_OR_NOT'],
components: { pagination, crudOperation, rrOperation, udOperation },
components: { pagination, crudOperation, rrOperation, TubeDialog2 },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -640,6 +645,8 @@ export default {
data() {
return {
permission: {},
showView2: false,
mstrow: {},
rules: {
order_type: [
{ required: true, message: '分切订单类型不能为空', trigger: 'blur' }
@@ -679,6 +686,14 @@ export default {
hand() {
this.crud.toQuery()
},
toView2(index, row) {
this.showView2 = true
this.mstrow = row
},
querytable() {
this.$refs.table.clearSelection()
this.crud.toQuery()
},
upMaterFinish() {
const _selectData = this.$refs.table.selection
const data = {

View File

@@ -0,0 +1,131 @@
<template>
<el-dialog
append-to-body
title="订单BOM信息"
:visible.sync="dialogVisible"
destroy-on-close
width="600px"
@close="close"
@open="open"
>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="100px" label-suffix=":">
<el-form-item label="id" prop="id">
<label slot="label">id:</label>
<el-input v-model="form.id" disabled placeholder="系统生成" clearable style="width: 300px" />
</el-form-item>
<el-form-item label="工单号" prop="mfgOrder">
<label slot="label">工单号:</label>
<el-input v-model="form.mfgOrder" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="木箱编码" prop="productName">
<label slot="label">木箱编码:</label>
<el-input v-model="form.productName" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="木箱描述" prop="description">
<el-select
v-model="form.description"
placeholder="木箱描述"
style="width: 400px"
class="filter-item"
clearable
filterable
@change="hand"
>
<el-option
v-for="item in typelist"
:key="item.box_type"
:label="item.box_name"
:value="item.box_type"
/>
</el-select>
</el-form-item>
<el-form-item label="管芯编码" prop="carrierName">
<label slot="label">管芯编码:</label>
<el-input v-model="form.carrierName" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="管芯描述" prop="carrierDescription">
<label slot="label">管芯描述:</label>
<el-input v-model="form.carrierDescription" disabled clearable style="width: 300px" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import crudBstIvtStockingivt from '@/views/b_lms/bst/ivt/stockingivt/bstIvtStockingivt'
import crudBoxtype from '@/views/wms/basedata/st/boxType/boxtype'
import CRUD, { crud } from '@crud/crud'
export default {
name: 'TubeDialog2',
components: {},
mixins: [crud()],
props: {
dialogShow: {
type: Boolean,
default: false
},
rowmst: {
type: Object
}
},
data() {
return {
dialogVisible: false,
typelist: [],
form: {},
row: {}
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
},
rowmst: {
handler(newValue) {
this.row = newValue
}
}
},
methods: {
open() {
this.queryTableDtl()
this.getBoxTypes()
},
hand(value) {
this.form.productName = value
},
close() {
this.$emit('update:dialogShow', false)
this.form = {}
this.$emit('AddChanged')
},
getBoxTypes() {
crudBoxtype.getBoxTypes().then(res => {
this.typelist = res
})
},
submit() {
crudBoxtype.confirmBox(this.form).then(res => {
this.typelist = res
this.crud.notify('保存成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.close()
})
},
queryTableDtl() {
crudBstIvtStockingivt.showBom2({ 'mfg_order_name': this.row.mfg_order_name }).then(res => {
this.form = res
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -276,8 +276,9 @@ export default {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
if (this.query_flag) {
this.crud.query.begin_time = (new Date().daysAgo(7)).strftime('%F', 'zh')
this.crud.query.end_time = (new Date()).strftime('%F', 'zh')
const afterD = new Date(new Date().getTime() + 2 * 8.64E7)
this.crud.query.begin_time = (new Date().daysAgo(3)).strftime('%F', 'zh')
this.crud.query.end_time = (afterD).strftime('%F', 'zh')
this.query_flag = false
}
},

View File

@@ -396,6 +396,7 @@ export default {
this.allDivBtn = true
const data = {}
data.sect_id = this.sect_id
data.stor_id = this.stor_id
data.iostorinv_id = this.openParam[0].iostorinv_id
crudRawAssist.allDivStruct(data).then(res => {
crudRawAssist.getIODtl({ 'bill_code': this.openParam[0].bill_code, 'open_flag': '1' }).then(res => {

View File

@@ -167,17 +167,14 @@
import CRUD, { crud, header, presenter } 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 DateRangePicker from '@/components/DateRangePicker/index'
import crudOutchargefrom from '@/views/wms/st/outcharge/outcharge'
import crudStorattr from '@/views/wms/basedata/st/stor/storattr'
import ViewDialog from '@/views/wms/st/outbill/ViewDialog'
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
export default {
name: 'Outcharge',
components: { crudOperation, rrOperation, udOperation, pagination, DateRangePicker, ViewDialog },
components: { crudOperation, rrOperation, pagination, ViewDialog },
cruds() {
return CRUD({
title: '出库冲销',
@@ -245,9 +242,6 @@ export default {
this.$set(this.query, 'createTime', [startDate, endDate])
this.crud.toQuery()
},
// [CRUD.HOOK.beforeRefresh]() {
// return false
// },
toView(index, row) {
this.mstrow = row
this.viewShow = true

View File

@@ -24,4 +24,11 @@ export function edit(data) {
})
}
export default { add, edit, del }
export function subRecord(code) {
return request({
url: '/api/pdmProductSpec/subSpec/'+code,
method: 'get'
})
}
export default { add, edit, del, subRecord }