'修改bug'
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* @Author: zwq
|
||||
* @Date: 2020-12-29 15:41:11
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-01-14 15:54:12
|
||||
* @LastEditTime: 2022-03-04 10:56:41
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
@@ -46,6 +46,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getList()"> {{ 'btn.search' | i18nFilter }} </el-button>
|
||||
<el-button type="primary" @click="manualTask()"> {{ $t('module.basicData.Warehouse.PerformTaskManual') | i18nFilter }} </el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<base-table
|
||||
@@ -70,12 +71,14 @@
|
||||
@pagination="getList()"
|
||||
/>
|
||||
<current-task-info v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getList" />
|
||||
<current-task-add v-if="manualTaskVisible" ref="manualTaskRef" @refreshDataList="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { CurrentTaskList } from '@/api/basicData/Warehouse/HistoricalTask'
|
||||
import CurrentTaskInfo from './components/CurrentTaskInfo.vue'
|
||||
import CurrentTaskAdd from './components/CurrentTask-add.vue'
|
||||
import i18n from '@/lang'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
|
||||
@@ -168,11 +171,12 @@ const tableProps = [
|
||||
|
||||
export default {
|
||||
name: 'ScrapInfo',
|
||||
components: { Pagination, BaseTable, MethodBtn, CurrentTaskInfo },
|
||||
components: { Pagination, BaseTable, MethodBtn, CurrentTaskInfo, CurrentTaskAdd },
|
||||
data() {
|
||||
return {
|
||||
trueWidth: 100,
|
||||
addOrUpdateVisible: false,
|
||||
manualTaskVisible: false,
|
||||
tableProps,
|
||||
tableBtn,
|
||||
list: [],
|
||||
@@ -237,6 +241,13 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id)
|
||||
})
|
||||
},
|
||||
// 手动执行任务
|
||||
manualTask() {
|
||||
this.manualTaskVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.manualTaskRef.init()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
202
src/views/basicData/Warehouse/ProcessStorageManagement.vue
Normal file
202
src/views/basicData/Warehouse/ProcessStorageManagement.vue
Normal file
@@ -0,0 +1,202 @@
|
||||
<!--
|
||||
* @Author: zwq
|
||||
* @Date: 2020-12-29 15:41:11
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-03-04 15:45:23
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form
|
||||
ref="formData"
|
||||
:rules="rules"
|
||||
:model="listQuery"
|
||||
:inline="true"
|
||||
size="medium"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item :label="$t('module.art.processList.processName')" prop="processId">
|
||||
<el-select
|
||||
v-model="listQuery.processId"
|
||||
:placeholder="$i18nForm(['placeholder.input', $t('module.art.processList.processName')])"
|
||||
clearable
|
||||
filterable
|
||||
:style="{width: '100%'}"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in processArr"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getList()"> {{ 'btn.search' | i18nFilter }} </el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<base-table
|
||||
:page="listQuery.current"
|
||||
:limit="listQuery.size"
|
||||
:table-config="tableProps"
|
||||
:table-data="list"
|
||||
:is-loading="listLoading"
|
||||
>
|
||||
<method-btn
|
||||
slot="handleBtn"
|
||||
:width="trueWidth"
|
||||
:method-list="tableBtn"
|
||||
@clickBtn="handleClick"
|
||||
/>
|
||||
</base-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="listQuery.current"
|
||||
:limit.sync="listQuery.size"
|
||||
@pagination="getList()"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { list } from '@/api/art-manage/process'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
|
||||
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
|
||||
import { timeFormatter } from '@/filters'
|
||||
import i18n from '@/lang'
|
||||
/**
|
||||
* 表格表头配置项 TypeScript接口注释
|
||||
* tableConfig<ConfigItem> = []
|
||||
*
|
||||
* Interface ConfigItem = {
|
||||
* prop: string,
|
||||
* label: string,
|
||||
* width: string,
|
||||
* align: string,
|
||||
* subcomponent: function,
|
||||
* filter: function
|
||||
* }
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
const tableBtn = [
|
||||
{
|
||||
type: 'see',
|
||||
btnName: i18n.t('module.basicData.Warehouse.processStorageLink')
|
||||
}
|
||||
]
|
||||
const tableProps = [
|
||||
{
|
||||
prop: 'code',
|
||||
label: i18n.t('module.art.processList.processCode'),
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'name',
|
||||
label: i18n.t('module.art.processList.processName'),
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'createTime',
|
||||
label: i18n.t('module.art.eqName'),
|
||||
filter: timeFormatter,
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'ExecutionInfo',
|
||||
components: { Pagination, BaseTable, MethodBtn },
|
||||
filters: {
|
||||
statusFilter(status) {
|
||||
const statusMap = {
|
||||
published: 'success',
|
||||
draft: 'info',
|
||||
deleted: 'danger'
|
||||
}
|
||||
return statusMap[status]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableBtn,
|
||||
trueWidth: 200,
|
||||
tableProps,
|
||||
list: [],
|
||||
processArr: [],
|
||||
total: 0,
|
||||
listLoading: true,
|
||||
rules: {},
|
||||
listQuery: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
processId: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
handleClick(raw) {
|
||||
this.addNew(raw.data.id)
|
||||
},
|
||||
init() {
|
||||
const lparams = {
|
||||
current: 1,
|
||||
size: 999
|
||||
}
|
||||
list(lparams).then(response => {
|
||||
if (response.data.records) {
|
||||
this.processArr = response.data.records
|
||||
} else {
|
||||
this.processArr.splice(0, this.list.length)
|
||||
}
|
||||
this.total = response.data.total
|
||||
})
|
||||
},
|
||||
getList() {
|
||||
// this.listLoading = true
|
||||
// ExecutionInfoList(this.listQuery).then(response => {
|
||||
// if (response.data.records) {
|
||||
// this.list = response.data.records
|
||||
// } else {
|
||||
// this.list.splice(0, this.list.length)
|
||||
// }
|
||||
// this.total = response.data.total
|
||||
this.list = [
|
||||
{
|
||||
code: 11,
|
||||
name: '11'
|
||||
}
|
||||
]
|
||||
this.listLoading = false
|
||||
// })
|
||||
},
|
||||
// 新增 / 修改
|
||||
addNew(id) {
|
||||
this.$router.push({
|
||||
name: 'ProcessStorageManagementInfo',
|
||||
query: {
|
||||
dictTypeId: id
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.edit-input {
|
||||
padding-right: 100px;
|
||||
}
|
||||
.cancel-btn {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 10px;
|
||||
}
|
||||
</style>
|
||||
125
src/views/basicData/Warehouse/components/CurrentTask-add.vue
Normal file
125
src/views/basicData/Warehouse/components/CurrentTask-add.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<!--
|
||||
* @Author: zwq
|
||||
* @Date: 2020-12-29 16:37:56
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-03-04 11:05:23
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<el-dialog
|
||||
:title="'btn.see' | i18nFilter"
|
||||
:visible.sync="visible"
|
||||
>
|
||||
<el-row :gutter="10">
|
||||
<el-form
|
||||
ref="dataForm"
|
||||
:model="dataForm"
|
||||
size="medium"
|
||||
label-width="110px"
|
||||
label-position="left"
|
||||
>
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.TaskBoxNumber')" prop="taskCode">
|
||||
<el-input v-model="dataForm.taskCode" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.FullBoxNumber')" prop="orderName">
|
||||
<el-input v-model="dataForm.orderName" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.ExecutionOperation')" prop="fullCode">
|
||||
<el-input v-model="dataForm.fullCode" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.TaskStatus')" prop="name">
|
||||
<el-input v-model="dataForm.name" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.ScrapInfo.remark')" prop="remark">
|
||||
<el-input v-model="dataForm.remark" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.TaskLocation')" prop="createTime">
|
||||
<el-input v-model="dataForm.createTime" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.FullBoxStartLocation')" prop="taskType">
|
||||
<el-input v-model="dataForm.taskType" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.Priority')" prop="emptyCode">
|
||||
<el-input v-model="dataForm.emptyCode" readonly :style="{width: '100%'}" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.NextOperation')" prop="anotherCurrLocation">
|
||||
<el-input
|
||||
v-model="dataForm.anotherCurrLocation"
|
||||
readonly
|
||||
:style="{width: '100%'}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">{{ 'btn.cancel' | i18nFilter }}</el-button>
|
||||
<el-button type="primary" @click="visible = false">{{ $t('module.basicData.Warehouse.PerformTaskManual') | i18nFilter }} </el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { CurrentTaskDetail } from '@/api/basicData/Warehouse/HistoricalTask'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
dataForm: {
|
||||
id: '',
|
||||
taskCode: undefined,
|
||||
orderName: undefined,
|
||||
fullCode: undefined,
|
||||
name: undefined,
|
||||
remark: undefined,
|
||||
field119: undefined,
|
||||
createTime: undefined,
|
||||
taskType: undefined,
|
||||
emptyCode: undefined,
|
||||
anotherCurrLocation: undefined,
|
||||
field121: undefined,
|
||||
taskSource: undefined,
|
||||
anotherCurrProcessCode: undefined,
|
||||
anotherNextProcessCode: undefined,
|
||||
anotherTargetLocation: undefined,
|
||||
field126: undefined
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) {
|
||||
this.dataForm.id = id
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!--
|
||||
* @Author: zwq
|
||||
* @Date: 2020-12-29 15:41:11
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-03-09 09:57:41
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div style="margin:10px 50px">
|
||||
<el-button type="success" @click="goback()">{{ 'btn.back' | i18nFilter }}</el-button>
|
||||
<el-button type="primary" @click="addNew()">{{ 'btn.add' | i18nFilter }}</el-button>
|
||||
</div>
|
||||
<base-table
|
||||
:page="listQuery.current"
|
||||
:limit="listQuery.size"
|
||||
:table-config="tableProps"
|
||||
:table-data="list"
|
||||
:is-loading="listLoading"
|
||||
>
|
||||
<method-btn
|
||||
slot="handleBtn"
|
||||
:width="trueWidth"
|
||||
:method-list="tableBtn"
|
||||
@clickBtn="handleClick"
|
||||
/>
|
||||
</base-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import i18n from '@/lang'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
|
||||
import { timeFormatter } from '@/filters'
|
||||
/**
|
||||
* 表格表头配置项 TypeScript接口注释
|
||||
* tableConfig<ConfigItem> = []
|
||||
*
|
||||
* Interface ConfigItem = {
|
||||
* prop: string,
|
||||
* label: string,
|
||||
* width: string,
|
||||
* align: string,
|
||||
* subcomponent: function,
|
||||
* filter: function
|
||||
* }
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
const tableBtn = [
|
||||
{
|
||||
type: 'delete',
|
||||
btnName: 'btn.delete'
|
||||
}
|
||||
]
|
||||
const tableProps = [
|
||||
{
|
||||
prop: 'code',
|
||||
label: i18n.t('module.basicData.cache.LocationCode'),
|
||||
filter: timeFormatter,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'name',
|
||||
label: i18n.t('module.basicData.cache.LocationName'),
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'shelfName',
|
||||
label: i18n.t('module.basicData.cache.locationType'),
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'Shelf',
|
||||
components: { BaseTable, MethodBtn },
|
||||
filters: {
|
||||
statusFilter(status) {
|
||||
const statusMap = {
|
||||
published: 'success',
|
||||
draft: 'info',
|
||||
deleted: 'danger'
|
||||
}
|
||||
return statusMap[status]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableBtn,
|
||||
trueWidth: 200,
|
||||
tableProps,
|
||||
list: [],
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
current: 1,
|
||||
size: 990,
|
||||
areaId: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.listQuery.areaId = this.$route.query.id
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
handleClick(raw) {
|
||||
if (raw.type === 'delete') {
|
||||
this.$confirm(`${this.$t('module.basicData.visual.TipsBefore')}[${raw.data.name}]?`, this.$t('module.basicData.visual.Tips'), {
|
||||
confirmButtonText: this.$t('module.basicData.visual.confirmButtonText'),
|
||||
cancelButtonText: this.$t('module.basicData.visual.cancelButtonText'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
// shelfDelete(raw.data.id).then(response => {
|
||||
// this.$message({
|
||||
// message: this.$t('module.basicData.visual.success'),
|
||||
// type: 'success',
|
||||
// duration: 1500,
|
||||
// onClose: () => {
|
||||
// this.getList()
|
||||
// }
|
||||
// })
|
||||
// })
|
||||
}).catch(() => {})
|
||||
}
|
||||
},
|
||||
getList(key) {
|
||||
this.listLoading = true
|
||||
// shelfList(this.listQuery).then(response => {
|
||||
// if (response.data.records) {
|
||||
// this.list = response.data.records
|
||||
// } else {
|
||||
// this.list.splice(0, this.list.length)
|
||||
// }
|
||||
this.listLoading = false
|
||||
// })
|
||||
},
|
||||
// 新增 / 修改
|
||||
addNew(id) {
|
||||
this.$router.push({
|
||||
name: 'ProcessStorageLink',
|
||||
query: {
|
||||
dictTypeId: id
|
||||
}
|
||||
})
|
||||
},
|
||||
goback() {
|
||||
this.$router.go(-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.edit-input {
|
||||
padding-right: 100px;
|
||||
}
|
||||
.cancel-btn {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 10px;
|
||||
}
|
||||
</style>
|
||||
477
src/views/basicData/Warehouse/components/processStorageLink.vue
Normal file
477
src/views/basicData/Warehouse/components/processStorageLink.vue
Normal file
@@ -0,0 +1,477 @@
|
||||
<!--
|
||||
* @Author: gtz
|
||||
* @Date: 2022-03-03 09:16:10
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-03-09 15:17:46
|
||||
* @Description: file content
|
||||
* @FilePath: \mt-ck-wms-ui\src\views\dashboard\index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="dashboard-container">
|
||||
<el-card class="dashboard-main">
|
||||
<el-row class="dashboard-title">
|
||||
<div class="dashboard-header-line" />
|
||||
<div class="dashboard-header-title">WMS库存信息</div>
|
||||
</el-row>
|
||||
<el-row class="dashboard-legend">
|
||||
<div
|
||||
v-for="item in cassetteStatusList"
|
||||
:key="'cassette' + item.id"
|
||||
class="dashboard-legend-cassette"
|
||||
>
|
||||
<div
|
||||
class="dashboard-legend-cassette-cricle"
|
||||
:style="{ background: item.color }"
|
||||
/>
|
||||
{{ item.name }}
|
||||
</div>
|
||||
|
|
||||
<div
|
||||
v-for="item in portAttributeList"
|
||||
:key="'port' + item.id"
|
||||
class="dashboard-legend-port"
|
||||
:style="{ background: item.color }"
|
||||
>
|
||||
{{ item.name }}
|
||||
</div>
|
||||
<div class="dashboard-legend-btn">
|
||||
<el-button type="primary" size="mini" @click="submitLinkList">{{
|
||||
"btn.submit" | i18nFilter
|
||||
}}</el-button>
|
||||
</div>
|
||||
<div class="dashboard-legend-search">
|
||||
<el-select
|
||||
v-model="current"
|
||||
size="mini"
|
||||
placeholder="请选择库存范围"
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in totalPage"
|
||||
:key="'select' + item"
|
||||
:label="'第' + item + '页'"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row
|
||||
v-if="current * 80 < shelfList[0].rowList[0].portList.length"
|
||||
class="dashboard-layout"
|
||||
:gutter="12"
|
||||
>
|
||||
<el-col
|
||||
v-for="item in 4"
|
||||
:key="'shelfbox' + item"
|
||||
class="dashboard-layout-shelf-box"
|
||||
:span="6"
|
||||
>
|
||||
<el-row>
|
||||
<el-col
|
||||
v-for="(i, index) in shelfList"
|
||||
:key="item + 'shelf' + i.id"
|
||||
:span="12"
|
||||
class="dashboard-layout-shelf"
|
||||
>
|
||||
<el-row>
|
||||
<el-col
|
||||
v-for="z in i.rowList"
|
||||
:key="item + 'shelf' + i + 'row' + z.id"
|
||||
:span="12"
|
||||
class="dashboard-layout-row"
|
||||
>
|
||||
<div
|
||||
v-for="x in 20"
|
||||
:key="item + 'shelf' + i + 'row' + z + 'item' + x"
|
||||
class="dashboard-layout-item"
|
||||
:style="{
|
||||
background:
|
||||
portAttributeObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute
|
||||
],
|
||||
cursor:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? 'not-allowed'
|
||||
: 'pointer',
|
||||
color:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? '#A2A8B5'
|
||||
: '',
|
||||
border:
|
||||
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
|
||||
? '1px solid red' : ''
|
||||
}"
|
||||
@click="
|
||||
setType(
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
]
|
||||
)
|
||||
"
|
||||
>
|
||||
<div
|
||||
v-if="
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute !== 3
|
||||
"
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{
|
||||
background:
|
||||
cassetteStatusObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].cassetteList[0].status
|
||||
]
|
||||
}"
|
||||
/>
|
||||
{{
|
||||
z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)]
|
||||
.name
|
||||
}}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="dashboard-layout-footer">
|
||||
{{
|
||||
"第" + (index + 1) + "排(" + ((current - 1) * 4 + item) + ")"
|
||||
}}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-else class="dashboard-layout" :gutter="12">
|
||||
<el-col
|
||||
v-for="item in Math.ceil(
|
||||
(shelfList[0].rowList[0].portList.length - (current - 1) * 80) / 20
|
||||
)"
|
||||
:key="'shelfbox' + item"
|
||||
class="dashboard-layout-shelf-box"
|
||||
:span="6"
|
||||
>
|
||||
<el-row>
|
||||
<el-col
|
||||
v-for="(i, index) in shelfList"
|
||||
:key="item + 'shelf' + i.id"
|
||||
:span="12"
|
||||
class="dashboard-layout-shelf"
|
||||
>
|
||||
<el-row
|
||||
v-if="
|
||||
item <
|
||||
Math.ceil(
|
||||
(shelfList[0].rowList[0].portList.length -
|
||||
(current - 1) * 80) /
|
||||
20
|
||||
)
|
||||
"
|
||||
>
|
||||
<el-col
|
||||
v-for="z in i.rowList"
|
||||
:key="item + 'shelf' + i + 'row' + z.id"
|
||||
:span="12"
|
||||
class="dashboard-layout-row"
|
||||
>
|
||||
<div
|
||||
v-for="x in 20"
|
||||
:key="item + 'shelf' + i + 'row' + z + 'item' + x"
|
||||
class="dashboard-layout-item"
|
||||
:style="{
|
||||
background:
|
||||
portAttributeObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute
|
||||
],
|
||||
cursor:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? 'not-allowed'
|
||||
: 'pointer',
|
||||
color:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? '#A2A8B5'
|
||||
: '',
|
||||
border:
|
||||
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
|
||||
? '1px solid red' : ''
|
||||
}"
|
||||
@click="
|
||||
setType(
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
]
|
||||
)
|
||||
"
|
||||
>
|
||||
<div
|
||||
v-if="
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute !== 3
|
||||
"
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{
|
||||
background:
|
||||
cassetteStatusObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].cassetteList[0].status
|
||||
]
|
||||
}"
|
||||
/>
|
||||
{{
|
||||
z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)]
|
||||
.name
|
||||
}}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-else>
|
||||
<el-col
|
||||
v-for="z in i.rowList"
|
||||
:key="item + 'shelf' + i + 'row' + z.id"
|
||||
:span="12"
|
||||
class="dashboard-layout-row"
|
||||
>
|
||||
<div
|
||||
v-for="x in shelfList[0].rowList[0].portList.length -
|
||||
(item - 1) * 20 -
|
||||
(current - 1) * 80"
|
||||
:key="item + 'shelf' + i + 'row' + z + 'item' + x"
|
||||
class="dashboard-layout-item"
|
||||
:style="{
|
||||
background:
|
||||
portAttributeObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute
|
||||
],
|
||||
cursor:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? 'not-allowed'
|
||||
: 'pointer',
|
||||
color:
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute === 3
|
||||
? '#A2A8B5'
|
||||
: '',
|
||||
border:
|
||||
selectStorageList.some(StorageItem=>StorageItem.id===z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)].id)
|
||||
? '1px solid red' : ''
|
||||
}"
|
||||
@click="
|
||||
setType(
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
]
|
||||
)
|
||||
"
|
||||
>
|
||||
<div
|
||||
v-if="
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].attribute !== 3
|
||||
"
|
||||
class="dashboard-layout-item-cricle"
|
||||
:style="{
|
||||
background:
|
||||
cassetteStatusObj[
|
||||
z.portList[
|
||||
(current - 1) * 80 + (item - 1) * 20 + (x - 1)
|
||||
].cassetteList[0].status
|
||||
]
|
||||
}"
|
||||
/>
|
||||
{{
|
||||
z.portList[(current - 1) * 80 + (item - 1) * 20 + (x - 1)]
|
||||
.name
|
||||
}}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="dashboard-layout-footer">
|
||||
{{
|
||||
"第" + (index + 1) + "排(" + ((current - 1) * 4 + item) + ")"
|
||||
}}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<process-storage-type
|
||||
v-if="typeVisible"
|
||||
ref="typeRef"
|
||||
@refreshDataList="setStorageList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import testdata from './testdata'
|
||||
import processStorageType from './processStorageType'
|
||||
|
||||
export default {
|
||||
name: 'Dashboard',
|
||||
components: { processStorageType },
|
||||
data() {
|
||||
return testdata
|
||||
},
|
||||
created() {
|
||||
console.log(this.shelfList)
|
||||
this.totalPage = Math.ceil(
|
||||
this.shelfList[0].rowList[0].portList.length / 80
|
||||
)
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
this.selectStorageList.splice(0, this.selectStorageList.length)
|
||||
},
|
||||
setType(item) {
|
||||
if (item.attribute !== 3) {
|
||||
if (this.selectStorageList.findIndex(StorageItem => StorageItem.id === item.id) + 1) {
|
||||
this.selectStorageList.splice(this.selectStorageList.findIndex(StorageItem => StorageItem.id === item.id), 1)
|
||||
} else {
|
||||
this.typeVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.typeRef.init(item.id)
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
setStorageList(id, dataForm) {
|
||||
const obj = Object.assign({ id }, dataForm)
|
||||
this.selectStorageList.push(obj)
|
||||
},
|
||||
handleChange(v) {
|
||||
console.log(v)
|
||||
},
|
||||
submitLinkList() {
|
||||
const tipArr = this.selectStorageList.map(item => {
|
||||
return item.id
|
||||
})
|
||||
this.$confirm(`${this.$t('module.basicData.visual.TipsStorageBefore')}[${tipArr.join(',')}]?`, this.$t('module.basicData.visual.Tips'), {
|
||||
confirmButtonText: this.$t('module.basicData.visual.confirmButtonText'),
|
||||
cancelButtonText: this.$t('module.basicData.visual.cancelButtonText'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
}).catch(() => {})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dashboard-container {
|
||||
background: #f2f4f9;
|
||||
min-height: calc(100vh - 134px);
|
||||
overflow-x: scroll;
|
||||
padding: 0 16px;
|
||||
padding-top: 24px;
|
||||
font-size: 14px;
|
||||
.dashboard-main {
|
||||
width: 100%;
|
||||
min-width: 1380px;
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
min-height: calc(100vh - 186px);
|
||||
.dashboard-title {
|
||||
.dashboard-header-line {
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 16px;
|
||||
background: #0b58ff;
|
||||
border-radius: 1px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.dashboard-header-title {
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
line-height: 16px;
|
||||
}
|
||||
}
|
||||
.dashboard-legend {
|
||||
margin-top: 20px;
|
||||
.dashboard-legend-cassette {
|
||||
display: inline-block;
|
||||
margin-right: 24px;
|
||||
.dashboard-legend-cassette-cricle {
|
||||
display: inline-block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
}
|
||||
.dashboard-legend-port {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
border-radius: 4px;
|
||||
padding: 0 16px;
|
||||
margin-left: 24px;
|
||||
}
|
||||
.dashboard-legend-btn {
|
||||
margin: 0 20px;
|
||||
float: right;
|
||||
}
|
||||
.dashboard-legend-search {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.dashboard-layout {
|
||||
margin: 20px 0;
|
||||
.dashboard-layout-shelf-box {
|
||||
.dashboard-layout-footer {
|
||||
text-align: center;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.dashboard-layout-shelf {
|
||||
padding: 0 8px;
|
||||
.dashboard-layout-row {
|
||||
padding: 0 1px;
|
||||
.dashboard-layout-item {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
height: 32px;
|
||||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8);
|
||||
border-radius: 2px 4px 4px 2px;
|
||||
margin-bottom: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.dashboard-layout-item-cricle {
|
||||
display: inline-block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,94 @@
|
||||
<!--
|
||||
* @Author: zwq
|
||||
* @Date: 2020-12-29 16:37:56
|
||||
* @LastEditors: zwq
|
||||
* @LastEditTime: 2022-03-10 14:27:47
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<el-dialog
|
||||
:title="$t('module.basicData.Warehouse.LocationStorageSetting') | i18nFilter"
|
||||
:visible.sync="visible"
|
||||
>
|
||||
<el-form
|
||||
ref="dataForm"
|
||||
:model="dataForm"
|
||||
size="medium"
|
||||
:rules="dataRule"
|
||||
label-width="110px"
|
||||
label-position="left"
|
||||
>
|
||||
<el-form-item :label="$t('module.basicData.Warehouse.SelectStorageType')" prop="storageType">
|
||||
<el-radio v-model="dataForm.storageType" :label="1">Working Port</el-radio>
|
||||
<el-radio v-model="dataForm.storageType" :label="2">Buffer Port</el-radio>
|
||||
<el-radio v-model="dataForm.storageType" :label="3">Exception Port</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('module.basicData.storageBox.name')" prop="storageBoxName">
|
||||
<el-select v-model="dataForm.storageBoxName" filterable :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.storageBox.name')])" clearable>
|
||||
<el-option
|
||||
v-for="item in storageBoxArr"
|
||||
:key="item.id"
|
||||
:label="item.storageBoxName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">{{ 'btn.cancel' | i18nFilter }}</el-button>
|
||||
<el-button type="primary" @click="dataFormSubmit()">{{ 'btn.confirm' | i18nFilter }}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { storageBoxList } from '@/api/basicData/Cache/storageBox'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
storageId: '',
|
||||
dataForm: {
|
||||
storageType: 1,
|
||||
storageBoxName: ''
|
||||
},
|
||||
dataRule: {
|
||||
storageBoxName: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.storageBox.name')]),
|
||||
trigger: 'change' }
|
||||
]
|
||||
},
|
||||
storageBoxArr: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) {
|
||||
this.storageId = id
|
||||
const listQuery = {
|
||||
current: 1,
|
||||
size: 999
|
||||
}
|
||||
storageBoxList(listQuery).then(response => {
|
||||
if (response.data.records) {
|
||||
this.storageBoxArr = response.data.records
|
||||
} else {
|
||||
this.storageBoxArr.splice(0, this.list.length)
|
||||
}
|
||||
})
|
||||
this.visible = true
|
||||
},
|
||||
// 表单提交
|
||||
dataFormSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.visible = false
|
||||
this.$emit('refreshDataList', this.storageId, this.dataForm)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
2955
src/views/basicData/Warehouse/components/testdata.js
Normal file
2955
src/views/basicData/Warehouse/components/testdata.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user