Commit 4debb416 authored by jingnan's avatar jingnan 👀

批量签审增加配套出库审核

parent 516068eb
<template>
<div class="outStorageMatchExamineLeft" style="padding-right: 15px; height: 100%; overflow: scroll;">
<!-- 搜索 -->
<el-form
ref="form"
:model="form"
size="small"
label-width="68px"
>
<el-form-item label="架次">
<el-input
v-model="form.sorties"
clearable
type="input"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="AO号">
<el-input
v-model="form.serialNumber"
clearable
type="input"
placeholder="请输入"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchForm()">查询</el-button>
<el-button @click="resetForm()">重置</el-button>
</el-form-item>
</el-form>
<!-- 分类展示 -->
<el-collapse
v-model="collapse.active"
v-loading="loading"
accordion
>
<el-collapse-item
v-for="(request, index) in requests"
:key="index"
:name="(index + 1).toString()"
>
<template slot="title">
<section class="collapse-title">| {{ request.name }}{{ request.lists.length }}</section>
</template>
<ul v-if="request.lists.length">
<template v-for="(item, subIndex) in request.lists">
<li
:key="item.id"
class="blue"
:class="{active: subIndex === active,'active-background':item.activeBackground}"
@click="currentAoClick(item,subIndex)"
>
<i class="el-icon-document" />
{{ item.sorties }} ,{{ item.serialNumber || '暂无' }},
{{ item.plannerName }}
</li>
</template>
</ul>
<span v-else class="empty">暂无数据</span>
</el-collapse-item>
</el-collapse>
</div>
</template>
<script>
import { post } from '@/utils/http'
export default {
name: 'OutStorageMatchExamineLeft',
components: {
},
props: {
selectData: {
type: Object,
default: () => {}
}
},
data() {
return {
loading: false,
// 搜索表单
form: {
reqNo: '',
reqBill: '',
ao: '',
resCode: '',
modelNo: ''
},
// 手风琴默认高亮
active: 0,
// 手风琴组件
collapse: {
active: ['1']
},
// 申请列表
requests: [
{ name: '配套出库', lists: [] }
]
}
},
mounted() {
this.init()
this.$bus.$on('reloadModuleList', (hasFlag) => {
this.$nextTick(() => {
this.init()
})
})
},
methods: {
// 加载左侧申请表
init() {
const params = {
'pageFrom': 1,
'pageSize': 9999,
'searchItems': {
'children': [],
'items': [
{
'fieldName': 'serialNumber',
'operator': 'LIKE',
'value': this.form.serialNumber || ''
},
{
'fieldName': 'sorties',
'operator': 'LIKE',
'value': this.form.sorties || ''
}
],
'operator': 'AND'
},
'openProps': [
{
'name': 'joExecutePlan'
}
],
'sortItem': [
{
'fieldName': 'modifyTime',
'sortOrder': 'desc'
}
]
}
this.loading = true
// return new Promise((resolve, reject) => {
post(`OutStorageRequest/search/matchStorageExpireToAo?taskDefinitionKey=${this.selectData.taskKey}`, params).then(res => {
const data = res.items.content.map(item => {
return {
...item,
plannerName: item.joExecutePlan && item.joExecutePlan[0] && item.joExecutePlan[0].planner && item.joExecutePlan[0].planner.name
}
})
this.requests.find(item => item.name === '配套出库').lists = data
this.currentAoClick(data[0], 0)
}).catch(err => console.log(err)).finally(() => {
this.loading = false
})
},
searchForm() {
this.init()
},
// 重置表单
resetForm() {
this.form = {}
this.init()
},
currentAoClick(item, subIndex) {
this.active = subIndex
this.$emit('currentAo:click', item)
},
// 阻止事件冒泡
stopDefault(e) {
e.stopPropagation()
}
}
}
</script>
<style lang="scss" scoped>
ul {
margin: -10px 0;
padding: 5px 0 0 0;
li {
margin-top: 5px;
padding: 0 5px 0 8px;
height: 25px;
line-height: 25px;
list-style: none;
cursor: pointer;
font-size: 14px;
color: #606266;
opacity: .85;
white-space: nowrap;
&.black{
color: black;
}
&.active-background{background-color: #67C23A;}
&.blue { color: blue; }
&.red { color: red; }
i { font-size: 14px; }
&:hover, &.active {
opacity: 1;
font-weight: 500;
background-color: #edf0f5;
}
}
}
.empty { margin-left: 10px; color: #666; }
.el-date-editor { width: 100%; }
.collapse-title { font-size: 14px; color: #666; }
.is-active .collapse-title { font-size: 15px; font-weight: 600; color: #222; }
</style>
<template>
<div class="outStorageMatchExamineRight">
<split-pane
ref="splitPane"
:min-percent="30"
:default-percent="60"
split="horizontal"
:class="['detail-pane','collapse']"
>
<template slot="paneL">
<div class="table-box">
<dee-as-com
:basic-data=" {...(currentAo&&currentAo.joExecutePlan&&currentAo.joExecutePlan[0]||{})}"
:lay-config="{ typeName: 'JoExecutePlan', layKey: 'batchSign_proPreConfirm_aoInfo'}"
/>
<dee-as-com
ref="outStorageMatch"
:basic-data=" { selectData: selectData }"
:lay-config="{ typeName: 'ExtSupportingItem', layKey: 'batchSign_proPreConfirm_rightTop'}"
:table-height="autoTopHeight"
/>
</div>
</template>
<template slot="paneR">
<div class="detail">
<dee-as-com
ref="outStorageMatchItem"
:lay-config="{ typeName: 'OutStorageMatchItem', layKey: 'batchSign_outStorageMatchExamine_rightBottom'}"
:table-height="autoBottomHeight"
:basic-data=" { selectData,selectionRows }"
@selectionChange="selectionChange"
/>
</div>
</template>
</split-pane>
</div>
</template>
<script>
export default {
name: 'OutStorageMatchExamineRight',
components: {},
props: {
selectData: {
type: Object,
default: () => {}
},
currentAo: {
type: Object,
default: () => {}
}
},
data() {
return {
selectionRows: [],
autoBottomHeight: '100%',
autoTopHeight: '480px'
}
},
computed: {},
watch: {},
created() {},
mounted() {
this.$bus.$on('reloadModuleList', (hasFlag) => {
this.$nextTick(() => {
this.init()
})
})
this.$nextTick(function() {
const splitPane = this.$refs.splitPane
const height = document.getElementById('app').offsetHeight - 120
if (splitPane) {
this.$watch(
function() {
return splitPane.percent
},
(val, oval) => {
this.autoTopHeight = val / 100 * height - 80 + 'px'
// this.autoBottomHeight = (100 - val) / 100 * height - 270 + 'px'
}
)
}
})
},
// 组件方法
methods: {
selectionChange(val) {
this.selectionRows = val
},
init(currentAo) {
setTimeout(() => {
this.$refs.outStorageMatch && this.$refs.outStorageMatch.$refs.asCom.getData(currentAo && currentAo.id || 0)
this.$refs.outStorageMatchItem && this.$refs.outStorageMatchItem.$refs.asCom.getData(currentAo && currentAo.id || 0)
}, 100)
}
}
}
</script>
<style lang='scss'>
.outStorageMatchExamineRight{
overflow: auto;
width: 100%;
height: 100%;
box-sizing: border-box;
padding-left: 8px;
// .sub-title{
// padding-top: 10px!important;
// }
.splitter-pane-resizer.horizontal {
opacity: 1;
background-color: #F1F4F5;
height: 8px;
border-bottom: 1px solid #e0e0e0;
border-top: 1px solid #e0e0e0;
}
.detail{
height: 100%;
background-color: #fff;
}
.dee-table{
.dee-tools {
margin: 2px 0!important;
}
.dee-table-config-bar{
margin: 2px 0!important;
}
.dee-table-pagination {
margin-top: 12px!important;
}
}
}
</style>
<!--
* @Author: gjn
* @Date: 2024-3-1 10:34:39
* @Description:批量签审_ 配套出库审核
-->
<template>
<div class="outStorageMatchExamine">
<dee-fold-pane
:min-percent="18"
:default-percent="18"
split="vertical"
class="detail-pane"
>
<template slot="paneL">
<Left
ref="left"
:select-data="selectData"
@currentAo:click="currentAoClick"
/>
</template>
<template slot="paneR">
<Right
v-show="subTypeName === '1'"
ref="right"
:select-data="selectData"
:current-ao="currentAo"
@left:init="() => this.$refs.left.init()"
/>
<!-- empty -->
<section v-if="!subTypeName" style="padding-left: 15px;">
请先选择左侧请求单
</section>
</template>
</dee-fold-pane>
</div>
</template>
<script>
import Left from './components/left.vue'
import Right from './components/right.vue'
export default {
name: 'OutStorageMatchExamine',
components: { Left, Right },
props: {
selectData: {
type: Object,
default: () => {}
}
},
data() {
return {
subTypeName: '',
currentAo: null
}
},
computed: {},
watch: {},
created() {},
mounted() {
},
// 组件方法
methods: {
currentAoClick(currentAo) {
this.subTypeName = '1'
this.currentAo = currentAo
this.$refs.right.init(currentAo)
}
}
}
</script>
<style lang='scss'>
.outStorageMatchExamine{
width: 100%;
height: 103%;
box-sizing: border-box;
padding:0 4px;
}
</style>
...@@ -37,6 +37,7 @@ export default { ...@@ -37,6 +37,7 @@ export default {
StationMasteConfirm: () => import('./stationMasteConfirm'), // 站位长确认 StationMasteConfirm: () => import('./stationMasteConfirm'), // 站位长确认
PlannerConfirm: () => import('./plannerConfirm'), // 计划员确认 PlannerConfirm: () => import('./plannerConfirm'), // 计划员确认
WorkHourExamine: () => import('./workHourExamine'), // 工时审核 WorkHourExamine: () => import('./workHourExamine'), // 工时审核
OutStorageMatchExamine: () => import('./outStorageMatchExamine'), // 配套出库审核
OutStorageMatchConfirm: () => import('./outStorageMatchConfirm'), // 配套出库确认 OutStorageMatchConfirm: () => import('./outStorageMatchConfirm'), // 配套出库确认
ProPreparateWorkerConfirm: () => import('./proPreparatWorkerConfirm'), // 生产准备工确认 ProPreparateWorkerConfirm: () => import('./proPreparatWorkerConfirm'), // 生产准备工确认
InstructionIdentificationBatch: () => import('./instructionIdentificationBatch'), // 指令标识 InstructionIdentificationBatch: () => import('./instructionIdentificationBatch'), // 指令标识
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment