Files
hl_one/mes/qd/src/views/wms/sch/point/index.vue

658 lines
22 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="生产区域">
<el-select
v-model="query.product_area"
clearable
filterable
size="mini"
placeholder="区域类型"
class="filter-item"
@change="crud.toQuery()"
>
<el-option
v-for="item in dict.product_area"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="模糊搜索">
<el-input
v-model="query.name"
clearable
size="mini"
placeholder="编码名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="区域类型">
<el-select
v-model="query.region_code"
clearable
filterable
size="mini"
placeholder="区域类型"
class="filter-item"
@change="getPointStatusAndTypeList(query.region_code, 1)"
>
<el-option
v-for="item in regionList"
:label="item.region_name"
:value="item.region_code"
/>
</el-select>
</el-form-item>
<el-form-item label="点位类型">
<el-select
v-model="query.point_type"
clearable
size="mini"
placeholder="点位类型"
class="filter-item"
@change="hand"
>
<el-option
v-for="item in pointTypesList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="点位状态">
<el-select
v-model="query.point_status"
clearable
filterable
size="mini"
placeholder="点位状态"
class="filter-item"
@change="hand"
>
<el-option
v-for="item in pointStatusList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="(query.region_id=='1557539288307077120' || query.region_id=='1582909373552922624')"
label="块"
>
<el-input
v-model="query.block_num"
clearable
size="mini"
placeholder="块"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item
v-if="(query.region_id=='1557539288307077120' || query.region_id=='1582909373552922624' || query.region_id=='1557538851726168064')"
label="排"
>
<el-input
v-model="query.row_num"
clearable
size="mini"
placeholder="排"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item
v-if="(query.region_id=='1557539288307077120' || query.region_id=='1582909373552922624' || query.region_id=='1557538851726168064')"
label="列"
>
<el-input
v-model="query.col_num"
clearable
size="mini"
placeholder="列"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item
v-if="(query.region_id=='1557539288307077120' || query.region_id=='1582909373552922624' || query.region_id=='1557538851726168064')"
label="层"
>
<el-input
v-model="query.layer_num"
clearable
size="mini"
placeholder="层"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="是否锁定">
<el-switch
v-model="query.lock_type"
active-value="1"
inactive-value="0"
active-color="#409EFF"
inactive-color="#C0CCDA"
@change="hand"
/>
</el-form-item>
<el-form-item label="是否启用">
<el-switch
v-model="query.is_used"
active-value="0"
inactive-value="1"
active-color="#C0CCDA"
inactive-color="#409EFF"
@change="hand"
/>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
v-if="crud.query.is_used == 0"
slot="right"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-circle-check"
:disabled="crud.selections.length === 0"
@click="changeUsed(crud.selections, 1)"
>
启用
</el-button>
<el-button
v-if="crud.query.is_used == 1"
slot="right"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-circle-close"
:disabled="crud.selections.length === 0"
@click="changeUsed(crud.selections, 0)"
>
禁用
</el-button>
<el-button
v-if="crud.query.lock_type == 0"
slot="right"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-circle-check"
:disabled="crud.selections.length === 0"
@click="changeLock(crud.selections, 1)"
>
锁定
</el-button>
<el-button
v-if="crud.query.lock_type == 1"
slot="right"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-circle-close"
:disabled="crud.selections.length === 0"
@click="changeLock(crud.selections, 0)"
>
解锁
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="540px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px">
<el-form-item label="生产区域" prop="product_area">
<el-select
v-model="form.product_area"
placeholder=""
style="width: 370px"
>
<el-option
v-for="item in dict.product_area"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="点位标识" prop="point_id">
<el-input v-model="form.point_id" style="width: 370px;" />
</el-form-item>
<el-form-item label="所属区域" prop="region_code">
<el-select
v-model="form.region_code"
placeholder="请选择"
style="width: 370px;"
@change="getPointStatusAndTypeList(form.region_code, 2)"
>
<el-option
v-for="item in regionList"
:label="item.region_name"
:value="item.region_code"
/>
</el-select>
</el-form-item>
<el-form-item label="上一区域" prop="pre_region_code">
<el-select
v-model="form.pre_region_code"
placeholder="请选择"
style="width: 370px;"
>
<el-option
v-for="item in regionList"
:label="item.region_name"
:value="item.region_code"
/>
</el-select>
</el-form-item>
<el-form-item label="下一区域" prop="next_region_code">
<el-select
v-model="form.next_region_code"
placeholder="请选择"
style="width: 370px;"
>
<el-option
v-for="item in regionList"
:label="item.region_name"
:value="item.region_code"
/>
</el-select>
</el-form-item>
<el-form-item label="点位编码" prop="point_code">
<el-input v-model="form.point_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="点位名称" prop="point_name">
<el-input v-model="form.point_name" style="width: 370px;" />
</el-form-item>
<el-form-item v-show="pointStatusDialogList.length > 0" label="点位状态" prop="point_status">
<el-select
v-model="form.point_status"
size="mini"
placeholder="点位状态"
class="filter-item"
style="width: 370px;"
clearable
>
<el-option
v-for="item in pointStatusDialogList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="绑定设备" prop="device_code">
<el-select
v-model="form.device_code"
clearable
filterable
placeholder="请选择"
style="width: 370px;"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
<el-form-item label="锁定类型" prop="lock_type">
<el-select
v-model="form.lock_type"
size="mini"
placeholder="锁定类型"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.d_lock_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-show="pointTypesDialogList.length > 0" label="点位类型" prop="device_point_type">
<el-select
v-model="form.point_type"
size="mini"
placeholder="设备点位类型"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in pointTypesDialogList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.point_status !== '1'" label="载具编码" prop="vehicle_code">
<el-input v-model="form.vehicle_code" clearable style="width: 370px;" />
</el-form-item>
<!-- <el-form-item v-if="form.point_status === '3'" label="库存数" prop="ivt_qty">-->
<!-- <el-input-number :controls="false" class="clear-number-input" v-model="form.ivt_qty" type="number" :min="1" :precision="3" :max="99999" label="库存数" size="mini" />-->
<!-- </el-form-item>-->
<el-form-item v-if="form.point_status === '2'" label="物料来源">
<el-radio-group v-model="choose" size="mini">
<el-radio-button label="物料" />
<el-radio-button label="工单" />
</el-radio-group>
</el-form-item>
<el-form-item v-if="false" label="物料名称" prop="vehicle_code">
<el-input v-model="form.material_id" suffix-icon="el-icon-date" clearable style="width: 370px;" @focus="getMaterial" />
</el-form-item>
<el-form-item v-if="form.point_status === '2'" label="物料名称" prop="vehicle_code">
<el-input v-model="form.material_name" clearable style="width: 370px;" @focus="getMaterial" />
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" style="width: 370px;" rows="2" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</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-column type="selection" width="55" />
<el-table-column prop="point_code" label="点位编码" sortable width="120" show-overflow-tooltip>
<template slot-scope="scope">
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.point_code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="point_name" label="点位名称" width="150" sortable show-overflow-tooltip />
<el-table-column prop="region_name" label="区域名称" min-width="120" show-overflow-tooltip />
<el-table-column prop="pre_region_name" label="上一区域" min-width="120" show-overflow-tooltip />
<el-table-column prop="next_region_name" label="下一区域" min-width="120" show-overflow-tooltip />
<el-table-column prop="material_name" label="物料名称" min-width="120" show-overflow-tooltip />
<el-table-column prop="point_type_name" label="点位类型" />
<el-table-column prop="point_status_name" label="点位状态" />
<el-table-column prop="lock_type_name" label="锁定类型" />
<el-table-column prop="vehicle_type" label="载具类型" min-width="120">
<template slot-scope="scope">
{{ dict.label.storagevehicle_type[scope.row.vehicle_type] }}
</template>
</el-table-column>
<el-table-column prop="vehicle_code" label="载具编码" min-width="120" />
<el-table-column prop="vehicle_qty" label="载具数量" />
<el-table-column prop="remark" label="备注" min-width="100" show-overflow-tooltip />
<el-table-column prop="is_used" label="是否启用">
<template slot-scope="scope">
{{ scope.row.is_used == '1' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column prop="update_name" label="修改人" />
<el-table-column prop="update_time" label="修改时间" width="150" />
<el-table-column
v-permission="[]"
label="操作"
fixed="right"
width="120px"
align="center"
>
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
<MaterialDialog :dialog-show.sync="materialDialog" @tableChanged3="tableChanged" />
<WorkOrderDialog :dialog-show.sync="workOrderDialog" @tableChanged4="tableChanged" />
<ViewDialog ref="viewDialog" />
</div>
</template>
<script>
import crudDevice from '@/api/wms/pdm/device'
import crudRegion from '@/api/wms/sch/region'
import crudPoint, { changeActive } from '@/api/wms/sch/point'
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 ViewDialog from '@/views/wms/sch/point/ViewDialog'
import MaterialDialog from '@/views/wms/sch/point/MaterialDialog'
import WorkOrderDialog from '@/views/wms/sch/point/WorkOrderDialog'
const defaultForm = {
point_id: null,
point_code: null,
point_name: null,
product_area: 'A1',
region_code: null,
pre_region_code: null,
next_region_code: null,
point_type: null,
point_status: null,
lock_type: '0',
material_id: null,
material_code: null,
device_code: null,
vehicle_max_qty: null,
vehicle_type: null,
vehicle_code: null,
vehicle_qty: null,
block_num: null,
row_num: null,
col_num: null,
layer_num: null,
in_order_seq: null,
out_order_seq: null,
in_empty_seq: null,
out_empty_seq: null,
point_group_code: null,
task_id: null,
point_location: null,
remark: null,
source_id: null,
is_used: null,
is_delete: null,
create_id: null,
create_name: null,
create_time: null,
update_id: null,
update_name: null,
update_time: null
}
export default {
name: 'Point',
dicts: ['storagevehicle_type', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'point_location', 'product_area'],
components: { WorkOrderDialog, MaterialDialog, pagination, crudOperation, rrOperation, udOperation, ViewDialog },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '点位',
url: 'api/point',
idField: 'point_id',
optShow: {
add: true,
edit: true,
del: true,
download: false,
reset: true
},
crudMethod: { ...crudPoint },
query: {
product_area: 'A1'
}
})
},
data() {
return {
syncLoading: false,
materialDialog: false,
workOrderDialog: false,
choose: '物料',
invtypelist: [],
pointStatusList: [],
pointStatusDialogList: [],
pointTypesList: [],
pointTypesDialogList: [],
options: [],
regionList: [],
deviceList: [],
permission: {},
rules: {
point_code: [
{ required: true, message: '点位编码不能为空', trigger: 'blur' }
],
point_name: [
{ required: true, message: '点位名称不能为空', trigger: 'blur' }
],
point_type: [
{ required: true, message: '点位类型不能为空', trigger: 'blur' }
],
region_code: [
{ required: true, message: '区域类型不能为空', trigger: 'blur' }
],
lock_type: [
{ required: true, message: '锁定类型不能为空', trigger: 'blur' }
]
}
}
},
created() {
crudPoint.getRegion().then(res => {
this.regionList = res
})
crudDevice.getDeviceList().then(res => {
this.deviceList = res
})
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
[CRUD.HOOK.afterToCU]() {
if (this.form.region_code) {
this.getPointStatusAndTypeList(this.form.region_code, 2)
}
},
hand() {
this.crud.toQuery()
},
format_is_used(is_used) {
return is_used === '1'
},
changeEnabled(data, val) {
let msg = '此操作将停用点位,是否继续!'
if (val !== '1') {
msg = '此操作将启用点位,是否继续!'
}
this.$confirm(msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
changeActive(data).then(res => {
this.crud.toQuery()
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
data.is_used = !data.is_used
})
}).catch(() => {
})
},
getPointStatusAndTypeList(code, flag) { // 获取点位状态和类型
if (code) {
this.getPointStatusList(code, flag)
this.getPointTypeList(code, flag)
}
if (flag === 1) {
this.crud.toQuery()
}
},
getPointStatusList(code, flag) {
crudRegion.getPointStatusSelectByCode(code).then(res => {
if (flag === 1) {
this.pointStatusList = res
} else {
this.pointStatusDialogList = res
}
})
},
getPointTypeList(code, flag) {
crudRegion.getPointTypeSelectByCode(code).then(res => {
if (flag === 1) {
this.pointTypesList = res
} else {
this.pointTypesDialogList = res
}
})
},
changeUsed(data, flag) { // 更改启用状态
const param = {}
param.data = data
param.used = flag
crudPoint.changeUsed(param).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
},
changeLock(data, flag) { // 更改锁定状态
const param = {}
param.data = data
param.lock_type = flag
crudPoint.changeLock(param).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
},
toView(row) {
debugger
if (row) {
this.$refs.viewDialog.setParentData(row)
}
},
getMaterial() {
if (this.choose == '物料') {
this.materialDialog = true
} else {
this.workOrderDialog = true
}
},
tableChanged(row) {
this.form.material_name = row.material_name
this.form.material_id = row.material_id
}
}
}
</script>
<style scoped>
</style>