Browse Source

WMS->基础数据管理->策略设置->上架策略 新增时选择供应商,无法筛选只能下拉查找,同时该页面按钮反应时间过长

master_hella_20240701
yufei0306 6 months ago
parent
commit
6e9d3cc410
  1. 3
      src/locales/en-US.ts
  2. 3
      src/locales/zh-CN.ts
  3. 259
      src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue

3
src/locales/en-US.ts

@ -1060,7 +1060,8 @@ export default {
:'Tip',
:'voucher number',
:'Purchasing price approver',
:'Supplier\'s invoice number'
:'Supplier\'s invoice number',
:'loading',
},

3
src/locales/zh-CN.ts

@ -1060,7 +1060,8 @@ export default {
:'提示',
:'凭证号',
:'采购价格审批人',
:'供应商发货单号'
:'供应商发货单号',
:'加载中',
},

259
src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue

@ -15,7 +15,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="代码" prop="strategyCode">
<el-input
<el-input key="strategyCode"
v-model="formData.strategyCode"
placeholder="请输入代码"
clearable
@ -25,36 +25,35 @@
</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>
</div>
<!-- 规则条件 -->
<div class="item mt-20px">
<div class="title">规则条件</div>
<el-row>
<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">
<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"
@ -63,11 +62,11 @@
<el-option
:label="cur.label"
:value="cur.value"
v-for="(cur, index) in options.typeOptions"
:key="index"
v-for="cur in options.typeOptions"
:key="'供应商和客户'+cur.value"
/>
</el-select>
<el-select
<el-select key="供应商和客户Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
@ -76,28 +75,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 +108,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 +120,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 +134,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 +150,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 +178,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 +189,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 +201,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 +214,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 +224,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 +237,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 +254,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 +267,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 +284,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,13 +299,13 @@
</div>
<!-- 规则配置 -->
<div class="item mt-20px">
<div class="title">规则配置</div>
<el-row>
<div key="规则配置" class="item mt-20px">
<div key="规则配置title" class="title">规则配置</div>
<el-row key="规则配置row">
<!-- 仓库 库区 库位组 库位 -->
<el-col :span="24">
<el-form-item label="" label-width="0" prop="warehouse" class="err-120">
<el-select
<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"
@ -314,19 +315,22 @@
:label="cur.label"
:value="cur.value"
v-for="(cur, index) in options.warehouseTypeOptions"
:key="index"
:key="'仓库'+cur.value"
/>
</el-select>
<el-select
</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"
v-for="(cur, index) in options.warehouseList"
:key="'请选择仓库WarehouseCode'+index+cur.code"
:label="cur.code"
:value="cur.code"
/>
@ -335,12 +339,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"
/>
@ -349,12 +356,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"
/>
@ -364,12 +374,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"
/>
@ -377,9 +390,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.EmptyLocationFirst"
active-value="TRUE"
inactive-value="FALSE"
@ -387,9 +400,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.NotEmptyLocationFirst"
active-value="TRUE"
inactive-value="FALSE"
@ -397,9 +410,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.EnableMixItem"
active-value="TRUE"
inactive-value="FALSE"
@ -407,9 +420,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.EnableMixLot"
active-value="TRUE"
inactive-value="FALSE"
@ -417,8 +430,8 @@
</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="可以混状态">
<el-switch
v-model="formData.configuration.EnableMixStatus"
active-value="TRUE"
@ -427,14 +440,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 getStrDictOptions(DICT_TYPE.BATCH_DIRECTION)"
:key="cur.value"
:key="'巷道排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -442,29 +455,29 @@
</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 getStrDictOptions(DICT_TYPE.BATCH_DIRECTION)"
:key="cur.value"
:key="'货架排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
</div>
</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 getStrDictOptions(DICT_TYPE.BATCH_DIRECTION)"
:key="cur.value"
:key="'行排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -472,14 +485,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 getStrDictOptions(DICT_TYPE.BATCH_DIRECTION)"
:key="cur.value"
:key="'列排序方向'+cur.value"
>{{ cur.label }}</el-radio
>
</el-radio-group>
@ -518,9 +531,9 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formRef = ref() // Ref
const formStrategyCode = ref('')
//
const warehouseType = ref('WarehouseCode')
@ -615,6 +628,7 @@ const options = reactive({
],
//
supplierList: [],
orignSupplierList: [],
//
itemTypeOptions: [
{ value: 'ItemType', label: '物料类型' },
@ -638,7 +652,8 @@ const options = reactive({
{ value: 'LocationCode', label: '库位' }
],
//
warehouseList: []
warehouseList: [],
originWarehouseList: []
})
//
const Butttondata = ref([
@ -658,12 +673,24 @@ const buttonBaseClick = (val, item) => {
}
//
const getFormSupplierList = async () => {
options.supplierList = await getSupplierList()
options.orignSupplierList = await getSupplierList()
options.supplierList = [...options.orignSupplierList]
}
//
const getFormCustomerList = async () => {
options.supplierList = await getCustomerList()
options.supplierList = [...options.orignSupplierList]
}
const filterMethod = (query: string) => {
if (query) {
options.supplierList = options.orignSupplierList.filter((item) => {
return item.name.includes(query)
})
} else {
options.supplierList = []
}
}
//
const changeSupplierCustomer = (e) => {
formData.value.condition[0].Value = ''
@ -684,21 +711,42 @@ const changeCalculation = () => {
}
//
const getFormWarehouseList = async () => {
options.warehouseList = await getWarehouseList()
options.originWarehouseList = await getWarehouseList()
options.warehouseList = [...options.originWarehouseList]
}
//
const getFormAreaList = async () => {
options.warehouseList = await getAreaList()
options.originWarehouseList = await getAreaList()
options.warehouseList = [...options.originWarehouseList]
}
//
const getFormLocationgrouList = async () => {
options.warehouseList = await getLocationgroupList()
options.originWarehouseList = await getLocationgroupList()
options.warehouseList = [...options.originWarehouseList]
}
//
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 = []
}
}
getFormLocationList()
// ///
const changeWarehouse = (e) => {
formData.value.configuration.WarehouseCode = ''
@ -717,11 +765,14 @@ const changeWarehouse = (e) => {
}
/** 打开弹窗 */
const open = async (type: string, strategyCode: string, id?: number) => {
formStrategyCode.value = strategyCode
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
warehouseType.value = 'WarehouseCode'
getFormWarehouseList()
resetForm()
//
if (id) {
@ -798,6 +849,8 @@ const open = async (type: string, strategyCode: string, id?: number) => {
defaultButtons.formCloseBtn(null) //
]
}
}
defineExpose({ open }) // open

Loading…
Cancel
Save