Browse Source

下架策略

master_hella_20240701
yufei0306 5 months ago
parent
commit
e37348f00e
  1. 295
      src/views/wms/basicDataManage/strategySetting/strategy/downShelfStrategy/AddForm.vue

295
src/views/wms/basicDataManage/strategySetting/strategy/downShelfStrategy/AddForm.vue

@ -9,13 +9,14 @@
label-width="120px"
label-position="left"
>
<!-- 规则 -->
<div class="item">
<div class="title">规则</div>
<el-row gutter="10">
<el-col :span="24">
<el-form-item label="代码" prop="strategyCode">
<el-input
<el-input key="strategyCode"
v-model="formData.strategyCode"
placeholder="请输入代码"
clearable
@ -25,22 +26,22 @@
</el-col>
<el-col :span="24">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" clearable />
<el-input key="name" v-model="formData.name" placeholder="请输入名称" clearable />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="描述" prop="description">
<el-input v-model="formData.description" placeholder="请输入描述" clearable />
<el-input key="description" v-model="formData.description" placeholder="请输入描述" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="优先级" prop="priority">
<el-input-number v-model="formData.priority" :min="0" />
<el-input-number key="priority" v-model="formData.priority" :min="0" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-switch v-model="formData.status" />
<el-switch key="status" v-model="formData.status" />
</el-form-item>
</el-col>
</el-row>
@ -48,13 +49,13 @@
<!-- 规则条件 -->
<div class="item mt-20px">
<div class="title">规则条件</div>
<el-row gutter="10">
<el-col :span="24" v-for="(item, index) in formData.condition" :key="index">
<div key="规则条件" class="item mt-20px">
<div key="规则条件title" class="title">规则条件</div>
<el-row key="规则条件row" :gutter="10">
<el-col key="供应商和客户col" :span="24" v-for="(item, index) in formData.condition" :key="index">
<!-- 选择供应商和客户 -->
<el-form-item label="" label-width="0" class="err-240" v-if="index == 0">
<el-select
<el-form-item key="供应商和客户formItem" label="" label-width="0" class="err-240" v-if="index == 0">
<el-select key="供应商和客户"
v-model="item.ParamCode"
placeholder=""
style="width: 110px; margin-right: 10px"
@ -64,10 +65,10 @@
:label="cur.label"
:value="cur.value"
v-for="(cur, index) in options.typeOptions"
:key="index"
:key="'供应商和客户'+cur.value"
/>
</el-select>
<el-select
<el-select key="供应商和客户Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -76,28 +77,30 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="cur.value"
:key="'供应商和客户Operator'+cur.value"
/>
</el-select>
<el-select
<el-select key="供应商和客户Value"
v-model="item.Value"
:placeholder="`请选择${item.ParamCode == 'SupplierCode' ? '供应商' : '客户'}`"
style="flex: 1"
clearable
multiple
collapse-tags
filterable
:filter-method="filterMethod"
>
<el-option
v-for="cur in options.supplierList"
:key="cur.code"
:key="'供应商和客户Value'+cur.code"
:label="cur.name"
:value="cur.code"
/>
</el-select>
</el-form-item>
<!-- 选择物料类型 -->
<el-form-item label="" label-width="0" class="err-240" v-if="index == 1">
<el-select
<el-form-item key="物料类型formItem" label="" label-width="0" class="err-240" v-if="index == 1">
<el-select key="物料类型"
v-model="item.ParamCode"
placeholder=""
@change="changeItemsType"
@ -107,10 +110,10 @@
:label="item.label"
:value="item.value"
v-for="item in options.itemTypeOptions"
:key="item.value"
:key="'物料类型'+item.value"
/>
</el-select>
<el-select
<el-select key="物料类型Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -119,10 +122,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="cur.value"
:key="'物料类型Operator'+cur.value"
/>
</el-select>
<el-select
<el-select key="物料类型Value"
v-model="item.Value"
placeholder="请选择物料类型"
style="flex: 1"
@ -133,12 +136,12 @@
>
<el-option
v-for="cur in getStrDictOptions(DICT_TYPE.ITEM_TYPE)"
:key="cur.value"
:key="'物料类型Value'+cur.value"
:label="cur.label"
:value="cur.value"
/>
</el-select>
<el-select
<el-select key="ABC类"
v-model="item.Value"
placeholder="请选择ABC类"
style="flex: 1"
@ -149,26 +152,26 @@
>
<el-option
v-for="cur in getStrDictOptions(DICT_TYPE.ABC_CLASS)"
:key="cur.value"
:key="'ABC类'+cur.value"
:label="cur.label"
:value="cur.value"
/>
</el-select>
<el-input
<el-input key="物料分组"
v-model="item.Value"
placeholder="请输入物料分组,多个物料分组以逗号分隔"
clearable
style="flex: 1"
v-else-if="item.ParamCode == 'ItemGroup'"
/>
<el-input
<el-input key="项目"
v-model="item.Value"
placeholder="请输入项目,多个项目以逗号分隔"
clearable
style="flex: 1"
v-else-if="item.ParamCode == 'Project'"
/>
<el-input
<el-input key="物料"
v-model="item.Value"
placeholder="请输入物料,多个物料以逗号分隔"
clearable
@ -177,8 +180,8 @@
/>
</el-form-item>
<!-- 选择重量体积还是面积 -->
<el-form-item label="" label-width="0" class="err-240" v-if="index == 2">
<el-select
<el-form-item key="重量体积或面积formItem" label="" label-width="0" class="err-240" v-if="index == 2">
<el-select key="重量体积或面积"
v-model="item.ParamCode"
placeholder=""
@change="changeCalculation"
@ -188,10 +191,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.calculationTypeOptions"
:key="cur.value"
:key="'重量体积或面积'+cur.value"
/>
</el-select>
<el-select
<el-select key="重量体积或面积Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -200,10 +203,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions2"
:key="cur.value"
:key="'重量体积或面积Operator'+cur.value"
/>
</el-select>
<el-input
<el-input key="重量体积或面积Value"
v-model="item.Value"
:placeholder="`请输入${
item.ParamCode == 'Weight' ? '重量' : item.ParamCode == 'Area' ? '面积' : '体积'
@ -213,8 +216,8 @@
/>
</el-form-item>
<!-- 库存状态 -->
<el-form-item label="库存状态" class="err-120" v-if="index == 3">
<el-select
<el-form-item key="库存状态formItem" label="库存状态" class="err-120" v-if="index == 3">
<el-select key="库存状态Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -223,10 +226,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="cur.value"
:key="'库存状态Operator'+cur.value"
/>
</el-select>
<el-select
<el-select key="库存状态Value"
v-model="item.Value"
placeholder="请选择库存状态"
style="flex: 1"
@ -236,15 +239,15 @@
>
<el-option
v-for="cur in getStrDictOptions(DICT_TYPE.INVENTORY_STATUS)"
:key="cur.value"
:key="'库存状态Value'+cur.value"
:label="cur.label"
:value="cur.value"
/>
</el-select>
</el-form-item>
<!-- 存储类型 -->
<el-form-item label="存储类型" class="err-120" v-if="index == 4">
<el-select
<el-form-item key="存储类型formItem" label="存储类型" class="err-120" v-if="index == 4">
<el-select key="存储类型Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -253,10 +256,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="cur.value"
:key="'存储类型Operator'+cur.value"
/>
</el-select>
<el-select
<el-select key="存储类型Value"
v-model="item.Value"
placeholder="请选择存储类型"
style="flex: 1"
@ -266,15 +269,15 @@
>
<el-option
v-for="cur in getStrDictOptions(DICT_TYPE.STORAGE_TYPE)"
:key="cur.value"
:key="'存储类型Value'+cur.value"
:label="cur.label"
:value="cur.value"
/>
</el-select>
</el-form-item>
<!-- 库存事务 -->
<el-form-item label="库存事务" class="err-120" v-if="index == 5">
<el-select
<el-form-item key="库存事务formItem" label="库存事务" class="err-120" v-if="index == 5">
<el-select key="库存事务Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -283,10 +286,10 @@
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="cur.value"
:key="'库存事务Operator'+cur.value"
/>
</el-select>
<el-input
<el-input key="库存事务Value"
v-model="item.Value"
placeholder="请输入库存事务,多个库存事务以逗号分隔"
clearable
@ -298,12 +301,12 @@
</div>
<!-- 规则配置 -->
<div class="item mt-20px">
<div class="title">规则配置</div>
<el-row gutter="10">
<el-col :span="24">
<el-form-item label="" label-width="0" prop="warehouse" class="err-120">
<el-select
<div key="规则配置" class="item mt-20px">
<div key="规则配置title" class="title">规则配置</div>
<el-row key="规则配置row" :gutter="10">
<el-col key="仓库col" :span="24">
<el-form-item key="仓库formItem" label="" label-width="0" prop="warehouse" class="err-120">
<el-select key="仓库"
v-model="warehouseType"
placeholder=""
style="width: 110px; margin-right: 10px"
@ -313,19 +316,22 @@
:label="cur.label"
:value="cur.value"
v-for="(cur, index) in options.warehouseTypeOptions"
:key="index"
:key="'仓库'+cur.value"
/>
</el-select>
<el-select
v-model="formData.configuration.WarehouseCode"
v-if="warehouseType == 'WarehouseCode'"
placeholder="请选择仓库"
key="请选择仓库"
clearable
style="flex: 1"
filterable
:filter-method="filterMethodWarehouseList"
>
<el-option
v-for="cur in options.warehouseList"
:key="cur.code"
:key="'请选择仓库WarehouseCode'+index+cur.code"
:label="cur.code"
:value="cur.code"
/>
@ -334,12 +340,15 @@
v-model="formData.configuration.AreaCode"
v-if="warehouseType == 'AreaCode'"
placeholder="请选择库区"
key="请选择库区"
clearable
style="flex: 1"
filterable
:filter-method="filterMethodWarehouseList"
>
<el-option
v-for="cur in options.warehouseList"
:key="cur.code"
:key="'请选择库区AreaCode'+cur.code"
:label="cur.code"
:value="cur.code"
/>
@ -348,12 +357,15 @@
v-model="formData.configuration.LocationGroupCode"
v-if="warehouseType == 'LocationGroupCode'"
placeholder="请选择库位组"
key="请选择库位组"
clearable
style="flex: 1"
filterable
:filter-method="filterMethodWarehouseList"
>
<el-option
v-for="cur in options.warehouseList"
:key="cur.code"
:key="'请选择库位组LocationGroupCode'+cur.code"
:label="cur.code"
:value="cur.code"
/>
@ -363,12 +375,15 @@
v-model="formData.configuration.LocationCode"
v-if="warehouseType == 'LocationCode'"
placeholder="请选择库位"
key="请选择库位"
clearable
style="flex: 1"
filterable
:filter-method="filterMethodWarehouseList"
>
<el-option
v-for="cur in options.warehouseList"
:key="cur.code"
:key="'请选择库位LocationCode'+cur.code"
:label="cur.code"
:value="cur.code"
/>
@ -376,14 +391,14 @@
</el-form-item>
</el-col>
<!-- 数量排序方向 -->
<el-col :span="24">
<el-form-item label="数量排序方向" class="flex-top">
<el-col key="数量排序方向col" :span="24">
<el-form-item key="数量排序方向formItem" label="数量排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.QtyOrderDirection">
<el-radio-group key="数量排序方向" v-model="formData.configuration.QtyOrderDirection">
<el-radio
:label="cur.value"
v-for="cur in options.sortOptions"
:key="cur.value"
:key="'数量排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -391,14 +406,14 @@
</el-form-item>
</el-col>
<!-- 巷道排序方向 -->
<el-col :span="24">
<el-form-item label="巷道排序方向" class="flex-top">
<el-col key="巷道排序方向col" :span="24">
<el-form-item key="巷道排序方向formItem" label="巷道排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.AisleOrder">
<el-radio-group key="巷道排序方向" v-model="formData.configuration.AisleOrder">
<el-radio
:label="cur.value"
v-for="cur in options.sortOptions"
:key="cur.value"
:key="'巷道排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -406,14 +421,14 @@
</el-form-item>
</el-col>
<!-- 货架排序方向 -->
<el-col :span="24">
<el-form-item label="货架排序方向" class="flex-top">
<el-col key="货架排序方向col" :span="24">
<el-form-item key="货架排序方向formItem" label="货架排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.ShelfOrder">
<el-radio-group key="货架排序方向" v-model="formData.configuration.ShelfOrder">
<el-radio
:label="cur.value"
v-for="cur in options.sortOptions"
:key="cur.value"
:key="'货架排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -421,14 +436,14 @@
</el-form-item>
</el-col>
<!-- 行排序方向 -->
<el-col :span="24">
<el-form-item label="行排序方向" class="flex-top">
<el-col key="行排序方向col" :span="24">
<el-form-item key="行排序方向formItem" label="行排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.RowOrder">
<el-radio-group key="行排序方向" v-model="formData.configuration.RowOrder">
<el-radio
:label="cur.value"
v-for="cur in options.sortOptions"
:key="cur.value"
:key="'行排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -436,14 +451,14 @@
</el-form-item>
</el-col>
<!-- 列排序方向 -->
<el-col :span="24">
<el-form-item label="列排序方向" class="flex-top">
<el-col key="列排序方向col" :span="24">
<el-form-item key="列排序方向formItem" label="列排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.ColumOrder">
<el-radio-group key="列排序方向" v-model="formData.configuration.ColumOrder">
<el-radio
:label="cur.value"
v-for="cur in options.sortOptions"
:key="cur.value"
:key="'列排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -452,8 +467,8 @@
</el-col>
<!-- 优先整包 -->
<el-col :span="24">
<el-form-item label="优先整包">
<el-switch
<el-form-item key="优先整包formItem" label="优先整包">
<el-switch key="优先整包"
v-model="formData.configuration.EntirePackageFirst"
active-value="TRUE"
inactive-value="FALSE"
@ -461,14 +476,14 @@
</el-form-item>
</el-col>
<!-- 发料包装类型 -->
<el-col :span="24">
<el-form-item label="发料包装类型">
<el-col key="发料包装类型col" :span="24">
<el-form-item key="发料包装类型formItem" label="发料包装类型">
<div class="checkbox">
<el-radio-group v-model="formData.configuration.IssueStorageType">
<el-radio-group key="发料包装类型" v-model="formData.configuration.IssueStorageType">
<el-radio
:label="cur.value"
v-for="cur in getStrDictOptions(DICT_TYPE.STORAGE_TYPE)"
:key="cur.value"
:key="'发料包装类型'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -476,9 +491,9 @@
</el-form-item>
</el-col>
<!-- 多次发料 -->
<el-col :span="7">
<el-form-item label="多次发料">
<el-switch
<el-col key="多次发料col" :span="7">
<el-form-item key="多次发料formItem" label="多次发料">
<el-switch key="多次发料"
v-model="formData.configuration.IsSplit"
active-value="TRUE"
inactive-value="FALSE"
@ -486,9 +501,9 @@
</el-form-item>
</el-col>
<!-- 拆分次数 -->
<el-col :span="8">
<el-form-item label="拆分次数" label-width="70px">
<el-input-number
<el-col key="拆分次数col" :span="8">
<el-form-item key="拆分次数formItem" label="拆分次数" label-width="70px">
<el-input-number key="拆分次数"
v-model="formData.configuration.EachTimeQty"
:min="0"
controls-position="right"
@ -496,9 +511,9 @@
</el-form-item>
</el-col>
<!-- 时间间隔 -->
<el-col :span="9">
<el-form-item label="时间间隔" label-width="70px">
<el-input-number
<el-col key="时间间隔col" :span="9">
<el-form-item key="时间间隔formItem" label="时间间隔" label-width="70px">
<el-input-number key="时间间隔"
v-model="formData.configuration.TimeInterval"
:min="0"
style="flex: 1; margin-right: 10px"
@ -507,9 +522,9 @@
</el-form-item>
</el-col>
<!-- 使用整理库位-->
<el-col :span="24">
<el-form-item label="使用整理库位">
<el-switch
<el-col key="使用整理库位col" :span="24">
<el-form-item key="使用整理库位formItem" label="使用整理库位">
<el-switch key="使用整理库位"
v-model="formData.configuration.UseOrganizeLocation"
active-value="TRUE"
inactive-value="FALSE"
@ -517,9 +532,9 @@
</el-form-item>
</el-col>
<!-- 使用在途库位 -->
<el-col :span="24">
<el-form-item label="使用在途库位">
<el-switch
<el-col key="使用在途库位col" :span="24">
<el-form-item key="使用在途库位formItem" label="使用在途库位">
<el-switch key="使用在途库位"
v-model="formData.configuration.UseTransportLocation"
active-value="TRUE"
inactive-value="FALSE"
@ -527,9 +542,9 @@
</el-form-item>
</el-col>
<!-- 生成接收任务 -->
<el-col :span="24">
<el-form-item label="生成接收任务">
<el-switch
<el-col key="生成接收任务col" :span="24">
<el-form-item key="生成接收任务formItem" label="生成接收任务">
<el-switch key="生成接收任务"
v-model="formData.configuration.CreateReceiptJob"
active-value="TRUE"
inactive-value="FALSE"
@ -672,6 +687,7 @@ const options = reactive({
],
//
supplierList: [],
originSupplierList: [],
//
itemTypeOptions: [
{ value: 'ItemType', label: '物料类型' },
@ -694,6 +710,7 @@ const options = reactive({
{ value: 'LocationCode', label: '库位' }
],
warehouseList: [],
originWarehouseList: [],
//
sortOptions: [
{ value: 'ASC', label: '从小到大' },
@ -719,11 +736,26 @@ const buttonBaseClick = (val, item) => {
//
const getFormSupplierList = async () => {
options.supplierList = await getSupplierList()
options.originSupplierList = await getSupplierList(null)
options.supplierList = [...options.originSupplierList]
}
//
const getFormCustomerList = async () => {
options.supplierList = await getCustomerList()
options.originSupplierList = await getCustomerList(null)
options.supplierList = [...options.originSupplierList]
}
const filterMethod = (query: string) => {
if (query) {
options.supplierList = options.originSupplierList.filter((item) => {
if(!item.name||item.name==''){
return item.code.includes(query)
}else{
return item.name.includes(query)
}
})
} else {
options.supplierList = [...options.originSupplierList]
}
}
//
const changeSupplierCustomer = (e) => {
@ -745,19 +777,64 @@ const changeCalculation = () => {
}
//
const getFormWarehouseList = async () => {
options.warehouseList = await getWarehouseList()
const loading = ElLoading.service({
lock: true,
text: t('ts.加载中'),
background: 'rgba(0, 0, 0, 0.7)',
})
options.originWarehouseList = await getWarehouseList()
options.warehouseList = [...options.originWarehouseList]
nextTick(()=>{
loading.close()
})
}
//
const getFormAreaList = async () => {
options.warehouseList = await getAreaList()
const loading = ElLoading.service({
lock: true,
text: t('ts.加载中'),
background: 'rgba(0, 0, 0, 0.7)',
})
options.originWarehouseList = await getAreaList()
options.warehouseList = [...options.originWarehouseList]
nextTick(()=>{
loading.close()
})
}
//
const getFormLocationgrouList = async () => {
options.warehouseList = await getLocationgroupList()
const loading = ElLoading.service({
lock: true,
text: t('ts.加载中'),
background: 'rgba(0, 0, 0, 0.7)',
})
options.originWarehouseList = await getLocationgroupList()
options.warehouseList = [...options.originWarehouseList]
nextTick(()=>{
loading.close()
})
}
//
const getFormLocationList = async () => {
options.warehouseList = await getLocationList()
const loading = ElLoading.service({
lock: true,
text: t('ts.加载中'),
background: 'rgba(0, 0, 0, 0.7)',
})
options.originWarehouseList = await getLocationList()
options.warehouseList = [...options.originWarehouseList]
nextTick(()=>{
loading.close()
})
}
const filterMethodWarehouseList = (query: string) => {
if (query) {
options.warehouseList = options.originWarehouseList.filter((item) => {
return item.code.includes(query)
})
} else {
options.warehouseList = options.originWarehouseList
}
}
getFormWarehouseList()
// ///

Loading…
Cancel
Save