<template> <div class="app-container"> <!-- 搜索工作栏 --> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item :label="$t('储位代码')" prop="code"> <el-input v-model="queryParams.code" :placeholder="$t('请输入储位代码')" clearable @keyup.enter.native="handleQuery"/> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> </el-form-item> </el-form> <!-- 操作工具栏 --> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:warehouse-area-position:create']">{{$t('新增储位')}}</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!-- 列表 --> <el-table v-loading="loading" :data="list" row-key="id" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column :label="$t('储位代码')" align="center" prop="code" /> <el-table-column :label="$t('仓库')" align="center" prop="warehouseId"> <template slot-scope="scope"> <span>{{ warehouseName(scope.row.warehouseId) }}</span> </template> </el-table-column> <el-table-column :label="$t('库域')" align="center" prop="domainName" /> <el-table-column :label="$t('库区')" align="center" prop="areaName" /> <el-table-column :label="$t('货架')" align="center" prop="isShelf"> <template slot-scope="scope"> <span>{{ scope.row.isShelf == 1 ? $t('是') : $t('否') }}</span> </template> </el-table-column> <el-table-column :label="$t('状态')" align="center" prop="status"> <template slot-scope="scope"> <span>{{ scope.row.status == CommonStatusEnum.ENABLE ? $t('是') : $t('否') }}</span> </template> </el-table-column> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:warehouse-area-position:update']">{{$t('修改')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:warehouse-area-position:delete']">{{$t('删除')}}</el-button> <el-button size="mini" type="text" @click="handleCreate(scope.row)" v-if="scope.row.pid==0" v-hasPermi="['ecw:warehouse-area:create']">{{$t('添加储位')}}</el-button> </template> </el-table-column> </el-table> <!-- 分页组件 --> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows" @pagination="getList"/> <!-- 对话框(添加 / 修改) --> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item :label="$t('上级货架')" prop="parentName" v-if="parentDo"> <span>{{parentDo.code}}</span> </el-form-item> <el-form-item :label="$t('储位代码')" prop="code"> <el-input v-model="form.code" :placeholder="$t('请输储位代码')" /> </el-form-item> <el-form-item :label="$t('仓库')" prop="warehouseId"> <el-select v-model="form.warehouseId" clearable @change="changeWarehouse" :disabled="parentDo != null || warehouseId != null"> <el-option v-for="warehouse in warehouseList" :key="warehouse.id" :label="$l(warehouse, 'title')" :value="warehouse.id" /> </el-select> </el-form-item> <el-form-item :label="$t('库域')" prop="domainId"> <el-select v-model="form.domainId" clearable @change="changeDomain" :disabled="parentDo != null || domainId != null"> <el-option v-for="domain in domainList" :key="domain.id" :label="domain.name" :value="domain.id" /> </el-select> </el-form-item> <el-form-item :label="$t('库区')" prop="areaId" > <el-select v-model="form.areaId" clearable @change="changeArea" :disabled="parentDo != null || areaId != null"> <el-option v-for="area in areaList" :key="area.id" :label="area.name" :value="area.id" /> </el-select> </el-form-item> <el-form-item :label="$t('货架')" prop="isShelf"> <el-radio v-model.number="form.isShelf" :label="1">{{$t('是')}}</el-radio> <el-radio v-model.number="form.isShelf" :label="0">{{$t('否')}}</el-radio> </el-form-item> <el-form-item :label="$t('显示')" prop="status"> <el-radio v-model.number="form.status" :label="0">{{$t('是')}}</el-radio> <el-radio v-model.number="form.status" :label="1">{{$t('否')}}</el-radio> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button> <el-button @click="cancel">{{$t('取消')}}</el-button> </div> </el-dialog> </div> </template> <script> import { createWarehouseAreaPosition, updateWarehouseAreaPosition, deleteWarehouseAreaPosition, getWarehouseAreaPosition, getWarehouseAreaPositionPage, exportWarehouseAreaPositionExcel } from "@/api/ecw/warehouseAreaPosition"; import { getWarehouseList } from "@/api/ecw/warehouse" import { getWarehouseAreaList } from "@/api/ecw/warehouseArea" import { getDictDatas, DICT_TYPE } from '@/utils/dict' import { CommonStatusEnum } from '@/utils/constants' import d from "highlight.js/lib/languages/d"; export default { name: "WarehouseAreaPosition", components: { }, data() { return { //仓库列表 warehouseList: [], CommonStatusEnum: CommonStatusEnum, statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS), //所有库域列表 allDomainList:[], //库域列表 domainList:[], //库区列表 areaList:[], parentDo: null, // 遮罩层 loading: true, // 导出遮罩层 exportLoading: false, // 显示搜索条件 showSearch: true, // 总条数 total: 0, //储位列表 list: [], // 弹出层标题 title: "", // 是否显示弹出层 open: false, dateRangeCreateTime: [], domainId: null, areaId: null, warehouseId: null, // 查询参数 queryParams: { page: 1, rows: 10, domainId: null, domainName: null, areaId: null, areaName: null, warehouseId: null, code: null, pid: null, isShelf: null, status: null, }, // 表单参数 form: { warehouseId: null, domainId: null, areaId: null }, // 表单校验 rules: { code: [{ required: true, message: this.$t("储位代码不能为空"), trigger: "blur" }], warehouseId: [{ required: true, message: this.$t("仓库不能为空"), trigger: "blur" }], domainId: [{ required: true, message: this.$t("库域不能为空"), trigger: "blur" }], areaId: [{ required: true, message: this.$t("库区不能为空"), trigger: "blur" }], isShelf: [{ required: true, message: this.$t("货架不能为空"), trigger: "blur" }], status: [{ required: true, message: this.$t("显示不能为空"), trigger: "blur" }] } }; }, computed: { warehouseName() { return warehouseId => { for(let index in this.warehouseList) { let warehouseItem = this.warehouseList[index]; if(warehouseItem.id == warehouseId) { return warehouseItem.titleZh; } } } }, statusName() { return value => { for(let index in this.statusDictDatas) { let dictItem = this.statusDictDatas[index]; if(dictItem.value == value) { return dictItem.value == CommonStatusEnum.ENABLE + '' ? this.$t('显示') : this.$t('不显示'); } } } } }, watch: { 'form.warehouseId'(newV, oldV) { if(oldV && oldV != newV) { this.form.domainId = null; this.form.domainName = null; this.form.areaId = null; this.form.areaName = null; } }, 'form.domainId'(newV, oldV) { if(oldV && oldV != newV) { this.form.areaId = null; this.form.areaName = null; } } }, created() { let warehouseId = this.$route.query.warehouseId; console.log(this.$route.query); if(warehouseId) { warehouseId = parseInt(warehouseId) this.warehouseId = warehouseId; this.queryParams.warehouseId = warehouseId; // this.form.warehouseId = warehouseId; this.$set(this.form, 'warehouseId', warehouseId); } let domainId = this.$route.query.domainId; if(domainId) { domainId = parseInt(domainId) this.domainId = domainId; this.queryParams.domainId = domainId; // this.form.domainId = domainId; this.$set(this.form, 'domainId', domainId); } let areaId = this.$route.query.areaId; if(areaId) { areaId = parseInt(areaId) this.areaId = areaId; this.queryParams.areaId = areaId; // this.form.areaId = areaId; this.$set(this.form, 'areaId', areaId); } this.requestWarehouseList(); this.requestWarehouseAreaList(); this.getList(); }, methods: { requestWarehouseAreaList() { getWarehouseAreaList({}).then(response => { this.allDomainList = response.data; }) }, changeWarehouse(warehouseId) { let dataList = []; for(let index in this.allDomainList) { let item = this.allDomainList[index]; if(item.warehouseId == warehouseId) { dataList.push(item); } } this.domainList = dataList; }, changeDomain(domainId) { for(let index in this.domainList) { let domain = this.domainList[index]; if(domain.id == domainId) { this.form.domainName = domain.name; this.areaList = domain.children; return; } } }, changeArea(areaId) { for(let index in this.areaList) { let area = this.areaList[index]; if(area.id == areaId) { this.form.areaName = area.name; return; } } }, /**查询仓库 */ requestWarehouseList() { getWarehouseList({}).then(response => { this.warehouseList = response.data; if(this.form.warehouseId) { this.changeWarehouse(this.form.warehouseId); } }) }, /** 查询列表 */ getList() { this.loading = true; // 处理查询参数 let params = {...this.queryParams}; this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // 执行查询 getWarehouseAreaPositionPage(params).then(response => { this.list = response.data.list; this.total = response.data.total; this.loading = false; }); }, /** 取消按钮 */ cancel() { this.open = false; this.reset(); }, /** 表单重置 */ reset() { this.form = { id: undefined, domainId: undefined, domainName: undefined, areaId: undefined, areaName: undefined, warehouseId: undefined, code: undefined, pid: undefined, isShelf: undefined, status: undefined, }; this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.page = 1; this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.dateRangeCreateTime = []; this.resetForm("queryForm"); this.handleQuery(); }, /** 新增按钮操作 */ handleAdd() { this.reset(); this.open = true; this.parentDo = null; this.form.status = 0; this.form.isShelf = 1; let p = this.$route.query if(p.areaId){ this.form.areaId = +p.areaId this.form.warehouseId = +p.warehouseId this.form.domainId = +p.domainId this.changeWarehouse( this.form.warehouseId) this.changeDomain(this.form.domainId) this.changeArea(this.form.areaId) } this.title = this.$t("添加储位"); }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); const id = row.id; getWarehouseAreaPosition(id).then(response => { if(this.warehouseList) { this.changeWarehouse(response.data.warehouseId); this.changeDomain(response.data.domainId); } this.form = response.data; this.open = true; this.title = this.$t("修改储位"); }); }, /** 提交按钮 */ submitForm() { this.$refs["form"].validate(valid => { if (!valid) { return; } // 修改的提交 if (this.form.id != null) { updateWarehouseAreaPosition(this.form).then(response => { this.$modal.msgSuccess(this.$t("修改成功")); this.open = false; this.getList(); }); return; } // 添加的提交 createWarehouseAreaPosition(this.form).then(response => { this.$modal.msgSuccess(this.$t("新增成功")); this.open = false; this.getList(); }); }); }, /** 删除按钮操作 */ handleDelete(row) { const id = row.id; this.$modal.confirm(this.$t('是否确认删除储位编号为{id}的数据项?', {id})).then(function() { return deleteWarehouseAreaPosition(id); }).then(() => { this.getList(); this.$modal.msgSuccess(this.$t("删除成功")); }).catch(() => {}); }, /** 导出按钮操作 */ handleExport() { // 处理查询参数 let params = {...this.queryParams}; params.page = undefined; params.rows = undefined; this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // 执行导出 this.$modal.confirm(this.$t('是否确认导出所有储位数据项?')).then(() => { this.exportLoading = true; return exportWarehouseAreaPositionExcel(params); }).then(response => { this.$download.excel(response, '${table.classComment}.xls'); this.exportLoading = false; }).catch(() => {}); }, /** 新增储位 */ handleCreate(row) { this.reset(); this.parentDo = row; this.form.status = 0; this.form.isShelf = 1; this.form.warehouseId = row.warehouseId; this.form.domainId = row.domainId; this.form.domainName = row.domainName; this.form.areaId = row.areaId; this.form.areaName = row.areaName; this.form.pid = row.id; this.open = true; this.title = this.$t("添加储位"); }, } }; </script>