Browse Source

Merge remote-tracking branch 'origin/master_hella' into master_hella

master_hella_20240701
TengXF 6 months ago
parent
commit
56074d5bd8
  1. 5
      src/api/wms/purchasereturnRequestMain/index.ts
  2. 3
      src/locales/en-US.ts
  3. 3
      src/locales/zh-CN.ts
  4. 255
      src/views/wms/basicDataManage/strategySetting/strategy/upShelfStrategy/AddForm.vue
  5. 1
      src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/index.vue
  6. 134
      src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRequestMain/index.vue
  7. 267
      src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRequestMain/purchasereturnRequestMain.data.ts

5
src/api/wms/purchasereturnRequestMain/index.ts

@ -107,3 +107,8 @@ export const refusedPurchasereturnRequestMain = async (id) => {
export const handlePurchasereturnRequestMain = async (id) => {
return await request.put({ url: `/wms/purchasereturn-request-main/handle?id=` + id })
}
// 生成标签
export const genLabel = async (data) => {
return await request.post({ url: `/wms/purchasereturn-request-main/genLabel`, data })
}

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 {
:'提示',
:'凭证号',
:'采购价格审批人',
:'供应商发货单号'
:'供应商发货单号',
:'加载中',
},

255
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
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

1
src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/index.vue

@ -110,7 +110,6 @@
:isShowReduceButton="false"
@submitForm="submitFormLabel"
@searchTableSuccess="searchTableSuccessLabel"
/>
<!-- 子包装弹窗 -->

134
src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRequestMain/index.vue

@ -85,6 +85,21 @@
:detailValidate="detailValidate"
/>
<!-- 创建标签 -->
<BasicForm
ref="formLabelRef"
@success="getList"
:tableAllSchemas="PurchasereReturnRequestDetailLabel.allSchemas"
:tableFormRules="PurchasereturnRequestDetailRules"
:tableData="detatableData.tableList"
:isBusiness="true"
:isShowButton="false"
:isShowReduceButton="false"
@submitForm="submitFormLabel"
@searchTableSuccess="searchTableSuccessLabel"
/>
<!-- 标签打印 -->
<SearchTable style="width:905px" ref="showLabelRef" @searchTableSuccess="showLabelSuccess" />
<!-- 导入 -->
<ImportForm
ref="importFormRef"
@ -104,20 +119,25 @@ import {
PurchasereturnRequestMain,
PurchasereturnRequestMainRules,
PurchasereturnRequestDetail,
PurchasereturnRequestDetailRules
PurchasereturnRequestDetailRules,
PurchasereReturnRequestDetailLabel
} from './purchasereturnRequestMain.data'
import * as PurchasereturnRequestMainApi from '@/api/wms/purchasereturnRequestMain'
import * as PurchasereturnRequestDetailApi from '@/api/wms/purchasereturnRequestDetail'
import * as PurchasereceiptRecordDetailApi from '@/api/wms/purchasereceiptRecordDetail'
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import {
SupplierdeliverRequestPackage
} from '../../supplierdeliver/supplierdeliverRequestMain/supplierdeliverRequestMain.data'
import * as PackageApi from '@/api/wms/package'
import { getAccessToken } from '@/utils/auth'
// 退
defineOptions({ name: 'PurchasereturnRequestMain' })
const message = useMessage() //
const { t } = useI18n() //
const genLabelId = ref(); //ID
const route = useRoute() //
const routeName = ref()
routeName.value = route.name
@ -138,6 +158,45 @@ const onEnter = async (field,value)=>{
}
}
//
const isCreateLabel = ref(false)
const formLabelRef = ref()
const { tableObject: detatableData, tableMethods: detatableMethods } =useTable({
getListApi: PurchasereturnRequestDetailApi.getPurchasereturnRequestDetailPage
})
const { getList:getDetailList } = detatableMethods
//
const submitFormLabel = async (formType, data) => {
try {
console.log("formType==",formType)
console.log("data==",data)
data.subList = detatableData.tableList
console.log("detatableData",detatableData)
await message.confirm(t('ts.是否为此数据生成标签?'))
await PurchasereturnRequestMainApi.genLabel(data) //genLabelId.value
isCreateLabel.value = true
message.success('创建标签成功')
} finally {
formLabelRef.value.formLoading = false
formLabelRef.value.dialogVisible = false
}
}
//
const searchTableSuccessLabel = (formField, searchField, val, formRef, type, row) => {
nextTick(() => {
if (type == 'tableForm') {
//
row[formField] = val[0][searchField]
if (formField == 'packUnit' || formField == 'packQty') {
row['packUnit'] = val[0]['packUnit']
row['packQty'] = val[0]['packQty']
}
}
})
}
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row) => {
nextTick(() => {
@ -195,8 +254,6 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row) =>
if(formField == 'purchaseReceiptRecordNumber'){
// isShowButton.value = false
setV[formField] = val[0][searchField]
console.log(333333,val[0]);
setV['purchaseReceiptRecordNumber'] = val[0]['number']
setV['supplierCode'] = val[0]['supplierCode']
setV['asnNumber'] = val[0]['asnNumber']
@ -209,7 +266,6 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row) =>
if (res) tableData.value = res
tableData.value.forEach((item) => {
item.batch = item.toBatch
item.packingNumber = item.toPackingNumber
item.containerNumber = item.toContainerNumber
item.receiptQty = item.qty
@ -413,7 +469,18 @@ const butttondata = (row,$index) => {
defaultButtons.mainListEditBtn({
hide: isShowMainButton(row, ['1']),
hasPermi: 'wms:purchasereceipt-request-main:update'
}) //
}), //
{
label: '生成标签',
name: 'ssbq',
hide: isShowMainButton(row, ['3']),
type: 'primary',
icon: '',
color: '',
hasPermi: '',
link: true //
},
defaultButtons.mainListPointBtn({ hide: isShowMainButton(row, ['3','6']) }), //
]
}
@ -440,6 +507,17 @@ const buttonTableClick = async (val, row) => {
} else if (val == 'edit') {
//
openForm('update', row)
} else if(val == 'ssbq'){
//
detatableData.params = {
masterId:row.masterId
}
genLabelId.value = row.masterId
await getDetailList()
formLabelRef.value.open('create', row, null,'createLabel')// createLabel
} else if (val == 'point') {
//
labelPrint(row)
}
}
@ -814,6 +892,48 @@ const detailOpenForm = (type, row) =>{
})
}
const BASE_URL = import.meta.env.VITE_JMREPORT_BASE_URL
const src = ref(BASE_URL + '/jmreport/view/922729953438072832?token=' + getAccessToken())
//
const showLabelRef = ref()
const labelPrint = async (row) => {
tableObject.loading = true
const defaultParams = {'moduleName':'supplier','recordNumber':row.number}
const {tableObject:tableObjectPrint ,tableMethods} = useTable({
defaultParams,
getListApi: PackageApi.getLabelDetailPage //
})
//
const { getList:getListPrint } = tableMethods
getListPrint()
tableObject.loading = false
const tableColumns = SupplierdeliverRequestPackage.allSchemas.tableFormColumns
tableColumns.forEach((item) => {
item.width = item.table?.width || 150
})
showLabelRef.value.openData("标签信息",tableObjectPrint,{tableColumns},true)
}
// ---
const showLabelSuccess = async (formField, searchField, val, formRef, type, row) => {
console.log('批量打印',val)
if(val.length == 0){
message.warning("请先选择要打印的数据!")
return
}
await PackageApi.batchPrintingLable(val.map(item1=>item1.number).join(',')).then(res => {
console.log(res)
window.open(src.value + '&asn_number=' + res)
}).catch(err => {
console.log(err)
message.error('创建标签失败')
})
}
/** 初始化 **/
onMounted(async () => {
getList()

267
src/views/wms/purchasereceiptManage/purchasereturn/purchasereturnRequestMain/purchasereturnRequestMain.data.ts

@ -2,14 +2,12 @@ import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter,dateFormatter2 } from '@/utils/formatTime'
const { t } = useI18n() // 国际化
import * as getRequestsettingApi from '@/api/wms/requestsetting/index'
import * as PurchasereceiptRecordMainApi from '@/api/wms/purchasereceiptRecordMain'
import {
PurchasereceiptRecordDetail,
PurchasereceiptRecordMain
} from '../../purchasereceipt/purchasereceiptRecordMain/purchasereceiptRecordMain.data'
import { PurchasereceiptRecordDetail,PurchasereceiptRecordMain } from '../../purchasereceipt/purchasereceiptRecordMain/purchasereceiptRecordMain.data'
import * as PurchasereceiptRecordDetailApi from '@/api/wms/purchasereceiptRecordDetail'
import { Supplier } from "@/views/wms/basicDataManage/supplierManage/supplier/supplier.data";
import * as SupplierApi from "@/api/wms/supplier";
import { Itempackaging } from '@/views/wms/basicDataManage/itemManage/itempackage/itempackage.data'
import * as ItemPackageApi from '@/api/wms/itempackage/index'
// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值
@ -1202,3 +1200,262 @@ export const PurchasereturnRequestDetailRules = reactive({
{ max: 50, message: '不得超过50个字符', trigger: 'blur' }
],
})
export const PurchasereReturnRequestDetailLabel = useCrudSchemas(reactive<CrudSchema[]>([
{
label: '物料代码',
field: 'itemCode',
sort: 'custom',
table: {
width: 150
},
tableForm:{
disabled: true
},
form: {
componentProps: {
disabled: true
}
}
},
{
label: '物料名称',
field: 'itemName',
sort: 'custom',
table: {
width: 150
},
tableForm:{
disabled:true
},
isTableForm: true,
},
{
label: '物料描述1',
field: 'itemDesc1',
sort: 'custom',
table: {
width: 150
},
tableForm:{
disabled:true
},
isTableForm: true,
},
{
label: '物料描述2',
field: 'itemDesc2',
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false
},
{
label: '包装号',
field: 'packingNumber',
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false
},
{
label: '器具号',
field: 'containerNumber',
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false
},
{
label: '数量',
field: 'qty',
sort: 'custom',
table: {
width: 150
},
form: {
component: 'InputNumber',
componentProps: {
disabled:true,
min: 1,
precision: 6
},
},
tableForm: {
disabled:true,
type: 'InputNumber',
min: 1,
precision: 6
}
},
{
label: '计量单位',
field: 'uom',
dictType: DICT_TYPE.UOM,
dictClass: 'string',
isTable: true,
sort: 'custom',
table: {
width: 150
},
tableForm: {
type: 'Select',
disabled: true
}
},
{
label: '从库位代码',
field: 'fromLocationCode',
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false
},
{
label: '生产日期',
field: 'produceDate',
formatter: dateFormatter2,
detail: {
dateFormat: 'YYYY-MM-DD'
},
sort: 'custom',
table: {
width: 180
},
form: {
component: 'DatePicker',
componentProps: {
disabled:true,
style: {width: '100%'},
type: 'date',
dateFormat: 'YYYY-MM-DD',
valueFormat: 'x',
}
},
tableForm:{
disabled:true,
type:'FormDate',
placeholder: '请选择生产日期',
valueFormat: 'x',
},
},
{
label: '批次',
field: 'batch',
sort: 'custom',
table: {
width: 150
},
tableForm:{
disabled: true
}
},
{
label: '替代批次',
field: 'altBatch',
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false
},
{
label: '库存状态',
field: 'inventoryStatus',
dictType: DICT_TYPE.INVENTORY_STATUS,
dictClass: 'string',
isTable: true,
sort: 'custom',
table: {
width: 150
},
isTableForm: false,
isForm: false,
tableForm: {
type: 'Select'
}
},
{
label: '包装数量',
field: 'packQty',
sort: 'custom',
table: {
width: 150
},
form: {
componentProps: {
disabled: true,
isSearchList: true,
searchListPlaceholder: '请选择包装',
searchField: 'packQty',
searchTitle: '物品包装信息',
searchAllSchemas: Itempackaging.allSchemas,
searchPage: ItemPackageApi.getItempackagingPageBySupplierdeliver,
searchCondition: [
{
key: 'itemCode',
value: 'itemCode',
message: '请选择订单行',
isMainValue: true
},
{
key: 'available',
value: 'TRUE',
isMainValue: false
}
]
}
},
tableForm: {
disabled: true,
isInpuFocusShow: true,
searchListPlaceholder: '请选择包装',
searchField: 'packQty',
searchTitle: '物品包装信息',
searchAllSchemas: Itempackaging.allSchemas,
searchPage: ItemPackageApi.getItempackagingPageBySupplierdeliver,
searchCondition: [
{
key: 'itemCode',
value: 'itemCode',
message: '请选择订单行',
isMainValue: true
},
{
key: 'available',
value: 'TRUE',
isMainValue: false
}]
},
isTableForm: true,
isForm: true
},
{
label: '包装规格',
field: 'packUnit',
dictClass: 'string',
isTable: true,
sort: 'custom',
table: {
width: 150,
componentProps: {
disabled: true
}
},
tableForm:{
disabled:true
},
isTableForm: true,
isForm: true
},
]))
Loading…
Cancel
Save