Browse Source

功能变更的上架策略

intex_online20241228
王宇飞 3 months ago
parent
commit
4486f056b4
  1. 282
      src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue

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

@ -53,6 +53,69 @@
<el-col key="供应商和客户col" :span="24" v-for="(item, index) in formData.condition" :key="'规则条件'+index">
<!-- 选择供应商和客户 -->
<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"
>
<el-option
:label="cur.label"
:value="cur.value"
v-for="(cur, index) in options.warehouseTypeOptions"
:key="'仓库'+cur.value"
/>
</el-select>
<el-select key="供应商和客户Operator"
v-model="item.Operator"
placeholder="请选择范围"
style="width: 110px; margin-right: 10px"
:disabled="formData.name=='默认规则'&&formType=='update'"
>
<el-option
:label="cur.label"
:value="cur.value"
v-for="cur in options.rangeOptions1"
:key="'供应商和客户Operator'+cur.value"
/>
</el-select>
<!-- 仓库 -->
<el-input style="flex:1" v-show="item.ParamCode == 'WarehouseCode'" placeholder="请选择仓库" v-model="item.Value" @blur="blurWarehouse({module:'condition',type:'WarehouseCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'condition',type:'WarehouseCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库区 -->
<el-input style="flex:1" v-show="item.ParamCode == 'AreaCode'" placeholder="请选择库区" v-model="item.Value" @blur="blurWarehouse({module:'condition',type:'AreaCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'condition',type:'AreaCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库位组 -->
<el-input style="flex:1" v-show="item.ParamCode == 'LocationGroupCode'" placeholder="请选择库位组" v-model="item.Value" @blur="blurWarehouse({module:'condition',type:'LocationGroupCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'condition',type:'LocationGroupCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库位 -->
<el-input style="flex:1" v-show="item.ParamCode == 'LocationCode'" placeholder="请选择库位" v-model="item.Value" @blur="blurWarehouse({module:'condition',type:'LocationCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'condition',type:'LocationCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
</el-form-item>
<!-- 选择供应商和客户 -->
<!-- <el-form-item key="供应商和客户formItem" label="" label-width="0" class="err-240" v-if="index == 0">
<el-select key="供应商和客户"
v-model="item.ParamCode"
placeholder=""
@ -98,7 +161,7 @@
:value="cur.code"
/>
</el-select>
</el-form-item>
</el-form-item> -->
<!-- 选择物料类型 -->
<el-form-item key="物料类型formItem" label="" label-width="0" class="err-240" v-if="index == 1">
<el-select key="物料类型"
@ -188,7 +251,7 @@
/>
</el-form-item>
<!-- 选择重量体积还是面积 -->
<el-form-item key="重量体积或面积formItem" label="" label-width="0" class="err-240" v-if="index == 2">
<!-- <el-form-item key="重量体积或面积formItem" label="" label-width="0" class="err-240" v-if="index == 2">
<el-select key="重量体积或面积"
v-model="item.ParamCode"
placeholder=""
@ -225,9 +288,9 @@
style="flex: 1"
:disabled="formData.name=='默认规则'&&formType=='update'"
/>
</el-form-item>
</el-form-item> -->
<!-- 库存状态 -->
<el-form-item key="库存状态formItem" label="库存状态" class="err-120" v-if="index == 3">
<!-- <el-form-item key="库存状态formItem" label="库存状态" class="err-120" v-if="index == 3">
<el-select key="库存状态Operator"
v-model="item.Operator"
placeholder="请选择范围"
@ -257,9 +320,9 @@
:value="cur.value"
/>
</el-select>
</el-form-item>
</el-form-item> -->
<!-- 存储类型 -->
<el-form-item key="存储类型formItem" label="存储类型" class="err-120" v-if="index == 4">
<!-- <el-form-item key="存储类型formItem" label="存储类型" class="err-120" v-if="index == 4">
<el-select key="存储类型Operator"
v-model="item.Operator"
placeholder="请选择范围"
@ -289,7 +352,7 @@
:value="cur.value"
/>
</el-select>
</el-form-item>
</el-form-item> -->
<!-- 库存事务 -->
<!-- <el-form-item key="库存事务formItem" label="库存事务" class="err-120" v-if="index == 5">
<el-select key="库存事务Operator"
@ -314,7 +377,7 @@
</el-input>
</el-form-item> -->
<!-- 业务类型 -->
<el-form-item key="业务类型formItem" label="业务类型" class="err-120" v-if="index == 5">
<el-form-item key="业务类型formItem" label="业务类型" class="err-120" v-if="index == 2">
<el-select key="业务类型Operator"
v-model="item.Operator"
placeholder="请选择范围"
@ -373,36 +436,36 @@
<!-- 仓库 -->
<el-input style="flex:1" v-show="warehouseType == 'WarehouseCode'" placeholder="请选择仓库" v-model="formData.configuration.WarehouseCode" @blur="blurWarehouse">
<el-input style="flex:1" v-show="warehouseType == 'WarehouseCode'" placeholder="请选择仓库" v-model="formData.configuration.WarehouseCode" @blur="blurWarehouse({module:'config',type:'WarehouseCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse">
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'config',type:'WarehouseCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库区 -->
<el-input style="flex:1" v-show="warehouseType == 'AreaCode'" placeholder="请选择库区" v-model="formData.configuration.AreaCode" @blur="blurWarehouse">
<el-input style="flex:1" v-show="warehouseType == 'AreaCode'" placeholder="请选择库区" v-model="formData.configuration.AreaCode" @blur="blurWarehouse({module:'config',type:'AreaCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse">
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'config',type:'AreaCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库位组 -->
<el-input style="flex:1" v-show="warehouseType == 'LocationGroupCode'" placeholder="请选择库位组" v-model="formData.configuration.LocationGroupCode" @blur="blurWarehouse">
<el-input style="flex:1" v-show="warehouseType == 'LocationGroupCode'" placeholder="请选择库位组" v-model="formData.configuration.LocationGroupCode" @blur="blurWarehouse({module:'config',type:'LocationGroupCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse">
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'config',type:'LocationGroupCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
</el-input>
<!-- 库位 -->
<el-input style="flex:1" v-show="warehouseType == 'LocationCode'" placeholder="请选择库位" v-model="formData.configuration.LocationCode" @blur="blurWarehouse">
<el-input style="flex:1" v-show="warehouseType == 'LocationCode'" placeholder="请选择库位" v-model="formData.configuration.LocationCode" @blur="blurWarehouse({module:'config',type:'LocationCode'})">
<template #suffix>
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse">
<el-button type="text" plain style="color:var(--el-button-text-color)" @click="searchWarehouse({module:'config',type:'LocationCode'})">
<Icon icon="ep:search" class="mr-5px" />
</el-button>
</template>
@ -566,7 +629,7 @@
</el-form-item>
</el-col>
<!-- 货架排序方向 -->
<el-col key="货架排序方向col" :span="24">
<!-- <el-col key="货架排序方向col" :span="24">
<el-form-item key="货架排序方向formItem" label="货架排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group key="货架排序方向" v-model="formData.configuration.ShelfOrder">
@ -579,9 +642,9 @@
</el-radio-group>
</div>
</el-form-item>
</el-col>
</el-col> -->
<!-- 行排序方向 -->
<el-col key="行排序方向col" :span="24">
<!-- <el-col key="行排序方向col" :span="24">
<el-form-item key="行排序方向formItem" label="行排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group key="行排序方向" v-model="formData.configuration.RowOrder">
@ -594,9 +657,9 @@
</el-radio-group>
</div>
</el-form-item>
</el-col>
</el-col> -->
<!-- 列排序方向 -->
<el-col key="列排序方向col" :span="24">
<!-- <el-col key="列排序方向col" :span="24">
<el-form-item key="列排序方向formItem" label="列排序方向" class="flex-top">
<div class="checkbox">
<el-radio-group key="列排序方向" v-model="formData.configuration.ColumOrder">
@ -609,7 +672,7 @@
</el-radio-group>
</div>
</el-form-item>
</el-col>
</el-col> -->
</el-row>
</div>
</el-form>
@ -674,16 +737,18 @@ const formData = ref({
status: true, //
//
condition: [
//
{ ParamCode: 'SupplierCode', Operator: 'IN', Value: '' },
//
{ ParamCode: 'WarehouseCode', Operator: 'IN', Value: '' },
// //
// { ParamCode: 'SupplierCode', Operator: 'IN', Value: '' },
// ///abc//
{ ParamCode: 'ItemType', Operator: 'IN', Value: '' },
// //
{ ParamCode: 'Weight', Operator: '>', Value: [] },
//
{ ParamCode: 'InventoryStatus', Operator: 'IN', Value: [] },
//
{ ParamCode: 'StorageType', Operator: 'IN', Value: [] },
// // //
// { ParamCode: 'Weight', Operator: '>', Value: [] },
// //
// { ParamCode: 'InventoryStatus', Operator: 'IN', Value: [] },
// //
// { ParamCode: 'StorageType', Operator: 'IN', Value: [] },
// //
{ ParamCode: 'TransactionType', Operator: 'IN', Value: '' },
],
@ -893,10 +958,11 @@ const filterMethodWarehouseList = (query: string) => {
const searchTableRef = ref()
const searchWarehouse = ()=>{
if(warehouseType.value == 'WarehouseCode'){
const searchTableModule = ref('') // 条件 / 配置
const searchWarehouse = ({module='config',type})=>{
searchTableModule.value = module
// module: config condition
if( module=='condition'&&type=='WarehouseCode' || module=='config'&&warehouseType.value == 'WarehouseCode'){
//
searchTableRef.value.open(
'请选择仓库',
@ -909,7 +975,7 @@ const searchWarehouse = ()=>{
undefined,
undefined
)
}else if(warehouseType.value == 'AreaCode'){
}else if(module=='condition'&&type=='AreaCode' || module=='config'&&warehouseType.value == 'AreaCode'){
searchTableRef.value.open(
'请选择库区',
Area.allSchemas,
@ -922,7 +988,7 @@ const searchWarehouse = ()=>{
undefined
)
}else if(warehouseType.value == 'LocationGroupCode'){
}else if(module=='condition'&&type=='LocationGroupCode' || module=='config'&&warehouseType.value == 'LocationGroupCode'){
searchTableRef.value.open(
'请选择库位组',
@ -936,7 +1002,7 @@ const searchWarehouse = ()=>{
undefined
)
}else if(warehouseType.value == 'LocationCode'){
}else if(module=='condition'&&type=='LocationCode' || module=='config'&&warehouseType.value == 'LocationCode'){
searchTableRef.value.open(
'请选择库位',
Location.allSchemas,
@ -952,75 +1018,79 @@ const searchWarehouse = ()=>{
}
}
const blurWarehouse = async ()=>{
const blurWarehouse = async ({module='config',type})=>{
//
let warehouseValue = formData.value.configuration[warehouseType.value]
let conditionObj = null
if(module=='condition'){
//
conditionObj = formData.value.condition.find(item=>item['ParamCode']==type)
if(conditionObj){
warehouseValue = conditionObj['Value']
}
// { value: 'WarehouseCode', label: '' },
// { value: 'AreaCode', label: '' },
// { value: 'LocationGroupCode', label: '' },
// { value: 'LocationCode', label: '' }
}
if(!warehouseValue){
return
}
if(warehouseType.value == 'WarehouseCode'){
let verifyRes = []
if(module=='condition'&&type=='WarehouseCode' || module=='config'&&warehouseType.value == 'WarehouseCode'){
//
let verifyRes = await WarehouseApi.verifyWarehouse({
verifyRes = await WarehouseApi.verifyWarehouse({
code:warehouseValue
})
console.log('仓库verifyRes',verifyRes)
if(verifyRes&&verifyRes.length>0){
// formData.value.configuration[warehouseType.value] = verifyRes.map(item=>(item['code'])).join(',')
let verifyList = verifyRes.map(item=>(item['code']))
let codeList = formData.value.configuration[warehouseType.value].split(',')
formData.value.configuration[warehouseType.value] = codeList.filter(item=>verifyList.indexOf(item)>-1).join(',')
}else{
formData.value.configuration[warehouseType.value] = ''
}
}else if(warehouseType.value == 'AreaCode'){
}else if(module=='condition'&&type=='AreaCode' || module=='config'&&warehouseType.value == 'AreaCode'){
//
let verifyRes = await AreaApi.verifyAreaList({
verifyRes = await AreaApi.verifyAreaList({
code:warehouseValue
})
console.log('库区verifyRes',verifyRes)
if(verifyRes&&verifyRes.length>0){
let verifyList = verifyRes.map(item=>(item['code']))
let codeList = formData.value.configuration[warehouseType.value].split(',')
formData.value.configuration[warehouseType.value] = codeList.filter(item=>verifyList.indexOf(item)>-1).join(',')
}else{
formData.value.configuration[warehouseType.value] = ''
}
}else if(warehouseType.value == 'LocationGroupCode'){
}else if(module=='condition'&&type=='LocationGroupCode' || module=='config'&&warehouseType.value == 'LocationGroupCode'){
//
let verifyRes = await LocationgroupApi.verifyLocationgroup({
code:warehouseValue
})
console.log('库位组verifyRes',verifyRes)
if(verifyRes&&verifyRes.length>0){
let verifyList = verifyRes.map(item=>(item['code']))
let codeList = formData.value.configuration[warehouseType.value].split(',')
formData.value.configuration[warehouseType.value] = codeList.filter(item=>verifyList.indexOf(item)>-1).join(',')
}else{
formData.value.configuration[warehouseType.value] = ''
}
}else if(warehouseType.value == 'LocationCode'){
}else if(module=='condition'&&type=='LocationCode' || module=='config'&&warehouseType.value == 'LocationCode'){
//
let verifyRes = await LocationApi.verifyLocation({
code:warehouseValue
})
console.log('库位verifyRes',verifyRes)
if(verifyRes&&verifyRes.length>0){
let verifyList = verifyRes.map(item=>(item['code']))
}
if(verifyRes&&verifyRes.length>0){
let verifyList = verifyRes.map(item=>(item['code']))
if(module=='condition'){
//
let codeList = warehouseValue.split(',')
conditionObj['Value'] = codeList.filter(item=>verifyList.indexOf(item)>-1).join(',')
}else{
//
let codeList = formData.value.configuration[warehouseType.value].split(',')
formData.value.configuration[warehouseType.value] = codeList.filter(item=>verifyList.indexOf(item)>-1).join(',')
}
}else{
if(module=='condition'){
//
conditionObj['Value'] = ''
}else{
formData.value.configuration[warehouseType.value] = ''
}
}
let fields = ['WarehouseCode','AreaCode','LocationGroupCode','LocationCode']
fields.forEach(item=>{
if(item!=warehouseType.value){
formData.value.configuration[item] = ''
}
})
if(module!='condition'){
let fields = ['WarehouseCode','AreaCode','LocationGroupCode','LocationCode']
fields.forEach(item=>{
if(item!=warehouseType.value){
formData.value.configuration[item] = ''
}
})
}
}
//
const searchBusinessType = ()=>{
@ -1085,14 +1155,24 @@ const searchTableSuccess = (formField, searchField, val, type, row) => {
businessType.Value = val.map(item=>(item['code'])).join(',')
}
return
}else if(searchTableModule.value == 'condition'){
// module: config condition
//
let conditionObj = formData.value.condition.find(item=>['WarehouseCode','AreaCode','LocationGroupCode','LocationCode'].includes(item['ParamCode']))
conditionObj['Value'] = val.map(item=>(item['code'])).join(',')
}else{
//
//
formData.value.configuration[warehouseType.value] = val.map(item=>(item['code'])).join(',')
let fields = ['WarehouseCode','AreaCode','LocationGroupCode','LocationCode']
fields.forEach(item=>{
if(item!=warehouseType.value){
formData.value.configuration[item] = ''
}
})
}
formData.value.configuration[warehouseType.value] = val.map(item=>(item['code'])).join(',')
let fields = ['WarehouseCode','AreaCode','LocationGroupCode','LocationCode']
fields.forEach(item=>{
if(item!=warehouseType.value){
formData.value.configuration[item] = ''
}
})
}
// ///
const changeWarehouse = (e) => {
@ -1160,12 +1240,12 @@ const open = async (type: string, strategyCode: string, id?: number) => {
}
}
//
if (formData.value.condition[0].ParamCode == 'SupplierCode') {
getFormSupplierList()
} else {
getFormCustomerList()
}
// //
// if (formData.value.condition[0].ParamCode == 'SupplierCode') {
// getFormSupplierList()
// } else {
// getFormCustomerList()
// }
// ///
if (
'WarehouseCode' in formData.value.configuration &&
@ -1210,7 +1290,7 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
let TransactionType = formData.value.condition[5]['Value']
let TransactionType = formData.value.condition[2]['Value']
if(Array.isArray(TransactionType)){
TransactionType = TransactionType.join(',')
}
@ -1241,7 +1321,7 @@ const submitForm = async () => {
return
}
}
await blurWarehouse()
await blurWarehouse({module:'config',type:warehouseType.value})
// await blurTransactionType()
if(warehouseType.value == 'WarehouseCode' && !formData.value.configuration.WarehouseCode){
//
@ -1332,16 +1412,18 @@ const resetForm = () => {
status: true, //
//
condition: [
//
{ ParamCode: 'SupplierCode', Operator: 'IN', Value: '' },
//
{ ParamCode: 'WarehouseCode', Operator: 'IN', Value: '' },
// //
// { ParamCode: 'SupplierCode', Operator: 'IN', Value: '' },
// ///abc//
{ ParamCode: 'ItemType', Operator: 'IN', Value: '' },
// ///
{ ParamCode: 'Weight', Operator: '>', Value: [] },
//
{ ParamCode: 'InventoryStatus', Operator: 'IN', Value: [] },
//
{ ParamCode: 'StorageType', Operator: 'IN', Value: [] },
// // ///
// { ParamCode: 'Weight', Operator: '>', Value: [] },
// //
// { ParamCode: 'InventoryStatus', Operator: 'IN', Value: [] },
// //
// { ParamCode: 'StorageType', Operator: 'IN', Value: [] },
// //
{ ParamCode: 'TransactionType', Operator: 'IN', Value: '' },
],

Loading…
Cancel
Save