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

pull/1/head
zengchenxi 9 months ago
commit 29b674fb41

@ -50,7 +50,11 @@ public class StorageMatController {
@PreAuthorize("@ss.hasPermission('heli:storage-mat:create')")
public CommonResult<Long> createStorageMat(@Valid @RequestBody List<StorageMatSaveReqVO> createReqVO) {
for (StorageMatSaveReqVO item :createReqVO){
storageMatService.createStorageMat(item);
if(item.getId() != null && item.getId()>0){
storageMatService.deleteStorageMat(item.getId());
item.setId(null);
}
storageMatService.createStorageMat(item);
};
return success(1L);
}

@ -24,9 +24,7 @@
/>
</el-form-item>
<el-form-item label="负责人" prop="leaderUserId">
<UserSelect
v-model="formData.leaderUserId"
/>
<UserSelect v-model="formData.leaderUserId" @update:newValue="handleSelectedUser" />
</el-form-item>
<!-- <el-form-item label="联系电话" prop="phone">
<el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
@ -196,9 +194,8 @@ const resetForm = () => {
// deptTree.value.push(dept)
// }
// const onValueNameChange = (newValue: number | null) => {
// formData.value.leaderUserId = newValue
// console.log(formData.value.leaderUserId)
// }
const handleSelectedUser = (newValue: any) => {
console.log('接收对应的数据:', newValue)
formData.value.leaderUserId = newValue.id
}
</script>

@ -13,11 +13,11 @@
<el-form-item label="车间" prop="workshopId">
<WorkshopSelect v-model="formData.workshopId" />
</el-form-item>
<el-form-item label="班组" prop="classesId">
<el-form-item label="班组" prop="classesId">
<ClassesSelect v-model="formData.classesId" />
</el-form-item>
<el-form-item label="职工" prop="leaderUserId">
<UserSelect v-model="formData.leaderUserId" />
<UserSelect v-model="formData.leaderUserId" @update:newValue="handleSelectedUser" />
</el-form-item>
<el-form-item label="客户" prop="clientId">
<ClientSelect v-model="formData.clientId" />
@ -28,7 +28,7 @@
<el-form-item label="材质" prop="compositionId">
<CompositionSelect v-model="formData.compositionId" />
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-form-item label="物料" prop="materialId">
<MaterialSelect v-model="formData.materialId" />
</el-form-item>
</el-form>
@ -53,7 +53,7 @@ import CompositionSelect from '../hlvuestyle/compositionSelect.vue'
import WorkshopSelect from '../hlvuestyle/workshopSelect.vue'
import MaterialSelect from '../hlvuestyle/materialSelect.vue'
import ClassesSelect from '../hlvuestyle/classesSelect.vue'
import { defineComponent } from 'vue'
defineOptions({ name: 'SystemDeptForm' })
const { t } = useI18n() //
@ -72,7 +72,7 @@ const formData: any = ref({
compositionId: undefined,
workshopId: undefined,
materialId: undefined,
classesId:undefined,
classesId: undefined,
status: CommonStatusEnum.ENABLE
})
const formRules = reactive<FormRules>({
@ -124,15 +124,15 @@ const submitForm = async () => {
const resetForm = () => {
formData.value = {
id: undefined,
parentId: undefined,
leaderUserId: undefined,
clientId: undefined,
supplierId: undefined,
compositionId: undefined,
workshopId: undefined,
materialId: undefined,
classesId:undefined,
status: CommonStatusEnum.ENABLE
parentId: undefined,
leaderUserId: undefined,
clientId: undefined,
supplierId: undefined,
compositionId: undefined,
workshopId: undefined,
materialId: undefined,
classesId: undefined,
status: CommonStatusEnum.ENABLE
}
formRef.value?.resetFields()
}
@ -145,4 +145,8 @@ const getTree = async () => {
dept.children = handleTree(data)
deptTree.value.push(dept)
}
const handleSelectedUser = (newValue: any) => {
console.log('接收对应的数据:', newValue)
formData.value.leaderUserId = newValue.id
}
</script>

@ -22,7 +22,7 @@
</template>
<script lang="ts" setup>
import { ref, onMounted, toRefs } from 'vue'
import { ref, onMounted, toRefs,computed } from 'vue'
import * as UserApi from '@/api/system/user'
interface UserVO {
@ -37,7 +37,9 @@ const props = defineProps({
}
})
const valueName: any = ref() //
// const emit = defineEmits(['update:valueName'])
const valueNameObject:any = ref(); //
const emit = defineEmits(['update:newValue'])
const userList = ref<UserApi.UserVO[]>([]) //
const userSelectList = ref<UserApi.UserVO[]>([])
const userSelectLoading = ref(false)
@ -64,21 +66,23 @@ const remoteMethod = (query: any) => {
userSelectLoading.value = true
setTimeout(() => {
userSelectLoading.value = false
userSelectList.value = userList.value.filter(
userSelectList.value = userList.value
.filter(
(item) =>
item.nickname.toLowerCase().includes(query.toLowerCase()) ||
item.username.toLowerCase().includes(query.toLowerCase())
).slice(0, 10)//10
)
.slice(0, 10) //10
}, 200)
} else {
userSelectList.value = userList.value.slice(0, 10)//10
userSelectList.value = userList.value.slice(0, 10) //10
}
}
// const onSelectChange = (newValue: number | null) => {
// // console.log(newValue)
// emit('update:valueName', newValue)
// valueName.value = newValue
// }
const onSelectChange = (newValue: any) => {
valueNameObject.value = userList.value.find(user => user.id === newValue); //
emit('update:newValue', valueNameObject.value)
}
</script>

@ -4,6 +4,7 @@
<span v-text="dialogTitle"></span>
</template>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<!-- 基础信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
@ -78,7 +79,7 @@
</el-col>
</el-row>
</el-card>
<!-- 物料信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物料信息</span>
@ -89,95 +90,105 @@
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem"></el-button>
</el-col>
<el-table :data="formData.productBomItemDOList" class="hl-table">
<el-table-column prop="cid" label="序号" :width="80" />
<el-table-column prop="matId" label="物料编码">
<template #default="scope">
<el-select v-model="scope.row.matId" placeholder="物料编码" :remote-method="remoteMatCodeSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatCode(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.code" :value="item.id" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="matName" label="物料名称">
<!-- <template #default="scope">
<el-input v-model="scope.row.matName"
:disabled="!scope.row.editable" />
<el-select v-model="scope.row.matName" placeholder="物料名称" :remote-method="remoteMatSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading" @click="handleMatName"
class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</template> -->
</el-table-column>
<el-table-column prop="matType" label="物料类型">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
</template>
</el-table-column>
<el-table-column prop="matSpec" label="规格/型号" />
<el-table-column prop="matUnit" label="系统单位">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
</template>
</el-table-column>
<el-table-column prop="rgId" width="140" label="入库库区" required>
<template #default="scope">
<el-select v-model="scope.row.rgId" placeholder="" style="width: 100%" @change="handleRg(scope)">
<el-option v-for="dict in rgList" :key="dict.id" :label="dict.rgName" :value="dict.id" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="pnId" width="140" label="入库库位" required>
<template #default="scope">
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%">
<el-option v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pnName" :value="dict.id" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="storageOkQty" width="120" label="入库数量" required>
<template #default="scope">
<el-input v-model="scope.row.storageOkQty" />
</template>
</el-table-column>
<el-table-column prop="lotNo" width="120" label="批次号">
<template #default="scope">
<el-input v-model="scope.row.lotNo" />
</template>
</el-table-column>
<el-table-column prop="description" width="150" label="备注">
<template #default="scope">
<el-input v-model="scope.row.description" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<!-- <el-button v-if="!scope.row.editable" type="primary" size="small" link
@click="handleEdit(scope.$index)">
编辑
</el-button>
<el-button link v-else type="success" size="small" @click="handleSave(scope.$index)">
保存
</el-button>
<el-button link type="primary" @click="handlefuke(scope.$index, scope.row)">复制</el-button> -->
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-form ref="matSubFormRef" :model="formData.matItemDOList" :rules="subFormRules"
v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column prop="cid" label="序号" :width="80" />
<el-table-column prop="matId" label="物料编码">
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matId`" :rules="subFormRules.matId" class="mb-0px!">
<el-select v-model="scope.row.matId" placeholder="物料编码" :remote-method="remoteMatCodeSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatCode(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.code" :value="item.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matName" label="物料名称">
<!-- <template #default="scope">
<el-input v-model="scope.row.matName"
:disabled="!scope.row.editable" />
<el-select v-model="scope.row.matName" placeholder="物料名称" :remote-method="remoteMatSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading" @click="handleMatName"
class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</template> -->
</el-table-column>
<el-table-column prop="matType" label="物料类型">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
</template>
</el-table-column>
<el-table-column prop="matSpec" label="规格/型号" />
<el-table-column prop="matUnit" label="系统单位">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
</template>
</el-table-column>
<el-table-column prop="rgId" width="140" label="入库库区" required>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.rgId`" :rules="subFormRules.rgId" class="mb-0px!">
<el-select v-model="scope.row.rgId" placeholder="" style="width: 100%" @change="handleRg(scope)">
<el-option v-for="dict in rgList" :key="dict.id" :label="dict.rgName" :value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="pnId" width="140" label="入库库位" required>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!">
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%">
<el-option v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pnName"
:value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="storageOkQty" width="120" label="入库数量" required>
<template #default="scope">
<el-input v-model="scope.row.storageOkQty" />
</template>
</el-table-column>
<el-table-column prop="lotNo" width="120" label="批次号">
<template #default="scope">
<el-input v-model="scope.row.lotNo" />
</template>
</el-table-column>
<el-table-column prop="description" width="150" label="备注">
<template #default="scope">
<el-input v-model="scope.row.description" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<!-- <el-button v-if="!scope.row.editable" type="primary" size="small" link
@click="handleEdit(scope.$index)">
编辑
</el-button>
<el-button link v-else type="success" size="small" @click="handleSave(scope.$index)">
保存
</el-button>
<el-button link type="primary" @click="handlefuke(scope.$index, scope.row)">复制</el-button> -->
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 附件信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
@ -222,6 +233,7 @@
</el-col>
</el-row>
</el-card>
<!-- 系统信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">系统信息</span>
@ -299,7 +311,6 @@ const message = useMessage() // 消息弹窗
const router = useRoute();
const isShow = ref(false)
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
@ -321,7 +332,7 @@ const formData = ref({
outboundTime: undefined,
cancel: undefined,
cancelTime: undefined,
productBomItemDOList: [],
matItemDOList: [],
attachments: []
})
const formRules = reactive({
@ -331,6 +342,14 @@ const formRules = reactive({
whId: [{ required: true, message: '入库仓库不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const matSubFormRef = ref() // Ref
const subFormLoading = ref(false) //
const subFormRules = reactive({
matId: [{ required: true, message: '物料不能为空', trigger: 'blur' }],
rgId: [{ required: true, message: '库区不能为空', trigger: 'blur' }],
pnId: [{ required: true, message: '库位不能为空', trigger: 'blur' }],
})
const userList = ref<UserApi.UserVO[]>([]) //
@ -388,6 +407,12 @@ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成
const submitForm = async () => {
//
await formRef.value.validate()
//
try {
await matSubFormRef.value.validate()
} catch (e) {
return
}
//
formLoading.value = true
try {
@ -399,17 +424,17 @@ const submitForm = async () => {
commonResult = 'common.createSuccess'
} else {
storageid.value = await StorageApi.getStorage(router.query.id)
storageid.value = data.id
await StorageApi.updateStorage(data)
commonResult = 'common.updateSuccess'
}
//
formData.value.productBomItemDOList.forEach(item => {
item.stockId = storageid.value.id
formData.value.matItemDOList.forEach(item => {
item.stockId = storageid.value
item.whId = formData.value.whId
})
const dataMats = formData.value.productBomItemDOList as unknown as StorageMatApi.StorageMatVO[]
//await StorageMatApi.createStorageMatBatch(dataMats)
const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
await StorageMatApi.createStorageMatBatch(dataMats)
//
matUploadFiles.value = { 'businessType': 'STORAGE', 'businessId': storageid, 'businessFileType': '' }
@ -420,7 +445,7 @@ const submitForm = async () => {
//
reload();
router.query.id = storageid.value.id;
//router.query.id = storageid.value.id;
} finally {
formLoading.value = false
}
@ -448,13 +473,13 @@ const onAddItem = () => {
productBomItemValueDOList: []
}
matCount = matCount + 1
formData.value.productBomItemDOList.push(newData)
formData.value.matItemDOList.push(newData)
}
//
const handlefuke = (index, item) => {
const data: any = formData.value.productBomItemDOList[index]
const data: any = formData.value.matItemDOList[index]
//
const newData: any = {
@ -478,17 +503,15 @@ const handlefuke = (index, item) => {
}
matCount = matCount + 1
//
formData.value.productBomItemDOList.splice(index + 1, 0, newData)
formData.value.matItemDOList.splice(index + 1, 0, newData)
}
//
const handleDelete2 = (index: number) => {
formData.value.productBomItemDOList.splice(index, 1)
formData.value.matItemDOList.splice(index, 1)
}
//
const warehouseList = ref([])
//
@ -508,7 +531,7 @@ const handleWh = (async (wid) => {
pnList.value = []
rgList.value = dataRg.list
formData.value.productBomItemDOList.forEach(item => {
formData.value.matItemDOList.forEach(item => {
item.rgId = ''
item.pnId = ''
item.pnlist.value = []
@ -529,7 +552,6 @@ const handleRg = (async (scope) => {
//-------------------
})
const matList = ref<MaterialApi.MaterialVO[]>([]) //
const matSelectLoading = ref(false);
const remoteMatCodeSearch = async (query) => {
@ -567,6 +589,8 @@ const handleMatCode = async (scope, matid) => {
}
}
const isShowBtnStatus = false
const isShowBtnCancel = false
/** 初始化 **/
onMounted(async () => {
@ -597,8 +621,8 @@ onMounted(async () => {
const queryParamsRg = reactive({
pageNo: 1,
pageSize: 99,
status:1,
whId : formData.value.whId
status: 1,
whId: formData.value.whId
})
const dataRg = await RgApi.getRgPage(queryParamsRg)
@ -621,7 +645,7 @@ onMounted(async () => {
stockId: router.query.id
})
const dataMats = await StorageMatApi.getStorageMatPage(queryParamsMat)
formData.value.productBomItemDOList = dataMats.list
formData.value.matItemDOList = dataMats.list
//
const queryParamsMat2 = reactive({
@ -631,20 +655,18 @@ onMounted(async () => {
})
const matVos = await MaterialApi.getMaterialPage(queryParamsMat2)
formData.value.productBomItemDOList.forEach(item => {
item.cid = matCount
formData.value.matItemDOList.forEach(item => {
item.cid = matCount
item.matId = matVos.list.find((record) => record.id === item.matId)?.id
//item.matCode = matVos.list.find( (record) => record.id === item.matId)?.id
item.matName = matVos.list.find((record) => record.id === item.matId)?.name
item.matSpec = matVos.list.find((record) => record.id === item.matId)?.spec
item.matType = matVos.list.find((record) => record.id === item.matId)?.materialType
item.matUnit = matVos.list.find((record) => record.id === item.matId)?.unit
item.pnlist = pnList.value.filter((pn) => pn.rgId === item.rgId)
matCount= matCount+1
item.pnlist = pnList.value.filter((pn) => pn.rgId === item.rgId)
matCount = matCount + 1
})
//
//
let attParams = {
@ -656,6 +678,7 @@ onMounted(async () => {
formData.value.attachments = (await getFilePage(attParams)).list;
}
//
userList.value = await UserApi.getSimpleUserList()
})

Loading…
Cancel
Save