<template>
|
<div id="container" class="position-container">
|
<el-form ref="form" :inline="true" :model="formData" class="demo-form-inline">
|
<el-form-item label="仓库">
|
<el-select v-model="formData.storage_Id" placeholder="请选择仓库" @change="onStorageChange(formData.storage_Id)">
|
<el-option v-for="(item, index) in storageList" :key="index" :label="item.storageName" :value="item.storage_Id"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="库区">
|
<el-select v-model="formData.areaCode" placeholder="请选择库区" @change="onStorageAreaChange(formData.areaCode)">
|
<el-option v-for="(item, index) in storageAreaList" :key="index" :label="item.areaCode" :value="item.areaCode"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="success" icon="el-icon-yrt-xinjian" @click="addStorageArea">新建库区</el-button>
|
<el-button :loading="isLoading" type="primary" icon="el-icon-yrt-baocun" @click="saveArea">保存</el-button>
|
<el-button icon="el-icon-yrt-shuaxin" @click="refreshArea">刷新</el-button>
|
</el-form-item>
|
<br />
|
|
<el-form-item label="库区">
|
<span id="i_storageArea" class="area-content">{{ areaData.areaCode }}</span>
|
</el-form-item>
|
<el-form-item label="货架模式">
|
<span id="i_shelveMode" class="area-content">{{ areaData.shelveMode }}</span>
|
</el-form-item>
|
<el-form-item label="货位类型">
|
<span id="i_PositionType" class="area-content">{{ common.translateText(areaData.positionType, 501) }}</span>
|
</el-form-item>
|
<el-form-item label="通道数">
|
<span id="i_channelNum" class="area-content">{{ areaData.channelNum }}</span>
|
</el-form-item>
|
|
<template v-if="areaData.shelveMode !== '地堆'">
|
<template v-if="areaData.pickMode === 'U型'">
|
<el-form-item label="拣货模式">
|
<span id="i_pickMode" class="area-content">{{ areaData.pickMode }}</span>
|
</el-form-item>
|
<el-form-item label="货架A面">
|
<span id="i_shelveNumA_1" class="area-content">{{ areaData.shelveNumA_1 }}</span> ~
|
<span id="i_shelveNumA_2" class="area-content">{{ areaData.shelveNumA_2 }}</span>
|
</el-form-item>
|
<el-form-item label="货架B面">
|
<span id="i_shelveNumB_1" class="area-content">{{ areaData.shelveNumB_1 }}</span> ~
|
<span id="i_shelveNumB_2" class="area-content">{{ areaData.shelveNumB_2 }}</span>
|
</el-form-item>
|
</template>
|
<template v-if="areaData.pickMode !== 'U型'">
|
<el-form-item label="拣货模式">
|
<span id="i_pickMode_U" class="area-content">{{ areaData.pickMode }}</span>
|
</el-form-item>
|
<el-form-item label="货架A面">
|
<span id="i_shelveNumZ_1" class="area-content">{{ areaData.shelveNumA_1 }}</span> ~
|
<span id="i_shelveNumZ_2" class="area-content">{{ areaData.shelveNumA_2 }}</span>
|
</el-form-item>
|
</template>
|
</template>
|
|
<el-form-item label="列数">
|
<span id="i_colNum" class="area-content">{{ areaData.columnNum }}</span>
|
</el-form-item>
|
<el-form-item :label="areaData.rowTitle">
|
<span id="i_rowNum" class="area-content">{{ areaData.rowNum }}</span>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="text" @click="modifyAreaData">修改设置</el-button>
|
</el-form-item>
|
</el-form>
|
|
<!-- BEGIN PAGE -->
|
<div class="layoutarea">
|
<div class="position-layout">
|
<!--整体外框-->
|
<div v-drawposition="{areaData: areaData, storageData: storageData, shelveDataList: shelveDataList, isViewer: false, isRefresh: isRefresh, updateRefresh: updateRefresh, displayTool: displayTool}" ref="refDraw" class="table-wrap clearfix">
|
</div>
|
</div>
|
<!--整体外框-->
|
</div>
|
<!-- END PAGE -->
|
|
<!-- 新建对话框 -->
|
<position-dialog :options="editorData.options" :visible.sync="editorData.visible" :area-data="areaData" :position-title="positionTitle" @on-confirm="onConfirm"></position-dialog>
|
|
<!-- popover工具栏 -->
|
<el-popover ref="popover" placement="bottom" title="货位设置工具" width="420" trigger="focus">
|
<el-row class="margin-bottom-20">
|
<el-button type="primary" icon="el-icon-yrt-30" @click="toolConfig.lockPositionVisible = true">锁定货位</el-button>
|
<el-button type="primary" icon="el-icon-yrt-suokaiqi" @click="toolConfig.unLockPositionVisible = true">解锁货位</el-button>
|
<el-button type="primary" icon="el-icon-yrt-dayin" @click="printPosition">打印货位</el-button>
|
</el-row>
|
<el-row class="margin-bottom-20">
|
<el-button type="primary" icon="el-icon-yrt-fenpeimubiao" @click="toolConfig.isMixProductPositionVisible = true">是否混放</el-button>
|
<el-button type="primary" icon="el-icon-yrt-yiwancheng1" @click="toolConfig.enablePositionVisible = true">是否可用</el-button>
|
<el-button type="primary" icon="el-icon-yrt-shezhi" @click="toolConfig.setShelveInfoVisible = true">货架设置</el-button>
|
</el-row>
|
<el-row>
|
<el-button type="primary" icon="el-icon-yrt-fenpeimubiao" @click="toolConfig.isminCapacity = true">最低库存</el-button>
|
<el-button type="primary" icon="el-icon-yrt-fenpeimubiao" @click="toolConfig.isplateType = true">关联器具种类</el-button>
|
</el-row>
|
</el-popover>
|
<el-button v-popover:popover ref="btn" class="btn-tool">操作</el-button>
|
|
<!-- 锁定货位对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.lockPositionVisible" width="560px" title="锁定货位对话框">
|
<el-alert :closable="false" title="提示:点击确定按钮后将锁定以下范围的货位,锁定将无法做任何操作。" type="warning">
|
</el-alert>
|
<el-form label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.lockPositionVisible = false">取 消</el-button>
|
<el-button type="primary" @click="lockPosition">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 解锁货位对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.unLockPositionVisible" width="560px" title="解锁货位对话框">
|
<el-alert :closable="false" title="提示:点击确定按钮后将解锁以下范围的货位,解锁后将可以进行库存操作。" type="warning">
|
</el-alert>
|
<el-form label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.unLockPositionVisible = false">取 消</el-button>
|
<el-button type="primary" @click="unLockPosition">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 是否混放对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.isMixProductPositionVisible" width="560px" title="是否混放对话框">
|
<el-alert :closable="false" title="提示:选择“混物料”值,然后将批量修改目标的是否混物料状态。" type="warning">
|
</el-alert>
|
<el-form :model="positionConfig" label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
<el-form-item label="是否混放">
|
<el-radio-group v-model="positionConfig.isMixProductPosition">
|
<el-radio :label="true">是</el-radio>
|
<el-radio :label="false">否</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.isMixProductPositionVisible = false">取 消</el-button>
|
<el-button type="primary" @click="isMixProductPosition">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 是否可用对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.enablePositionVisible" width="560px" title="是否可用对话框">
|
<el-alert :closable="false" title="提示:选择“是否可用”值,然后将批量修改目标“是否可用”状态。" type="warning">
|
</el-alert>
|
<el-form :model="positionConfig" label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
<el-form-item label="是否可用">
|
<el-radio-group v-model="positionConfig.enablePosition">
|
<el-radio :label="true">是</el-radio>
|
<el-radio :label="false">否</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.enablePositionVisible = false">取 消</el-button>
|
<el-button type="primary" @click="enablePosition">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 货架设置对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.setShelveInfoVisible" width="680px" title="货架设置对话框">
|
<el-alert :closable="false" title="提示:请认真填写下面库区各项参数,然后点击确定按钮生成库存货位布局。" type="warning">
|
</el-alert>
|
<el-form :model="positionConfig" label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
<el-form-item v-if="(!positionConfig.colNo && !positionConfig.rowNo)" label="货架层数" class="margin-bottom-10">
|
<el-input ref="configRowNum" v-model="positionConfig.rowNum" placeholder="请输入层数" class="w-100"></el-input> 每个货架有多少层
|
</el-form-item>
|
<el-form-item v-if="(!positionConfig.colNo && !positionConfig.rowNo)" label="货架列数" class="margin-bottom-10">
|
<el-input ref="configColumnNum" v-model="positionConfig.columnNum" placeholder="请输入列数" class="w-100"></el-input> 每个货架每层分多少列(格)
|
</el-form-item>
|
<el-form-item label="货位编码规则">
|
<el-input ref="configPositionRegular" v-model="positionConfig.positionRegular" placeholder="货位编码规则" class="w-250"></el-input> 标准编码规则:{库区}-{通道}{货架}{层}{列}
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.setShelveInfoVisible = false">取 消</el-button>
|
<el-button type="primary" @click="setShelveInfo">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 最低库存对话框 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.isminCapacity" width="560px" title="最低库存对话框">
|
<el-alert :closable="false" title="提示:填写“最低库存”值,然后将批量修改目标“最低库存”。" type="warning">
|
</el-alert>
|
<el-form :model="positionConfig" label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
<el-form-item label="最低库存">
|
<el-input v-model="positionConfig.minCapacity" style="width:120px;"></el-input>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.isminCapacity = false">取 消</el-button>
|
<el-button type="primary" @click="submitminCapacity">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 关联器具种类 -->
|
<el-dialog v-dialogDrag :visible.sync="toolConfig.isplateType" width="560px" title="关联器具种类">
|
<el-form label-width="100px" class="position-config">
|
<el-form-item v-if="positionConfig.channelCode" label="通道">
|
{{ positionConfig.channelCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.shelveCode" label="货架">
|
{{ positionConfig.shelveCode }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.colNo" label="列">
|
{{ positionConfig.colNo }}
|
</el-form-item>
|
<el-form-item v-if="positionConfig.rowNo" label="层">
|
{{ positionConfig.rowNo }}
|
</el-form-item>
|
</el-form>
|
<el-form :model="positionConfig" label-width="100px" class="position-config">
|
<el-form-item label="关联器具种类">
|
<el-select v-model="positionConfig.plateType" multiple collapse-tags filterable clearable placeholder="请选择器具种类" @change="plateTypeChange">
|
<el-option v-for="item in plateTypeList" :key="item.plateType" :label="item.plateType" :value="item.plateType">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="toolConfig.isplateType = false">取 消</el-button>
|
<el-button type="primary" @click="lockPlateType">确 定</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import PositionDialog from "./components/position-dialog";
|
import { drawposition } from "./directives/drawposition.js";
|
|
export default {
|
name: "storage-setting-position-config",
|
components: {
|
PositionDialog
|
},
|
directives: {
|
drawposition
|
},
|
data() {
|
return {
|
plateTypeList: [],
|
|
isLoading: false,
|
// 表单数据
|
formData: {
|
storage_Id: null,
|
storageName: null,
|
areaCode: null
|
},
|
// 仓库下拉框值
|
storageList: [],
|
// 库区下拉框值
|
storageAreaList: [],
|
// 对话框参数
|
editorData: {
|
visible: false,
|
options: {}
|
},
|
// 库区数据
|
areaData: {
|
storage_Id: null,
|
storageName: null,
|
positionType: null,
|
areaCode: "A",
|
pickMode: "U型",
|
shelveMode: "立体货架",
|
maxCapacity: 100,
|
channelNum: 0,
|
rowNum: 0,
|
columnNum: 0,
|
shelveNumA_1: 0,
|
shelveNumA_2: 0,
|
shelveNumB_1: 0,
|
shelveNumB_2: 0,
|
positionRegular: null,
|
channelRegular: null,
|
shelvesRegular: null,
|
rowRegular: null,
|
columnRegular: null,
|
action: "add",
|
rowTitle: "层数",
|
thermoclineType: null,
|
maxWeight: 0,
|
maxBeatNumber: 0,
|
inventoryRate: ""
|
},
|
// 仓库数据
|
storageData: {
|
positionRegular: null,
|
channelRegular: null,
|
shelvesRegular: null,
|
rowRegular: null,
|
columnRegular: null,
|
action: "add"
|
},
|
// 货架信息
|
shelveDataList: [],
|
// 刷新货位数据
|
isRefresh: false,
|
// 工具栏参数
|
toolConfig: {
|
// 显示锁定货位对话框
|
lockPositionVisible: false,
|
// 显示解锁货位对话框
|
unLockPositionVisible: false,
|
// 显示是否混放对话框
|
isMixProductPositionVisible: false,
|
// 显示是否可用对话框
|
enablePositionVisible: false,
|
// 显示货架设置对话框
|
setShelveInfoVisible: false,
|
// 显示最低库存对话框
|
isminCapacity: false,
|
isplateType: false
|
},
|
// 当前工具点击参数
|
positionConfig: {
|
action: null, // 操作类型:通道、列、层
|
channelCode: null, // 通道编号
|
shelveCode: null, // 货架编号
|
colNo: null, // 列编号
|
rowNo: null, // 层编号
|
isMixProductPosition: true, // 是否混放
|
enablePosition: true, // 是否可用
|
selectPositions: [], // 货位列表
|
rowNum: 0, // 货位自定义层数
|
columnNum: 0, // 货位自定义列数
|
positionRegular: null, // 货位自定义规则
|
minCapacity: 0, // 最低库存
|
plateType_Id: null, // 器具id
|
plateType: null // 器具种类
|
},
|
// 编辑器标题名称
|
positionTitle: "新建库区"
|
};
|
},
|
mounted() {
|
this.plateTypeChange();
|
},
|
created() {
|
this.common.loadDropDown([501], { projectName: "Rattan.ERP.Storage" });
|
this.getStorageList();
|
},
|
methods: {
|
// 器具种类
|
plateTypeChange() {
|
const url = "api/basicInfo/base/plate/getListPlateType";
|
const params = {};
|
var callback = res => {
|
if (res.result) {
|
this.plateTypeList = res.data;
|
}
|
};
|
this.common.ajax(url, params, callback, true);
|
},
|
|
// 获得仓储列表
|
getStorageList() {
|
var url = "/api/basicInfo/base/storage/getList";
|
var params = { appendField: "*" };
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.storageList = res.data;
|
}
|
},
|
true
|
);
|
},
|
|
// 仓库选择改变后,获得库区列表
|
onStorageChange(storage_Id) {
|
this.storageAreaList = [];
|
this.formData.areaCode = null;
|
this.storageData = this.storageList.find(item => item.storage_Id === storage_Id);
|
this.formData.storageName = this.storageData.storageName;
|
|
var url = "/api/basicInfo/base/position/getStorageAreaList";
|
var params = {
|
storage_Id: storage_Id
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.storageAreaList = res.data;
|
}
|
},
|
true
|
);
|
},
|
|
// 库区选择改变后
|
onStorageAreaChange(areaCode) {
|
this.areaData = this.storageAreaList.find(item => {
|
return item.areaCode === areaCode;
|
});
|
|
this.loadArea(areaCode);
|
},
|
|
// 新建库区对话框
|
addStorageArea() {
|
if (!this.formData.storage_Id) {
|
this.$message.error("请选择仓库!");
|
return;
|
}
|
this.shelveDataList = [];
|
|
const positionTmpl = this.storageData.positionRegular;
|
if (!positionTmpl) {
|
this.$message.error("货位编码规则为空,请设置好货位编码规则!");
|
return;
|
}
|
this.areaData = {
|
storage_Id: this.formData.storage_Id,
|
storageName: this.formData.storageName,
|
positionType: 1,
|
areaCode: null,
|
pickMode: "U型",
|
shelveMode: "立体货架",
|
maxCapacity: 100,
|
channelNum: 0,
|
rowNum: 4,
|
columnNum: 4,
|
shelveNumA_1: 1,
|
shelveNumA_2: 3,
|
shelveNumB_1: 4,
|
shelveNumB_2: 6,
|
positionRegular: positionTmpl,
|
channelRegular: this.storageData.channelRegular,
|
shelvesRegular: this.storageData.shelvesRegular,
|
rowRegular: this.storageData.rowRegular,
|
columnRegular: this.storageData.columnRegular,
|
action: "add",
|
rowTitle: "层数",
|
channelNum_didui: 1,
|
rowNum_didui: 1,
|
columnNum_didui: 1,
|
shelveNumZ_1: 1,
|
shelveNumZ_2: 1,
|
thermoclineType: "常温层",
|
maxWeight: 0,
|
maxBeatNumber: 0,
|
inventoryRate: ""
|
};
|
this.storageData.action = "add";
|
this.editorData.visible = true;
|
this.positionTitle = "新建库区";
|
},
|
|
// 加载货架数据
|
loadShelveList(areaCode) {
|
this.shelveDataList = []; // 初始化货架数据
|
|
var url = "/api/basicInfo/base/position/loadShelveList";
|
var params = {
|
storage_Id: this.formData.storage_Id,
|
areaCode: areaCode
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.shelveDataList = res.data;
|
this.isRefresh = true;
|
}
|
},
|
true
|
);
|
},
|
|
// 加载库区数据
|
loadArea(areaCode) {
|
this.shelveDataList = []; // 初始化货架数据
|
|
var url = "/api/basicInfo/base/position/getStorageAreaInfo";
|
var params = {
|
storage_Id: this.formData.storage_Id,
|
areaCode: areaCode
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.areaData = res.data;
|
if (this.areaData.positionType) {
|
this.areaData.positionType = parseInt(this.areaData.positionType);
|
}
|
this.areaData.rowTitle = "层数";
|
if (this.areaData.shelveMode === "地堆") {
|
this.areaData.channelNum_didui = this.areaData.channelNum;
|
this.areaData.rowNum_didui = this.areaData.rowNum;
|
this.areaData.columnNum_didui = this.areaData.columnNum;
|
this.areaData.rowTitle = "行数";
|
} else if (this.areaData.shelveMode === "立体货架") {
|
if (this.areaData.pickMode === "Z型") {
|
this.areaData.shelveNumZ_1 = this.areaData.shelveNumA_1;
|
this.areaData.shelveNumZ_2 = this.areaData.shelveNumA_2;
|
}
|
}
|
this.storageData.action = "modify";
|
|
// this.isRefresh = true;
|
this.loadShelveList(areaCode); // 加载货架
|
}
|
},
|
true
|
);
|
},
|
|
// 刷新
|
refreshArea() {
|
var areaCode = this.formData.areaCode;
|
if (!areaCode) return;
|
this.loadArea(areaCode);
|
},
|
|
// 新建库区
|
onConfirm(formData) {
|
this.areaData = JSON.parse(JSON.stringify(formData));
|
this.isRefresh = true;
|
},
|
|
// 保存库区
|
saveArea() {
|
if (!this.areaData || !this.areaData.columnNum) {
|
this.$message.error("请先创建库区数据,然后在执行保存!");
|
return;
|
}
|
this.isLoading = true;
|
const url = "/api/basicInfo/base/position/save";
|
this.areaData.shelveDataList = this.shelveDataList; // 自定义货架
|
const params = {
|
areaData: this.areaData,
|
shelveDataList: this.areaData.shelveDataList
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
this.onStorageChange(this.formData.storage_Id);
|
this.isLoading = false;
|
});
|
},
|
// 修改库区数据
|
modifyAreaData() {
|
const positionTmpl = this.storageData.positionRegular;
|
if (!positionTmpl) {
|
this.$message.error("货位编码规则为空,请设置好货位编码规则!");
|
return;
|
}
|
|
if (this.storageData.action !== "modify") {
|
this.$message.error("当前库区数据未保存!");
|
return;
|
}
|
this.positionTitle = "修改库区设置";
|
this.editorData.visible = true;
|
},
|
// 修改刷新状态
|
updateRefresh(isRefresh) {
|
this.isRefresh = isRefresh;
|
},
|
// 显示工具栏
|
displayTool(the, positionList, shelveList) {
|
debugger;
|
const el = this.$refs.btn.$el;
|
const rect = this.getOffsetRect(the);
|
el.style.left = rect.left - 170 + "px";
|
el.style.top = rect.top - 65 + "px";
|
|
// 获得货位参数
|
this.positionConfig.channelCode = the.getAttribute("channelcode");
|
this.positionConfig.shelveCode = the.getAttribute("shelveCode");
|
this.positionConfig.shelveCode = the.getAttribute("shelveCode");
|
this.positionConfig.colNo = the.getAttribute("colNo");
|
// this.positionConfig.plateType_Id = the.getAttribute("plateType_Id");
|
this.positionConfig.plateType = the.getAttribute("plateType");
|
this.positionConfig.selectPositions = positionList;
|
this.positionConfig.selectChannelShelveList = shelveList;
|
this.positionConfig.positionRegular = "{库区}-{通道}{货架}{层}{列}";
|
|
if (!this.positionConfig.colNo && !this.positionConfig.rowNo) {
|
this.positionConfig.action = "通道";
|
} else if (this.positionConfig.colNo) {
|
this.positionConfig.action = "层";
|
} else if (this.positionConfig.rowNo) {
|
this.positionConfig.action = "列";
|
}
|
|
var findShelveInfo = null;
|
findShelveInfo = this.shelveDataList.find(item => {
|
return (
|
item.storage_Id === this.areaData.storage_Id &&
|
item.areaCode === this.formData.areaCode &&
|
item.channelCode === this.positionConfig.channelCode &&
|
item.shelveCode === this.positionConfig.shelveCode
|
);
|
});
|
this.positionConfig.columnNum = this.areaData.columnNum;
|
this.positionConfig.rowNum = this.areaData.rowNum;
|
if (findShelveInfo) {
|
findShelveInfo = JSON.parse(JSON.stringify(findShelveInfo));
|
this.positionConfig.columnNum = findShelveInfo.columnNum;
|
this.positionConfig.rowNum = findShelveInfo.rowNum;
|
}
|
window.setTimeout(() => {
|
el.focus();
|
}, 200);
|
},
|
// 获取偏移量
|
getOffsetRect(ele) {
|
const box = ele.getBoundingClientRect();
|
const body = document.body;
|
const docElem = document.documentElement;
|
// 获取页面的scrollTop,scrollLeft(兼容性写法)
|
const scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
|
const scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
|
const clientTop = docElem.clientTop || body.clientTop;
|
const clientLeft = docElem.clientLeft || body.clientLeft;
|
const top = box.top + scrollTop - clientTop;
|
const left = box.left + scrollLeft - clientLeft;
|
return {
|
// Math.round 兼容火狐浏览器bug
|
top: Math.round(top),
|
left: Math.round(left)
|
};
|
},
|
// 器具种类
|
lockPlateType() {
|
debugger;
|
var storage_Id = this.formData.storage_Id;
|
// var plateType_Id = this.positionConfig.plateType_Id;
|
var plateType = this.positionConfig.plateType;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo,
|
// plateType_Id: plateType_Id,
|
plateType: plateType
|
};
|
var url = "/api/basicInfo/base/position/lockPlateType";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.refreshArea();
|
this.toolConfig.isplateType = false;
|
}
|
},
|
true
|
);
|
|
this.toolConfig.lockPositionVisible = false;
|
},
|
// 锁定货位
|
lockPosition() {
|
var storage_Id = this.formData.storage_Id;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo
|
};
|
var url = "/api/basicInfo/base/position/lockPosition";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.refreshArea();
|
}
|
},
|
true
|
);
|
|
this.toolConfig.lockPositionVisible = false;
|
},
|
// 解锁货位
|
unLockPosition() {
|
var storage_Id = this.formData.storage_Id;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo
|
};
|
var url = "/api/basicInfo/base/position/unlockPosition";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.refreshArea();
|
}
|
},
|
true
|
);
|
this.toolConfig.unLockPositionVisible = false;
|
},
|
// 打印货位
|
printPosition() {
|
const positionNames = this.positionConfig.selectPositions
|
.map((item, index, Array) => {
|
return item.PlateCode;
|
})
|
.join(",");
|
if (!positionNames) {
|
this.$message.error("执行选择一项");
|
return;
|
}
|
localStorage.setItem("printType", "货位条码打印");
|
localStorage.setItem("positionNames", positionNames);
|
|
var url = "/#/inbound/purchase/print-barcode";
|
window.open(url);
|
return false;
|
},
|
// 是否混放
|
isMixProductPosition() {
|
var storage_Id = this.formData.storage_Id;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var isMixProduct = this.positionConfig.isMixProductPosition ? 1 : 0;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo,
|
isMixProduct: isMixProduct
|
};
|
var url = "/api/basicInfo/base/position/isMixProductPosition";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.refreshArea();
|
}
|
},
|
true
|
);
|
this.toolConfig.isMixProductPositionVisible = false;
|
},
|
// 是否可用
|
enablePosition() {
|
var storage_Id = this.formData.storage_Id;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var enable = this.positionConfig.enablePosition ? 1 : 0;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo,
|
enable: enable
|
};
|
var url = "/api/basicInfo/base/position/enablePosition";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.refreshArea();
|
}
|
},
|
true
|
);
|
this.toolConfig.enablePositionVisible = false;
|
},
|
// 货架设置
|
setShelveInfo() {
|
var rowNum = this.positionConfig.rowNum;
|
if (!rowNum || parseInt(rowNum) <= 0) {
|
this.$message.error("请输入货架层数!");
|
this.$refs.configRowNum.focus().select();
|
return;
|
}
|
var columnNum = this.positionConfig.columnNum;
|
if (!columnNum || parseInt(columnNum) <= 0) {
|
this.$message.error("请输入货架列数!");
|
this.$refs.configColumnNum.focus().select();
|
return;
|
}
|
var positionRegular = this.positionConfig.positionRegular;
|
if (!positionRegular || parseInt(positionRegular) <= 0) {
|
this.$message.error("请输入货位编码规则!");
|
this.$refs.configPositionRegular.focus().select();
|
return;
|
}
|
|
// 通过通道设置
|
if (!this.positionConfig.shelveCode) {
|
this.positionConfig.selectChannelShelveList.forEach(item => {
|
var oldShelveInfo = null;
|
this.shelveDataList.forEach(val => {
|
if (item.channelCode === val.channelCode && item.shelveCode === val.shelveCode) {
|
oldShelveInfo = val;
|
}
|
});
|
if (oldShelveInfo) {
|
oldShelveInfo.rowNum = parseInt(this.positionConfig.rowNum);
|
oldShelveInfo.columnNum = parseInt(this.positionConfig.columnNum);
|
oldShelveInfo.positionRegular = this.positionConfig.positionRegular;
|
} else {
|
oldShelveInfo = {};
|
oldShelveInfo.storage_Id = this.areaData.storage_Id;
|
oldShelveInfo.areaCode = this.formData.areaCode;
|
oldShelveInfo.channelCode = this.positionConfig.channelCode;
|
oldShelveInfo.shelveCode = item.shelveCode;
|
oldShelveInfo.rowNum = parseInt(this.positionConfig.rowNum);
|
oldShelveInfo.columnNum = parseInt(this.positionConfig.columnNum);
|
oldShelveInfo.positionRegular = this.positionConfig.positionRegular;
|
this.shelveDataList.push(oldShelveInfo);
|
}
|
});
|
this.isRefresh = true;
|
this.toolConfig.setShelveInfoVisible = false;
|
return;
|
}
|
|
var findShelveInfo = null;
|
findShelveInfo = this.shelveDataList.find(item => {
|
return (
|
item.storage_Id === this.areaData.storage_Id &&
|
item.areaCode === this.formData.areaCode &&
|
item.channelCode === this.positionConfig.channelCode &&
|
item.shelveCode === this.positionConfig.shelveCode
|
);
|
});
|
if (!findShelveInfo) {
|
findShelveInfo = {};
|
findShelveInfo.storage_Id = this.areaData.storage_Id;
|
findShelveInfo.areaCode = this.formData.areaCode;
|
findShelveInfo.channelCode = this.positionConfig.channelCode;
|
findShelveInfo.shelveCode = this.positionConfig.shelveCode;
|
findShelveInfo.rowNum = parseInt(this.positionConfig.rowNum);
|
findShelveInfo.columnNum = parseInt(this.positionConfig.columnNum);
|
// findShelveInfo.positionRegular = this.positionConfig.positionRegular;
|
this.shelveDataList.push(findShelveInfo);
|
} else {
|
findShelveInfo.rowNum = parseInt(this.positionConfig.rowNum);
|
findShelveInfo.columnNum = parseInt(this.positionConfig.columnNum);
|
// findShelveInfo.positionRegular = this.positionConfig.positionRegular;
|
}
|
/** **************************************
|
* 设置编码规则级别
|
*************************************** */
|
if (this.positionConfig.action === "通道") {
|
// 通道级别编码规则
|
findShelveInfo.positionRegular = this.positionConfig.positionRegular;
|
} else if (this.positionConfig.action === "层") {
|
// 层级别编码规则
|
if (!findShelveInfo.columnConfigs) {
|
findShelveInfo.columnConfigs = [];
|
}
|
const existConfig = findShelveInfo.columnConfigs.find(cItem => {
|
return cItem.colNo === this.positionConfig.colNo;
|
});
|
if (existConfig) {
|
existConfig.positionRegular = this.positionConfig.positionRegular;
|
} else {
|
findShelveInfo.columnConfigs.push({
|
colNo: this.positionConfig.colNo,
|
positionRegular: this.positionConfig.positionRegular
|
});
|
}
|
} else if (this.positionConfig.action === "列") {
|
// 列级别编码规则
|
if (!findShelveInfo.rowConfigs) {
|
findShelveInfo.rowConfigs = [];
|
}
|
const existConfig = findShelveInfo.rowConfigs.find(cItem => {
|
return cItem.rowNo === this.positionConfig.rowNo;
|
});
|
if (existConfig) {
|
existConfig.positionRegular = this.positionConfig.positionRegular;
|
} else {
|
findShelveInfo.rowConfigs.push({
|
rowNo: this.positionConfig.rowNo,
|
positionRegular: this.positionConfig.positionRegular
|
});
|
}
|
}
|
|
this.isRefresh = true;
|
this.toolConfig.setShelveInfoVisible = false;
|
},
|
// 最低库存
|
submitminCapacity() {
|
var storage_Id = this.formData.storage_Id;
|
var storageArea = this.formData.areaCode; // 库区
|
var channelCode = this.positionConfig.channelCode ? this.positionConfig.channelCode : null;
|
var shelveCode = this.positionConfig.shelveCode ? this.positionConfig.shelveCode : null;
|
var colNo = this.positionConfig.colNo ? this.positionConfig.colNo : null;
|
var rowNo = this.positionConfig.rowNo ? this.positionConfig.rowNo : null;
|
var minCapacity = this.positionConfig.minCapacity;
|
var positionInfo = {
|
storage_Id: storage_Id,
|
storageArea: storageArea,
|
channelCode: channelCode,
|
shelveCode: shelveCode,
|
colNo: colNo,
|
rowNo: rowNo,
|
minCapacity: minCapacity
|
};
|
var url = "/api/basicInfo/base/position/submitminCapacity";
|
var params = {
|
positionInfo: positionInfo
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.positionConfig.minCapacity = 0;
|
this.refreshArea();
|
}
|
},
|
true
|
);
|
this.toolConfig.isminCapacity = false;
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.position-container {
|
padding: 10px;
|
background-color: white;
|
border-bottom: 1px solid #eee;
|
/deep/ .el-form-item__label {
|
padding: 0;
|
&::after {
|
content: ":";
|
}
|
}
|
|
.layoutarea {
|
// overflow-x: auto;
|
// overflow-y: visible;
|
.position-layout {
|
width: 50000px;
|
}
|
}
|
|
/* table-wrap */
|
/deep/ .table-wrap {
|
position: relative;
|
display: inline-block;
|
* {
|
margin: 0;
|
padding: 0;
|
list-style: none;
|
font-family: "微软雅黑", Arial;
|
}
|
.table-row {
|
position: relative;
|
background-color: #fff;
|
min-height: 100px;
|
padding: 10px 0 10px 0;
|
border-bottom: 1px solid #ccc;
|
.column-num {
|
width: 35px;
|
height: 50px;
|
position: absolute;
|
margin-top: -25px;
|
left: 10px;
|
top: 50%;
|
font-size: 14px;
|
color: #666;
|
z-index: 100;
|
cursor: pointer;
|
}
|
}
|
|
.table-row.didui {
|
margin: 20px 0;
|
}
|
|
.table-row .column-num p {
|
font-size: 24px;
|
font-family: Arial, Helvetica, sans-serif;
|
font-weight: 400;
|
color: #333;
|
}
|
|
.table-row .t-box {
|
position: relative;
|
}
|
|
.table-row .t-box .guanlian-line {
|
display: block;
|
width: 20px;
|
background-color: #fff;
|
border: 1px solid #ccc;
|
border-right: none;
|
height: 10px;
|
position: absolute;
|
top: 50%;
|
left: 60px;
|
}
|
|
.table-row .column-line {
|
min-height: 100px;
|
padding-left: 100px;
|
}
|
|
.table-row .column-line.didui {
|
padding-left: 50px;
|
}
|
|
.table-row .column-line .nood-a,
|
.table-row .column-line .nood-b {
|
position: relative;
|
}
|
|
.table-row .column-line .nood-a .nood-text,
|
.table-row .column-line .nood-b .nood-text {
|
display: block;
|
width: 18px;
|
height: 40px;
|
line-height: 1.5;
|
position: absolute;
|
top: 50%;
|
margin-top: 15px;
|
left: -20px;
|
font-size: 12px;
|
color: #666;
|
border: 1px solid #ccc;
|
text-align: center;
|
}
|
|
.table-row .column-line .nood-b .nood-text {
|
margin-top: -50px !important;
|
}
|
|
.table-row .column-line .table-reset {
|
display: inline-block;
|
margin-left: 50px;
|
position: relative;
|
vertical-align: top;
|
}
|
|
.table-row .column-line .table-reset .table-num {
|
font-size: 14px;
|
color: #666;
|
font-weight: 400;
|
margin: 0 0 25px 0;
|
}
|
|
.table-row .column-line .table-reset .table-num.didui {
|
margin: 0 0 0px 0;
|
}
|
|
.table-row .column-line .table-reset .table-num strong {
|
font-size: 24px;
|
font-weight: 400;
|
padding-left: 5px;
|
color: #333;
|
cursor: pointer;
|
}
|
|
.table-row .column-line .table-reset .table-num.didui strong {
|
display: none;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul {
|
position: relative;
|
display: table;
|
}
|
|
/* .table-row .column-line .table-reset .table-list-ul:last-child{ border-bottom:1px solid #ccc;} */
|
|
.table-row .column-line .table-reset .table-list-ul li {
|
position: relative;
|
min-width: 100px;
|
padding-right: 5px;
|
height: 30px;
|
line-height: 30px;
|
border: 1px solid #ccc;
|
border-right: none;
|
border-bottom: none;
|
display: table-cell;
|
font-size: 12px;
|
padding-left: 5px;
|
color: #666;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul li.border-bottom {
|
border-bottom: 1px solid #ccc;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul li:last-child {
|
border-right: 1px solid #ccc;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul li .t-n {
|
position: absolute;
|
top: -30px;
|
left: 10px;
|
font-size: 12px;
|
cursor: pointer;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul li .b-n {
|
position: absolute;
|
bottom: -30px;
|
left: 10px;
|
font-size: 12px;
|
cursor: pointer;
|
}
|
|
.table-row .column-line .table-reset .table-list-ul li .l-n {
|
position: absolute;
|
left: -25px;
|
top: 1px;
|
font-size: 12px;
|
cursor: pointer;
|
}
|
|
/* B面style */
|
|
.table-row .column-line .nood-b {
|
margin-top: 20px;
|
}
|
|
.table-row .column-line .nood-b .table-num {
|
font-size: 14px;
|
color: #666;
|
font-weight: 400;
|
margin: 20px 0 0 0;
|
}
|
|
.nood-b .table-reset .table-list-ul:last-child {
|
border-bottom: 10px solid #ccc !important;
|
background-color: red !important;
|
}
|
|
/* 图标类型 */
|
|
.postype-1 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat 0 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-2 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -8px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-3 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -16px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-4 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -24px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-5 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -32px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-6 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -40px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.postype-7 {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -48px 0;
|
vertical-align: middle;
|
position: absolute;
|
bottom: 3px;
|
right: 3px;
|
}
|
|
.locked {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -56px 0;
|
vertical-align: middle;
|
position: absolute;
|
top: 3px;
|
right: 3px;
|
}
|
|
.isMixProduct {
|
display: inline-block;
|
width: 8px;
|
height: 8px;
|
background: url(/static/images/type.png) no-repeat -64px 0;
|
vertical-align: middle;
|
position: absolute;
|
top: 3px;
|
right: 3px;
|
}
|
}
|
/* 工具栏按钮 */
|
.btn-tool {
|
position: absolute;
|
top: -100px;
|
left: -100px;
|
width: 0;
|
height: 0;
|
padding: 0;
|
border: 0;
|
font-size: 0;
|
line-height: 0;
|
}
|
/deep/ .el-dialog__body {
|
padding: 10px 20px 30px;
|
}
|
.position-config {
|
/deep/ .el-form-item {
|
margin-bottom: 0px;
|
}
|
}
|
}
|
</style>
|