Merge pull request '更新' (#7) from zwq into develop

Reviewed-on: #7
This commit is contained in:
朱文强 2022-01-17 15:19:34 +08:00
commit 8f01c92374
14 changed files with 1019 additions and 200 deletions

View File

@ -2,20 +2,47 @@
* @Author: zwq * @Author: zwq
* @Date: 2020-12-29 16:00:14 * @Date: 2020-12-29 16:00:14
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:25:25 * @LastEditTime: 2022-01-17 13:59:54
* @Description: * @Description:
*/ */
import request from '@/utils/request' import request from '@/utils/request'
export function StorageBoxInfoList(data) { // 获取存储箱使用情况 export function StorageBoxInfoList(data) { // 获取存储箱使用情况
return request({ return request({
url: '/api/wms/storage/box/circ/info/page', url: '/api/wms/storage/box/circ/info/his/page/by/code',
method: 'post', method: 'post',
data data
}) })
} }
export function StorageBoxInfoDetail(id) { // 获取工厂单条数据 export function StorageBoxInfoDetail(id) { // 获取存储箱单条数据
const data = {
'id': id
}
return request({
url: '/api/wms/storage/box/get',
method: 'post',
data
})
}
export function StorageBoxRackList(data) { // 获取存储箱上架列表
return request({
url: '/api/wms/storage/box/circ/info/page/for/bind',
method: 'post',
data
})
}
export function locationList(data) { // 获取库位列表
return request({
url: '/api/wms/location/list',
method: 'post',
data
})
}
export function StorageBoxRackDetail(id) { // 获取存储箱上架单条数据
const data = { const data = {
'id': id 'id': id
} }
@ -26,7 +53,7 @@ export function StorageBoxInfoDetail(id) { // 获取工厂单条数据
}) })
} }
export function factoryUpdate(data) { // 更新工厂单条数据 export function StorageBoxRackUpdate(data) { // 更新存储箱上架单条数据
return request({ return request({
url: '/api/wms/storage/box/circ/info/update', url: '/api/wms/storage/box/circ/info/update',
method: 'post', method: 'post',
@ -34,7 +61,7 @@ export function factoryUpdate(data) { // 更新工厂单条数据
}) })
} }
export function factoryAdd(data) { // 新增工厂单条数据 export function StorageBoxRackAdd(data) { // 新增存储箱上架单条数据
return request({ return request({
url: '/api/wms/storage/box/circ/info/add', url: '/api/wms/storage/box/circ/info/add',
method: 'post', method: 'post',
@ -42,14 +69,15 @@ export function factoryAdd(data) { // 新增工厂单条数据
}) })
} }
export function factoryCode() { // 获取工厂code export function StorageBoxRackCode(data) { // 获取存储箱上架code
return request({ return request({
url: '/api/wms/storage/box/circ/info/get-code', url: '/api/wms/storagebox/page',
method: 'post' method: 'post',
data
}) })
} }
export function factoryDelete(id) { // 删除工厂单条数据 export function StorageBoxRackDelete(id) { // 删除存储箱上架单条数据
return request({ return request({
url: '/api/wms/storage/box/circ/info/delete', url: '/api/wms/storage/box/circ/info/delete',
method: 'post', method: 'post',

View File

@ -0,0 +1,47 @@
/*
* @Author: zwq
* @Date: 2022-01-17 14:55:09
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 14:59:07
* @Description:
*/
import request from '@/utils/request'
export function ProcessInfoList(data) { // 获取工单工艺列表
return request({
url: '/api/wms/work/order/page',
method: 'post',
data
})
}
export function ProcessInfoDetail(id) { // 获取工单工艺单条数据
const data = {
'id': id
}
return request({
url: '/api/wms/work/order/get',
method: 'post',
data
})
}
export function ExecutionInfoList(data) { // 获取工单执行列表
return request({
url: '/api/wms/work/order/execute/page',
method: 'post',
data
})
}
export function ExecutionInfoDetail(id) { // 获取工单执行单条数据
const data = {
'id': id
}
return request({
url: '/api/wms/work/order/execute/get',
method: 'post',
data
})
}

View File

@ -0,0 +1,33 @@
/*
* @Author: zwq
* @Date: 2022-01-17 11:30:41
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 11:33:29
* @Description:
*/
/*
* @Date: 2020-12-29 16:49:28
* @LastEditors: gtz
* @LastEditTime: 2021-04-13 13:49:51
* @FilePath: \basic-admin\src\filters\DataDict\index.js
* @Description: 部分常量的数据字典定义
*/
import i18n from '@/lang'
const table = {
yesOrNo: {
'0': i18n.t('baseDict.yesOrNo.no'),
'1': i18n.t('baseDict.yesOrNo.yes')
},
enableState: {
'0': i18n.t('basicDataFilter.enableState.disable'),
'1': i18n.t('basicDataFilter.enableState.enable')
}
}
export default function(dictTable) {
return function(val) {
return table?.[dictTable]?.[val]
}
}

View File

@ -2,7 +2,7 @@
* @Author: gtz * @Author: gtz
* @Date: 2021-03-04 16:13:51 * @Date: 2021-03-04 16:13:51
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:34:25 * @LastEditTime: 2022-01-17 15:12:18
* @Description: file content * @Description: file content
*/ */
export default { export default {
@ -293,6 +293,16 @@ export default {
TaskLocation: 'Task Location', TaskLocation: 'Task Location',
TargetLocation: 'Target Location', TargetLocation: 'Target Location',
OrderName: 'Order Name', OrderName: 'Order Name',
OrderCode: 'Order Code',
IssueOrderTime: 'Issue Order Time',
TotalProcessName: 'Total Process Name',
Priority: 'Priority',
OrderStatus: 'Order Status',
ProcessOrNot: 'Process Or Not',
Unit: 'Unit',
RelateProcess: 'Relate Process',
PlanProcessQuantity: 'Plan Process Quantity',
SubProcessName: 'Sub Process Name',
TaskBoxNumber: 'Task Box Number', TaskBoxNumber: 'Task Box Number',
FullBoxNumber: 'Full Box Number', FullBoxNumber: 'Full Box Number',
EmptyFork: 'Empty Fork', EmptyFork: 'Empty Fork',

View File

@ -2,7 +2,7 @@
* @Author: gtz * @Author: gtz
* @Date: 2021-03-04 16:13:51 * @Date: 2021-03-04 16:13:51
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:34:19 * @LastEditTime: 2022-01-17 15:12:12
* @Description: file content * @Description: file content
*/ */
export default { export default {
@ -293,6 +293,16 @@ export default {
TaskLocation: '任务库位', TaskLocation: '任务库位',
TargetLocation: '目标库位', TargetLocation: '目标库位',
OrderName: '工单名', OrderName: '工单名',
OrderCode: '工单编码',
IssueOrderTime: '下发工单时间',
TotalProcessName: '总工艺名称',
Priority: '优先级',
OrderStatus: '工单状态',
ProcessOrNot: '是否关联工艺',
Unit: '单位',
RelateProcess: '关联工艺',
PlanProcessQuantity: '计划加工数量',
SubProcessName: '分工艺',
TaskBoxNumber: '任务箱号', TaskBoxNumber: '任务箱号',
FullBoxNumber: '空箱号', FullBoxNumber: '空箱号',
EmptyFork: '空箱货叉', EmptyFork: '空箱货叉',

View File

@ -2,51 +2,53 @@
* @Author: zwq * @Author: zwq
* @Date: 2020-12-29 15:41:11 * @Date: 2020-12-29 15:41:11
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:29:02 * @LastEditTime: 2022-01-17 14:03:24
* @Description: * @Description:
--> -->
<template> <template>
<div class="app-container"> <div class="app-container">
<head-form <el-form ref="listQuery" :model="listQuery" :inline="true" label-width="120px" @keyup.enter.native="getList()">
:placeholder-name="placeholderName" <el-form-item :label="$t('module.basicData.Warehouse.StorageBoxNumber')" prop="code">
:key-name="keyName" <el-select
:show-add="false" v-model="listQuery.code"
@getDataList="getList" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.Warehouse.StorageBoxNumber')])"
@add="addNew" clearable
/> filterable
<base-table :style="{width: '100%'}"
:page="listQuery.current" >
:limit="listQuery.size" <el-option
:table-config="tableProps" v-for="(item, index) in storageBoxList"
:table-data="list" :key="index"
:is-loading="listLoading" :label="item.code"
> :value="item.code"
<method-btn />
slot="handleBtn" </el-select>
:width="trueWidth" </el-form-item>
:method-list="tableBtn" <el-form-item>
@clickBtn="handleClick" <el-button type="primary" @click="getList()">{{ 'btn.search' | i18nFilter }}</el-button>
</el-form-item>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-config="tableProps"
:table-data="list"
:is-loading="listLoading"
/> />
</base-table> <pagination
<pagination v-show="total > 0"
v-show="total > 0" :total="total"
:total="total" :page.sync="listQuery.current"
:page.sync="listQuery.current" :limit.sync="listQuery.size"
:limit.sync="listQuery.size" @pagination="getList()"
@pagination="getList()" />
/> </el-form></div>
<Factory-add v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getList" />
</div>
</template> </template>
<script> <script>
import { StorageBoxInfoList } from '@/api/basicData/Warehouse/StorageBoxInfo' import { StorageBoxInfoList, StorageBoxRackCode } from '@/api/basicData/Warehouse/StorageBoxInfo'
import FactoryAdd from './components/StorageBoxInfoDetail.vue'
import HeadForm from '@/components/basicData/HeadForm'
import BaseTable from '@/components/BaseTable' import BaseTable from '@/components/BaseTable'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn' import warehouse from '@/filters/basicData/warehouse'
import { timeFormatter } from '@/filters'
import i18n from '@/lang' import i18n from '@/lang'
/** /**
* 表格表头配置项 TypeScript接口注释 * 表格表头配置项 TypeScript接口注释
@ -64,39 +66,34 @@ import i18n from '@/lang'
* *
*/ */
const tableBtn = [
{
type: 'see',
btnName: 'btn.see'
}
]
const tableProps = [ const tableProps = [
{ {
prop: 'code', prop: 'code',
label: i18n.t('module.basicData.Warehouse.StorageBoxNumber'), label: i18n.t('module.basicData.Warehouse.StorageBoxNumber'),
filter: timeFormatter,
align: 'center' align: 'center'
}, },
{ {
prop: 'status', prop: 'status',
label: i18n.t('module.basicData.Warehouse.BoxStatus'), label: i18n.t('module.basicData.Warehouse.BoxStatus'),
filter: warehouse('enableState'),
align: 'center' align: 'center'
}, },
{ {
prop: 'locationName', prop: 'currLocation',
label: i18n.t('module.basicData.Warehouse.CurrentLocation'), label: i18n.t('module.basicData.Warehouse.CurrentLocation'),
align: 'center' align: 'center'
}, },
{ {
prop: 'isEmpty', prop: 'isEmpty',
label: i18n.t('module.basicData.Warehouse.IsEmpty'), label: i18n.t('module.basicData.Warehouse.IsEmpty'),
filter: warehouse('yesOrNo'),
align: 'center' align: 'center'
} }
] ]
export default { export default {
name: 'StorageBoxInfo', name: 'StorageBoxInfo',
components: { Pagination, BaseTable, MethodBtn, HeadForm, FactoryAdd }, components: { Pagination, BaseTable },
filters: { filters: {
statusFilter(status) { statusFilter(status) {
const statusMap = { const statusMap = {
@ -111,31 +108,32 @@ export default {
return { return {
keyName: i18n.t('module.basicData.Warehouse.StorageBoxNumber'), keyName: i18n.t('module.basicData.Warehouse.StorageBoxNumber'),
placeholderName: this.$t('module.basicData.Warehouse.StorageBoxNumber'), placeholderName: this.$t('module.basicData.Warehouse.StorageBoxNumber'),
addOrUpdateVisible: false,
tableBtn,
trueWidth: 200, trueWidth: 200,
tableProps, tableProps,
list: [], list: [],
storageBoxList: [],
total: 0, total: 0,
listLoading: true, listLoading: true,
listQuery: { listQuery: {
current: 1, current: 1,
size: 10, size: 10,
name: '',
code: '' code: ''
} }
} }
}, },
created() { created() {
this.getList() this.getList()
const listQuery1 = {
current: 1,
size: 100
}
StorageBoxRackCode(listQuery1).then(res => {
this.storageBoxList = res.data.records
})
}, },
methods: { methods: {
handleClick(raw) { getList() {
this.addNew(raw.data.id)
},
getList(key) {
this.listLoading = true this.listLoading = true
this.listQuery.code = key
StorageBoxInfoList(this.listQuery).then(response => { StorageBoxInfoList(this.listQuery).then(response => {
if (response.data.records) { if (response.data.records) {
this.list = response.data.records this.list = response.data.records
@ -145,13 +143,6 @@ export default {
this.total = response.data.total this.total = response.data.total
this.listLoading = false this.listLoading = false
}) })
},
// /
addNew(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
} }
} }
} }

View File

@ -2,17 +2,49 @@
* @Author: zwq * @Author: zwq
* @Date: 2020-12-29 15:41:11 * @Date: 2020-12-29 15:41:11
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:34:33 * @LastEditTime: 2022-01-17 14:06:53
* @Description: * @Description:
--> -->
<template> <template>
<div class="app-container"> <div class="app-container">
<head-form <el-form ref="listQuery" :model="listQuery" :inline="true" label-width="120px" @keyup.enter.native="getList()">
:placeholder-name="placeholderName" <el-form-item :label="$t('module.basicData.Warehouse.LocationName')" prop="currLocationId">
:key-name="keyName" <el-select
@getDataList="getList" v-model="listQuery.currLocationId"
@add="addNew" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.Warehouse.LocationName')])"
/> clearable
filterable
:style="{width: '100%'}"
>
<el-option
v-for="(item, index) in LocationList"
:key="index"
:label="item.locationName"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('module.basicData.Warehouse.StorageBoxNumber')" prop="storageBoxId">
<el-select
v-model="listQuery.storageBoxId"
:placeholder="$i18nForm(['placeholder.input', $t('module.basicData.Warehouse.StorageBoxNumber')])"
clearable
filterable
:style="{width: '100%'}"
>
<el-option
v-for="(item, index) in storageBoxList"
:key="index"
:label="item.code"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList()">{{ 'btn.search' | i18nFilter }}</el-button>
<el-button type="primary" @click="addNew()">{{ 'btn.add' | i18nFilter }}</el-button>
</el-form-item>
</el-form>
<base-table <base-table
:page="listQuery.current" :page="listQuery.current"
:limit="listQuery.size" :limit="listQuery.size"
@ -39,13 +71,13 @@
</template> </template>
<script> <script>
import { StorageBoxInfoList } from '@/api/basicData/Warehouse/StorageBoxInfo' import { StorageBoxRackList, StorageBoxRackDelete, StorageBoxRackCode, locationList } from '@/api/basicData/Warehouse/StorageBoxInfo'
import FactoryAdd from './components/StorageBoxInfoDetail.vue' import FactoryAdd from './components/StorageBoxRack-add.vue'
import HeadForm from '@/components/basicData/HeadForm'
import BaseTable from '@/components/BaseTable' import BaseTable from '@/components/BaseTable'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn' import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
import { timeFormatter } from '@/filters' import { timeFormatter } from '@/filters'
import warehouse from '@/filters/basicData/warehouse'
import i18n from '@/lang' import i18n from '@/lang'
/** /**
* 表格表头配置项 TypeScript接口注释 * 表格表头配置项 TypeScript接口注释
@ -65,8 +97,12 @@ import i18n from '@/lang'
const tableBtn = [ const tableBtn = [
{ {
type: 'see', type: 'edit',
btnName: 'btn.see' btnName: 'btn.edit'
},
{
type: 'delete',
btnName: 'btn.delete'
} }
] ]
const tableProps = [ const tableProps = [
@ -79,34 +115,35 @@ const tableProps = [
{ {
prop: 'code', prop: 'code',
label: i18n.t('module.basicData.Warehouse.StorageBoxNumber'), label: i18n.t('module.basicData.Warehouse.StorageBoxNumber'),
filter: timeFormatter,
align: 'center' align: 'center'
}, },
{ {
prop: 'status', prop: 'status',
label: i18n.t('module.basicData.Warehouse.BoxStatus'), label: i18n.t('module.basicData.Warehouse.BoxStatus'),
filter: warehouse('enableState'),
align: 'center' align: 'center'
}, },
{ {
prop: 'locationName', prop: 'currLocation',
label: i18n.t('module.basicData.Warehouse.LocationName'), label: i18n.t('module.basicData.Warehouse.LocationName'),
align: 'center' align: 'center'
}, },
{ {
prop: 'locationCode', prop: 'currLocationName',
label: i18n.t('module.basicData.Warehouse.LocationCode'), label: i18n.t('module.basicData.Warehouse.LocationCode'),
align: 'center' align: 'center'
}, },
{ {
prop: 'isEmpty', prop: 'isEmpty',
label: i18n.t('module.basicData.Warehouse.IsEmptyBox'), label: i18n.t('module.basicData.Warehouse.IsEmptyBox'),
filter: warehouse('yesOrNo'),
align: 'center' align: 'center'
} }
] ]
export default { export default {
name: 'StorageBoxInfo', name: 'StorageBoxInfo',
components: { Pagination, BaseTable, MethodBtn, HeadForm, FactoryAdd }, components: { Pagination, BaseTable, MethodBtn, FactoryAdd },
filters: { filters: {
statusFilter(status) { statusFilter(status) {
const statusMap = { const statusMap = {
@ -127,26 +164,57 @@ export default {
tableProps, tableProps,
list: [], list: [],
total: 0, total: 0,
LocationList: [],
storageBoxList: [],
listLoading: true, listLoading: true,
listQuery: { listQuery: {
current: 1, current: 1,
size: 10, size: 10,
name: '', storageBoxId: '',
code: '' currLocationId: ''
} }
} }
}, },
created() { created() {
this.getList() this.getList()
const listQuery1 = {
current: 1,
size: 100
}
locationList(listQuery1).then(response => {
this.LocationList = response.data
})
StorageBoxRackCode(listQuery1).then(res => {
this.storageBoxList = res.data.records
})
}, },
methods: { methods: {
handleClick(raw) { handleClick(raw) {
this.addNew(raw.data.id) console.log(raw)
if (raw.type === 'delete') {
this.$confirm(`${this.$t('module.basicData.visual.TipsBefore')}[${raw.data.code}]?`, this.$t('module.basicData.visual.Tips'), {
confirmButtonText: this.$t('module.basicData.visual.confirmButtonText'),
cancelButtonText: this.$t('module.basicData.visual.cancelButtonText'),
type: 'warning'
}).then(() => {
StorageBoxRackDelete(raw.data.id).then(response => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500,
onClose: () => {
this.getList()
}
})
})
}).catch(() => {})
} else {
this.addNew(raw.data.id)
}
}, },
getList(key) { getList() {
this.listLoading = true this.listLoading = true
this.listQuery.code = key StorageBoxRackList(this.listQuery).then(response => {
StorageBoxInfoList(this.listQuery).then(response => {
if (response.data.records) { if (response.data.records) {
this.list = response.data.records this.list = response.data.records
} else { } else {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2020-12-29 16:37:56 * @Date: 2020-12-29 16:37:56
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2021-04-12 16:24:32 * @LastEditTime: 2022-01-17 10:19:45
* @Description: * @Description:
--> -->
<template> <template>
@ -10,7 +10,7 @@
:title="!dataForm.id ? 'btn.add' : 'btn.edit' | i18nFilter" :title="!dataForm.id ? 'btn.add' : 'btn.edit' | i18nFilter"
:visible.sync="visible" :visible.sync="visible"
> >
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="120px" @keyup.enter.native="dataFormSubmit()"> <el-form ref="dataForm" :model="dataForm" label-width="120px">
<el-form-item :label="$t('module.basicData.factory.FactoryName')" prop="name"> <el-form-item :label="$t('module.basicData.factory.FactoryName')" prop="name">
<el-input v-model="dataForm.name" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.factory.FactoryName')])" clearable /> <el-input v-model="dataForm.name" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.factory.FactoryName')])" clearable />
</el-form-item> </el-form-item>
@ -26,13 +26,12 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">{{ 'btn.cancel' | i18nFilter }}</el-button> <el-button @click="visible = false">{{ 'btn.cancel' | i18nFilter }}</el-button>
<el-button type="primary" @click="dataFormSubmit()">{{ 'btn.confirm' | i18nFilter }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { factoryDetail, factoryUpdate, factoryAdd, factoryCode } from '@/api/basicData/FactoryManagement/factory' import { StorageBoxInfoDetail } from '@/api/basicData/Warehouse/StorageBoxInfo'
export default { export default {
data() { data() {
@ -44,20 +43,6 @@ export default {
code: '', code: '',
address: '', address: '',
description: '' description: ''
},
dataRule: {
name: [
{
required: true,
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.factory.FactoryName')]),
trigger: 'blur' }
],
code: [
{
required: true,
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.factory.FactoryCode')]),
trigger: 'blur' }
]
} }
} }
}, },
@ -67,57 +52,12 @@ export default {
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['dataForm'].resetFields() this.$refs['dataForm'].resetFields()
if (this.dataForm.id) { StorageBoxInfoDetail(this.dataForm.id).then(res => {
factoryDetail(this.dataForm.id).then(res => { this.dataForm.name = res.data.name
this.dataForm.name = res.data.name this.dataForm.code = res.data.code
this.dataForm.code = res.data.code this.dataForm.address = res.data.address
this.dataForm.address = res.data.address this.dataForm.description = res.data.description
this.dataForm.description = res.data.description })
})
} else {
factoryCode().then(res => {
this.dataForm.code = res.data
})
}
})
},
//
dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
const data = {
'name': this.dataForm.name,
'code': this.dataForm.code,
'address': this.dataForm.address,
'description': this.dataForm.description,
'id': this.dataForm.id
}
if (this.dataForm.id) {
factoryUpdate(data).then(res => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
})
} else {
factoryAdd(data).then(res => {
this.$message({
message: this.$t('module.basicData.visual.success'),
type: 'success',
duration: 1500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
})
}
}
}) })
} }
} }

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2020-12-29 16:37:56 * @Date: 2020-12-29 16:37:56
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2021-04-12 16:24:32 * @LastEditTime: 2022-01-17 11:21:26
* @Description: * @Description:
--> -->
<template> <template>
@ -11,17 +11,57 @@
:visible.sync="visible" :visible.sync="visible"
> >
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="120px" @keyup.enter.native="dataFormSubmit()"> <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="120px" @keyup.enter.native="dataFormSubmit()">
<el-form-item :label="$t('module.basicData.factory.FactoryName')" prop="name"> <el-form-item :label="$t('module.basicData.Warehouse.LocationName')" prop="currLocationId">
<el-input v-model="dataForm.name" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.factory.FactoryName')])" clearable /> <el-select
v-model="dataForm.currLocationId"
:placeholder="$i18nForm(['placeholder.input', $t('module.basicData.Warehouse.LocationName')])"
clearable
filterable
:style="{width: '100%'}"
@change="selectGetLabel1"
>
<el-option
v-for="(item, index) in LocationList"
:key="index"
:label="item.locationName"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('module.basicData.factory.FactoryCode')" prop="code"> <el-form-item :label="$t('module.basicData.Warehouse.StorageBoxNumber')" prop="storageBoxId">
<el-input v-model="dataForm.code" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.factory.FactoryCode')])" clearable /> <el-select
v-model="dataForm.storageBoxId"
:placeholder="$i18nForm(['placeholder.input', $t('module.basicData.Warehouse.StorageBoxNumber')])"
clearable
filterable
:style="{width: '100%'}"
@change="selectGetLabel2"
>
<el-option
v-for="(item, index) in storageBoxList"
:key="index"
:label="item.code"
:value="item.id"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('module.basicData.factory.Address')" prop="address"> <el-form-item :label="$t('module.basicData.Warehouse.BoxStatus')" prop="status">
<el-input v-model="dataForm.address" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.factory.Address')])" clearable /> <el-switch
v-model="dataForm.status"
:active-value="1"
:inactive-value="0"
active-color="#13ce66"
inactive-color="#AAAAAA"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('module.basicData.visual.Remarks')" prop="description"> <el-form-item :label="$t('module.basicData.Warehouse.IsEmptyBox')" prop="isEmpty">
<el-input v-model="dataForm.description" :placeholder="$i18nForm(['placeholder.input', $t('module.basicData.visual.Remarks')])" clearable /> <el-switch
v-model="dataForm.isEmpty"
:active-value="1"
:inactive-value="0"
active-color="#13ce66"
inactive-color="#AAAAAA"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -32,7 +72,7 @@
</template> </template>
<script> <script>
import { factoryDetail, factoryUpdate, factoryAdd, factoryCode } from '@/api/basicData/FactoryManagement/factory' import { StorageBoxRackDetail, StorageBoxRackUpdate, StorageBoxRackAdd, StorageBoxRackCode, locationList } from '@/api/basicData/Warehouse/StorageBoxInfo'
export default { export default {
data() { data() {
@ -40,22 +80,26 @@ export default {
visible: false, visible: false,
dataForm: { dataForm: {
id: 0, id: 0,
name: '',
code: '', code: '',
address: '', locationName: '',
description: '' currLocationId: '',
storageBoxId: '',
status: '',
isEmpty: ''
}, },
LocationList: [],
storageBoxList: [],
dataRule: { dataRule: {
name: [ currLocationId: [
{ {
required: true, required: true,
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.factory.FactoryName')]), message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.Warehouse.LocationName')]),
trigger: 'blur' } trigger: 'blur' }
], ],
code: [ storageBoxId: [
{ {
required: true, required: true,
message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.factory.FactoryCode')]), message: this.$i18nForm(['placeholder.input', this.$t('module.basicData.Warehouse.StorageBoxNumber')]),
trigger: 'blur' } trigger: 'blur' }
] ]
} }
@ -65,35 +109,46 @@ export default {
init(id) { init(id) {
this.dataForm.id = id || '' this.dataForm.id = id || ''
this.visible = true this.visible = true
const listQuery = {
current: 1,
size: 100
}
locationList(listQuery).then(response => {
this.LocationList = response.data
})
StorageBoxRackCode(listQuery).then(res => {
this.storageBoxList = res.data.records
})
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['dataForm'].resetFields() this.$refs['dataForm'].resetFields()
if (this.dataForm.id) { if (this.dataForm.id) {
factoryDetail(this.dataForm.id).then(res => { StorageBoxRackDetail(this.dataForm.id).then(res => {
this.dataForm.name = res.data.name this.dataForm = res.data
this.dataForm.code = res.data.code
this.dataForm.address = res.data.address
this.dataForm.description = res.data.description
})
} else {
factoryCode().then(res => {
this.dataForm.code = res.data
}) })
} }
}) })
}, },
selectGetLabel1(vId) {
let obj = {}
obj = this.LocationList.find((item) => {
return item.id === vId
})
this.dataForm.locationName = obj.locationName
},
selectGetLabel2(vId) {
let obj = {}
obj = this.storageBoxList.find((item) => {
return item.id === vId
})
this.dataForm.code = obj.code
},
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
const data = { const data = this.dataForm
'name': this.dataForm.name,
'code': this.dataForm.code,
'address': this.dataForm.address,
'description': this.dataForm.description,
'id': this.dataForm.id
}
if (this.dataForm.id) { if (this.dataForm.id) {
factoryUpdate(data).then(res => { StorageBoxRackUpdate(data).then(res => {
this.$message({ this.$message({
message: this.$t('module.basicData.visual.success'), message: this.$t('module.basicData.visual.success'),
type: 'success', type: 'success',
@ -105,7 +160,7 @@ export default {
}) })
}) })
} else { } else {
factoryAdd(data).then(res => { StorageBoxRackAdd(data).then(res => {
this.$message({ this.$message({
message: this.$t('module.basicData.visual.success'), message: this.$t('module.basicData.visual.success'),
type: 'success', type: 'success',

View File

@ -1,7 +1,174 @@
<!-- <!--
* @Author: zwq * @Author: zwq
* @Date: 2022-01-14 16:40:26 * @Date: 2020-12-29 15:41:11
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:40:27 * @LastEditTime: 2022-01-17 15:00:35
* @Description: * @Description:
--> -->
<template>
<div class="app-container">
<head-form
:placeholder-name="placeholderName"
:key-name="keyName"
:show-add="false"
@getDataList="getList"
@add="addNew"
/>
<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()"
/>
<Factory-add v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getList" />
</div>
</template>
<script>
import { ExecutionInfoList } from '@/api/orderManage/00A'
import FactoryAdd from './components/ExecutionInfoDetail.vue'
import HeadForm from '@/components/basicData/HeadForm'
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: 'btn.see'
}
]
const tableProps = [
{
prop: 'name',
label: i18n.t('module.basicData.Warehouse.OrderName'),
align: 'center'
},
{
prop: 'createTime',
label: i18n.t('module.basicData.Warehouse.IssueOrderTime'),
filter: timeFormatter,
align: 'center'
},
{
prop: 'craftName',
label: i18n.t('module.basicData.Warehouse.TotalProcessName'),
align: 'center'
},
{
prop: 'priority',
label: i18n.t('module.basicData.Warehouse.Priority'),
align: 'center'
},
{
prop: 'status',
label: i18n.t('module.basicData.Warehouse.OrderStatus'),
align: 'center'
}
]
export default {
name: 'ExecutionInfo',
components: { Pagination, BaseTable, MethodBtn, HeadForm, FactoryAdd },
filters: {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'info',
deleted: 'danger'
}
return statusMap[status]
}
},
data() {
return {
keyName: i18n.t('module.basicData.Warehouse.OrderName'),
placeholderName: this.$t('module.basicData.Warehouse.OrderName'),
addOrUpdateVisible: false,
tableBtn,
trueWidth: 200,
tableProps,
list: [],
total: 0,
listLoading: true,
listQuery: {
current: 1,
size: 10,
name: '',
code: ''
}
}
},
created() {
this.getList()
},
methods: {
handleClick(raw) {
this.addNew(raw.data.id)
},
getList(key) {
this.listLoading = true
this.listQuery.code = key
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.listLoading = false
})
},
// /
addNew(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
}
}
}
</script>
<style scoped>
.edit-input {
padding-right: 100px;
}
.cancel-btn {
position: absolute;
right: 15px;
top: 10px;
}
</style>

View File

@ -1,7 +1,181 @@
<!-- <!--
* @Author: zwq * @Author: zwq
* @Date: 2022-01-14 16:37:39 * @Date: 2020-12-29 15:41:11
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2022-01-14 16:37:39 * @LastEditTime: 2022-01-17 15:12:20
* @Description: * @Description:
--> -->
<template>
<div class="app-container">
<head-form
:placeholder-name="placeholderName"
:key-name="keyName"
:show-add="false"
@getDataList="getList"
@add="addNew"
/>
<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()"
/>
<Factory-add v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getList" />
</div>
</template>
<script>
import { ProcessInfoList } from '@/api/orderManage/00A'
import FactoryAdd from './components/ProcessInfoDetail.vue'
import HeadForm from '@/components/basicData/HeadForm'
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 processLinkBtn from './components/processLinkBtn'
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: 'btn.see'
}
]
const tableProps = [
{
prop: 'name',
label: i18n.t('module.basicData.Warehouse.OrderName'),
align: 'center'
},
{
prop: 'createTime',
label: i18n.t('module.basicData.Warehouse.IssueOrderTime'),
filter: timeFormatter,
align: 'center'
},
{
prop: 'craftName',
label: i18n.t('module.basicData.Warehouse.TotalProcessName'),
align: 'center'
},
{
prop: 'priority',
label: i18n.t('module.basicData.Warehouse.Priority'),
align: 'center'
},
{
prop: 'status',
label: i18n.t('module.basicData.Warehouse.OrderStatus'),
align: 'center'
},
{
prop: 'attribute',
label: i18n.t('module.basicData.Warehouse.RelateProcess'),
subcomponent: processLinkBtn,
align: 'center'
}
]
export default {
name: 'ProcessInfo',
components: { Pagination, BaseTable, MethodBtn, HeadForm, FactoryAdd },
filters: {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'info',
deleted: 'danger'
}
return statusMap[status]
}
},
data() {
return {
keyName: i18n.t('module.basicData.Warehouse.OrderName'),
placeholderName: this.$t('module.basicData.Warehouse.OrderName'),
addOrUpdateVisible: false,
tableBtn,
trueWidth: 200,
tableProps,
list: [],
total: 0,
listLoading: true,
listQuery: {
current: 1,
size: 10,
name: '',
code: ''
}
}
},
created() {
this.getList()
},
methods: {
handleClick(raw) {
this.addNew(raw.data.id)
},
getList(key) {
this.listLoading = true
this.listQuery.code = key
ProcessInfoList(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.listLoading = false
})
},
// /
addNew(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
}
}
}
</script>
<style scoped>
.edit-input {
padding-right: 100px;
}
.cancel-btn {
position: absolute;
right: 15px;
top: 10px;
}
</style>

View File

@ -0,0 +1,116 @@
<!--
* @Author: zwq
* @Date: 2020-12-29 16:37:56
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 15:04:42
* @Description:
-->
<template>
<el-dialog
:title="'btn.see' | i18nFilter"
:visible.sync="visible"
>
<el-row :gutter="10">
<el-form
ref="dataForm"
:model="dataForm"
:rules="rules"
size="medium"
label-width="110px"
label-position="left"
>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderName')" prop="name">
<el-input v-model="dataForm.name" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderName')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.IssueOrderTime')" prop="createTime">
<el-input v-model="dataForm.createTime" :placeholder="$i18nForm([$t('module.basicData.Warehouse.IssueOrderTime')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.PlanProcessQuantity')" prop="planQuantity">
<el-input v-model="dataForm.planQuantity" :placeholder="$i18nForm([$t('module.basicData.Warehouse.PlanProcessQuantity')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderCode')" prop="taskCode">
<el-input v-model="dataForm.taskCode" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderCode')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderStatus')" prop="taskType">
<el-input v-model="dataForm.taskType" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderStatus')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.TotalProcessName')" prop="craftName">
<el-input v-model="dataForm.craftName" :placeholder="$i18nForm([$t('module.basicData.Warehouse.TotalProcessName')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.SubProcessName')" prop="subProccessName">
<el-input
v-model="dataForm.subProccessName"
:placeholder="$i18nForm([$t('module.basicData.Warehouse.SubProcessName')])"
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>
</span>
</el-dialog>
</template>
<script>
import { ExecutionInfoDetail } from '@/api/orderManage/00A'
export default {
data() {
return {
visible: false,
dataForm: {
id: 0,
name: undefined,
createTime: undefined,
taskCode: undefined,
taskType: undefined,
craftName: undefined,
planQuantity: undefined,
subProccessName: undefined
}
}
},
methods: {
init(id) {
this.dataForm.id = id || ''
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
ExecutionInfoDetail(this.dataForm.id).then(res => {
this.dataForm = res.data
})
}
})
}
}
}
</script>

View File

@ -0,0 +1,116 @@
<!--
* @Author: zwq
* @Date: 2020-12-29 16:37:56
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 15:04:50
* @Description:
-->
<template>
<el-dialog
:title="'btn.see' | i18nFilter"
:visible.sync="visible"
>
<el-row :gutter="10">
<el-form
ref="dataForm"
:model="dataForm"
:rules="rules"
size="medium"
label-width="110px"
label-position="left"
>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderName')" prop="name">
<el-input v-model="dataForm.name" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderName')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.IssueOrderTime')" prop="createTime">
<el-input v-model="dataForm.createTime" :placeholder="$i18nForm([$t('module.basicData.Warehouse.IssueOrderTime')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.PlanProcessQuantity')" prop="planQuantity">
<el-input v-model="dataForm.planQuantity" :placeholder="$i18nForm([$t('module.basicData.Warehouse.PlanProcessQuantity')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderCode')" prop="taskCode">
<el-input v-model="dataForm.taskCode" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderCode')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.OrderStatus')" prop="taskType">
<el-input v-model="dataForm.taskType" :placeholder="$i18nForm([$t('module.basicData.Warehouse.OrderStatus')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.TotalProcessName')" prop="craftName">
<el-input v-model="dataForm.craftName" :placeholder="$i18nForm([$t('module.basicData.Warehouse.TotalProcessName')])" readonly :style="{width: '100%'}" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('module.basicData.Warehouse.SubProcessName')" prop="subProccessName">
<el-input
v-model="dataForm.subProccessName"
:placeholder="$i18nForm([$t('module.basicData.Warehouse.SubProcessName')])"
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>
</span>
</el-dialog>
</template>
<script>
import { ProcessInfoDetail } from '@/api/orderManage/00A'
export default {
data() {
return {
visible: false,
dataForm: {
id: 0,
name: undefined,
createTime: undefined,
taskCode: undefined,
taskType: undefined,
craftName: undefined,
planQuantity: undefined,
subProccessName: undefined
}
}
},
methods: {
init(id) {
this.dataForm.id = id || ''
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
ProcessInfoDetail(this.dataForm.id).then(res => {
this.dataForm = res.data
})
}
})
}
}
}
</script>

View File

@ -0,0 +1,64 @@
<!--
* @Date: 2021-01-07 20:09:37
* @LastEditors: zwq
* @LastEditTime: 2022-01-17 15:16:29
* @FilePath: \basic-admin\src\components\BaseTable\subcomponents\CheckDetail.vue
* @Description:
-->
<template>
<span>
<el-popover
v-model="visible"
placement="top"
width="160"
>
<div>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="visible = false">取消</el-button>
<el-button type="primary" size="mini" @click="emitClick">确定</el-button>
</div>
<el-button slot="reference" type="text">{{ $t('module.basicData.Warehouse.RelateProcess') }}</el-button>
</el-popover>
</span>
</template>
<script>
export default {
props: {
injectData: {
type: Object,
default: () => ({})
}
},
data() {
return {
visible: false,
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}
],
value: ''
}
},
methods: {
emitClick() {
console.log(this.injectData)
console.log(this.value)
this.visible = false
}
}
}
</script>