pull/4/head
siontion 8 months ago
commit 16dc0fdda4

@ -1,17 +1,6 @@
<template>
<!-- 物料选择 -->
<el-select
v-model="valueName"
placeholder="请输入物料"
:remote-method="remoteMethod"
remote-show-suffix
remote
clearable
reserve-keyword
filterable
:loading="Loading"
@change="onSelectChange"
>
<el-select v-model="valueName" placeholder="请输入物料" :remote-method="remoteMethod" remote-show-suffix remote clearable reserve-keyword filterable :loading="Loading" @change="onSelectChange" @visible-change="onVisibleChange">
<el-option v-for="item in materialSelectList" :key="item.id" :label="item.code+' '+item.name" :value="item.id" />
</el-select>
</template>
@ -25,46 +14,92 @@ const emit = defineEmits(['update:newValue'])
const materialList = ref<MaterialApi.MaterialVO[]>([]) //
const materialSelectList = ref<MaterialApi.MaterialVO[]>([])
const Loading = ref(false)
const materialSelectLoading = ref(false)
const props = defineProps({
modelValue: {
type: [Number, String],
required: true // true
}
})
const propsmodelValue = toRefs(props).modelValue // props modelValue
const initialValue: any = ref(null) // ID
//
onMounted(async () => {
const queryParams = {
pageNo: 1,
pageSize: 10,
code: undefined,
brief: undefined,
status: undefined
status: 1,
codeAndName: undefined
}
const gitlist = async () => {
const data = await MaterialApi.getMaterialPage(queryParams)
materialList.value = [...materialList.value, ...data.list]
//
if (propsmodelValue.value) {
valueName.value = propsmodelValue.value
const initialmaterial = await MaterialApi.getMaterial(valueName.value)
// materialList
let foundInitialmaterialInList = false
for (const material of materialList.value) {
if (material.id === initialmaterial.id) {
valueName.value=initialmaterial.code+' '+initialmaterial.name
foundInitialmaterialInList = true
break
}
}
//
if (!foundInitialmaterialInList && !materialSelectList.value.length) {
materialList.value.unshift(initialmaterial)
propsmodelValue.value=initialmaterial.code+' '+initialmaterial.name
}
// loading.value = false
}
materialSelectList.value = materialList.value
Loading.value = false
}
const remoteMethod = async (query: any) => {
materialSelectLoading.value = true
materialSelectList.value = []
try {
if (query) {
queryParams.codeAndName = query
const data = await MaterialApi.getMaterialPage(queryParams)
materialList.value = data.list
//
remoteMethod('')
materialSelectList.value = data.list
} else {
gitlist()
}
} catch (error) {
console.error(error)
} finally {
materialSelectLoading.value = false
}
}
//
onMounted(async () => {
try {
await gitlist()
} catch (error) {
console.error(error)
}
})
const remoteMethod = (query: any) => {
if (query) {
Loading.value = true
setTimeout(() => {
Loading.value = false
materialSelectList.value = materialList.value
.filter(
(item) =>
item.code.toLowerCase().includes(query.toLowerCase()) ||
item.name.toLowerCase().includes(query.toLowerCase())
)
.slice(0, 10) //10
}, 200)
} else {
materialSelectList.value = materialList.value.slice(0, 10)
const onVisibleChange = (isVisible: boolean) => {
if (!isVisible) {
//
queryParams.codeAndName = undefined
materialList.value = []
materialSelectList.value = []
}
}
const onSelectChange = (newValue: any) => {
valueNameObject.value = materialList.value.find( material => material.id === newValue); //
valueNameObject.value = materialList.value.find((material) => material.id === newValue) //
emit('update:newValue', valueNameObject.value)
}
</script>

@ -65,6 +65,7 @@ const gitlist = async () => {
for (const user of userList.value) {
if (user.id === initialUser.id) {
propsmodelValue.value=initialUser.username+' '+initialUser.nickname
foundInitialUserInList = true
break
}
@ -73,6 +74,7 @@ const gitlist = async () => {
if (!foundInitialUserInList && !userSelectList.value.length) {
userList.value.unshift(initialUser)
propsmodelValue.value=initialUser.username+' '+initialUser.nickname
}
// loading.value = false
}

@ -25,8 +25,7 @@
<el-row>
<el-col :span="80">
<el-form-item label="备注" prop="description">
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
maxlength="200" disabled />
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit maxlength="200" disabled />
</el-form-item>
</el-col>
</el-row>
@ -36,8 +35,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="单据日期" prop="createTime">
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期"
disabled />
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期" disabled />
</el-form-item>
</el-col>
</el-row>
@ -72,8 +70,7 @@
<el-col :span="24">
<el-form-item label="单据状态" prop="status">
<el-select v-model="formData.status" placeholder="单据状态" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@ -96,41 +93,39 @@
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem" v-if="false"></el-button>
</el-col>
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules"
v-loading="subFormLoading" label-width="0">
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" :width="80" />
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
<!-- <el-table-column prop="matCode" label="物料编码" min-width="120" align="center" /> -->
<el-table-column prop="matId" min-width="140" align="center">
<template #header> <span class="hl-table_header">*</span>物料名称 </template>
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<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="remoteMatNameSearch" disabled
<!-- <el-select v-model="scope.row.matId" placeholder="物料名称" :remote-method="remoteMatNameSearch" disabled
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatName(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-select> -->
<MaterialSelect v-model="scope.row.matId" disabled @update:newValue="handleSelectedMaterial(scope.$index,$event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
<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="规格/型号" min-width="120" align="center" />
<el-table-column prop="matUnit" label="系统单位" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
<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="requireAmount" min-width="120" align="center">
<template #header><span class="hl-table_header">*</span>需求数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.requireAmount`" :rules="subFormRules.requireAmount" class="mb-0px!">
<el-input v-model="scope.row.requireAmount" disabled/>
<el-input v-model="scope.row.requireAmount" disabled />
</el-form-item>
</template>
</el-table-column>
@ -138,8 +133,7 @@
<template #header> <span class="hl-table_header">*</span>需求到货日期 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.requireArriveTime`" :rules="subFormRules.requireArriveTime" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x"
placeholder="需求到货日期" disabled/>
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x" placeholder="需求到货日期" disabled />
</el-form-item>
</template>
</el-table-column>
@ -148,15 +142,14 @@
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.projectSubId`" :rules="subFormRules.projectSubId" class="mb-0px!">
<el-select class="!w-265px" v-model="row.projectSubId" filterable clearable disabled>
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId"
:label="dict.projectSubCode" :value="dict.projectSubId" />
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId" :label="dict.projectSubCode" :value="dict.projectSubId" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" disabled/>
<el-input v-model="scope.row.description" disabled />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
@ -182,12 +175,10 @@
<el-col>
<el-card class="hl-incard">
<el-col>
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl"
:headers="{
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl" :headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData"
:on-change="matUploadChange" :on-error="UpError" class="upload-file-uploader">
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" :on-error="UpError" class="upload-file-uploader">
<el-button type="primary" v-if="false">
<Icon icon="ep:upload-filled" />上传
</el-button>
@ -204,12 +195,10 @@
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" size="small" v-if="false"
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
<el-button link type="danger" size="small" v-if="false" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
删除
</el-button>
<el-button link type="primary" size="small"
@click="downloadAttachment(scope.row.name, scope.row.url)">
<el-button link type="primary" size="small" @click="downloadAttachment(scope.row.name, scope.row.url)">
下载
</el-button>
</template>
@ -283,6 +272,7 @@ import download from '@/utils/download'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
const reload = inject('reload')
const { t } = useI18n() //
@ -308,13 +298,13 @@ const formData = ref({
attachments: []
})
const formRules = reactive({
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }],
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }]
})
const subFormRules = reactive({
matId: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
requireAmount: [{ required: true, message: '需求数量不能为空', trigger: 'blur' }],
requireArriveTime: [{ required: true, message: '需求到货日期不能为空', trigger: 'blur' }],
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }],
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const subFormRef = ref() // Ref
@ -405,7 +395,6 @@ const downloadAttachment = async (name, url) => {
}
// ==================== =======================================
//
const getMatList = async (name) => {
//
@ -419,7 +408,6 @@ const getMatList = async (name) => {
}
const dataMat = await MaterialApi.getMaterialPage(matParams)
matList.value = dataMat.list
}
const matList = ref<MaterialApi.MaterialVO[]>([]) //
const matSelectLoading = ref(false)
@ -463,8 +451,9 @@ const handleDelete2 = (index: number) => {
}
const handleInitPlanSub = async () => {
//
formData.value.projectOrderSubs =
await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(formData.value.projectId)
formData.value.projectOrderSubs = await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(
formData.value.projectId
)
//
const queryParams = reactive({
@ -473,20 +462,19 @@ const handleInitPlanSub = async () => {
projectPlanId: query.id
})
formData.value.projectPlanSubs =
(await PlanSubApi.getPlanSubPage(queryParams)).list
formData.value.projectPlanSubs = (await PlanSubApi.getPlanSubPage(queryParams)).list
formData.value.projectOrderSubs.forEach(item => {
if (formData.value.projectPlanSubs.filter(sub => sub.projectSubId == item.id).length > 0) {
var subTemp = formData.value.projectPlanSubs.find(sub => sub.projectSubId == item.id)
formData.value.projectOrderSubs.forEach((item) => {
if (formData.value.projectPlanSubs.filter((sub) => sub.projectSubId == item.id).length > 0) {
var subTemp = formData.value.projectPlanSubs.find((sub) => sub.projectSubId == item.id)
item.projectSubId = subTemp.projectSubId
item.projectSubCode = subTemp.projectSubCode
}
})
}
//
const saveMaterials = async () =>{
formData.value.matItemDOList.forEach(item => {
const saveMaterials = async () => {
formData.value.matItemDOList.forEach((item) => {
var subData = item as unknown as MaterialPlanDetailApi.MaterialPlanDetailVO
subData.materialId = item.matId
subData.projectMaterialPlanId = formData.value.id
@ -496,11 +484,10 @@ const saveMaterials = async () =>{
MaterialPlanDetailApi.updateMaterialPlanDetail(subData)
}
})
formData.value.matItemRemoveList.forEach(item =>{
formData.value.matItemRemoveList.forEach((item) => {
if (item.id != undefined) {
MaterialPlanDetailApi.deleteMaterialPlanDetail(item.id)
}
})
}
//
@ -533,7 +520,7 @@ const saveForm = async () => {
}
//
const submitForm = async () => {
if(formData.value.matItemDOList.length ==0){
if (formData.value.matItemDOList.length == 0) {
message.alertWarning('请添加物料信息!')
return
}
@ -554,7 +541,7 @@ const projectInit = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
projectMaterialPlanId: query.id,
projectMaterialPlanId: query.id
})
//
onMounted(async () => {
@ -570,10 +557,11 @@ onMounted(async () => {
formData.value.projectCode = projectInit.value.code
//
formData.value.matItemDOList = (await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)).list
formData.value.matItemDOList.forEach(item=>{
matList.value.push({id:item.matId,name:item.matName})
formData.value.matItemDOList = (
await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)
).list
formData.value.matItemDOList.forEach((item) => {
matList.value.push({ id: item.matId, name: item.matName })
})
formData.value.matItemRemoveList = []
//

@ -25,8 +25,7 @@
<el-row>
<el-col :span="80">
<el-form-item label="备注" prop="description">
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
maxlength="200" />
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit maxlength="200" />
</el-form-item>
</el-col>
</el-row>
@ -36,8 +35,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="单据日期" prop="createTime">
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期"
disabled />
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期" disabled />
</el-form-item>
</el-col>
</el-row>
@ -72,8 +70,7 @@
<el-col :span="24">
<el-form-item label="单据状态" prop="status">
<el-select v-model="formData.status" placeholder="单据状态" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@ -96,34 +93,33 @@
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem"></el-button>
</el-col>
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules"
v-loading="subFormLoading" label-width="0">
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" :width="80" />
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
<!-- <el-table-column prop="matCode" label="物料编码" min-width="120" align="center" /> -->
<el-table-column prop="matId" min-width="140" align="center">
<template #header> <span class="hl-table_header">*</span>物料名称 </template>
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<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="remoteMatNameSearch"
<!-- <el-select v-model="scope.row.matId" placeholder="物料编码/名称" :remote-method="remoteMatNameSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatName(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-select> -->
<MaterialSelect v-model="scope.row.matId" @update:newValue="handleSelectedMaterial(scope.$index,$event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
<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="规格/型号" min-width="120" align="center" />
<el-table-column prop="matUnit" label="系统单位" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
<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="requireAmount" min-width="120" align="center">
@ -138,8 +134,7 @@
<template #header> <span class="hl-table_header">*</span>需求到货日期 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.requireArriveTime`" :rules="subFormRules.requireArriveTime" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x"
placeholder="需求到货日期" />
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x" placeholder="需求到货日期" />
</el-form-item>
</template>
</el-table-column>
@ -148,8 +143,7 @@
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.projectSubId`" :rules="subFormRules.projectSubId" class="mb-0px!">
<el-select class="!w-265px" v-model="row.projectSubId" filterable clearable>
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId"
:label="dict.projectSubCode" :value="dict.projectSubId" />
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId" :label="dict.projectSubCode" :value="dict.projectSubId" />
</el-select>
</el-form-item>
</template>
@ -182,12 +176,10 @@
<el-col>
<el-card class="hl-incard">
<el-col>
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl"
:headers="{
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl" :headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData"
:on-change="matUploadChange" :on-error="UpError" class="upload-file-uploader">
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" :on-error="UpError" class="upload-file-uploader">
<el-button type="primary">
<Icon icon="ep:upload-filled" />上传
</el-button>
@ -204,12 +196,10 @@
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" size="small"
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
<el-button link type="danger" size="small" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
删除
</el-button>
<el-button link type="primary" size="small"
@click="downloadAttachment(scope.row.name, scope.row.url)">
<el-button link type="primary" size="small" @click="downloadAttachment(scope.row.name, scope.row.url)">
下载
</el-button>
</template>
@ -286,14 +276,15 @@ import download from '@/utils/download'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
import { useTagsViewStore } from "@/store/modules/tagsView"
import { useTagsViewStore } from '@/store/modules/tagsView'
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
const reload = inject('reload')
const { t } = useI18n() //
const message = useMessage() //
const { query } = useRoute()
const router = useRouter()
const tagsViewStore = useTagsViewStore();
const tagsViewStore = useTagsViewStore()
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
@ -313,13 +304,13 @@ const formData = ref({
attachments: []
})
const formRules = reactive({
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }],
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }]
})
const subFormRules = reactive({
matId: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
requireAmount: [{ required: true, message: '需求数量不能为空', trigger: 'blur' }],
requireArriveTime: [{ required: true, message: '需求到货日期不能为空', trigger: 'blur' }],
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }],
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const subFormRef = ref() // Ref
@ -410,41 +401,43 @@ const downloadAttachment = async (name, url) => {
}
// ==================== =======================================
//
const getMatList = async (name) => {
//
let matParams = {
pageNo: 1,
pageSize: 10,
status: '1'
}
if (name.length > 0) {
matParams.name = name
}
const dataMat = await MaterialApi.getMaterialPage(matParams)
matList.value = dataMat.list
}
const matList = ref<MaterialApi.MaterialVO[]>([]) //
const matSelectLoading = ref(false)
const remoteMatNameSearch = async (name) => {
matSelectLoading.value = true
//
await getMatList(name)
matSelectLoading.value = false
}
const handleMatName = async (scope, matid) => {
scope.row.matId = matList.value.find((item) => item.id === matid)?.id
scope.row.matName = matList.value.find((item) => item.id === matid)?.name
scope.row.matCode = matList.value.find((item) => item.id === matid)?.code
scope.row.matSpec = matList.value.find((item) => item.id === matid)?.spec
scope.row.matType = matList.value.find((item) => item.id === matid)?.materialType
scope.row.matUnit = matList.value.find((item) => item.id === matid)?.unit
}
// const getMatList = async (name) => {
// //
// let matParams = {
// pageNo: 1,
// pageSize: 10,
// status: '1'
// }
// if (name.length > 0) {
// matParams.name = name
// }
// const dataMat = await MaterialApi.getMaterialPage(matParams)
// matList.value = dataMat.list
// }
// const matList = ref<MaterialApi.MaterialVO[]>([]) //
// const matSelectLoading = ref(false)
// const remoteMatNameSearch = async (name) => {
// matSelectLoading.value = true
// //
// await getMatList(name)
// matSelectLoading.value = false
// }
// const handleMatName = async (scope, matid) => {
// scope.row.matId = matList.value.find((item) => item.id === matid)?.id
// scope.row.matName = matList.value.find((item) => item.id === matid)?.name
// scope.row.matCode = matList.value.find((item) => item.id === matid)?.code
// scope.row.matSpec = matList.value.find((item) => item.id === matid)?.spec
// scope.row.matType = matList.value.find((item) => item.id === matid)?.materialType
// scope.row.matUnit = matList.value.find((item) => item.id === matid)?.unit
// }
//
const onAddItem = () => {
if (formData.value) {
if (!formData.value.matItemDOList) {
formData.value.matItemDOList = [] // matItemDOList
}
const newData = {
//
stockId: 0,
@ -459,7 +452,11 @@ const onAddItem = () => {
projectSubId: '',
description: ''
}
formData.value.matItemDOList.push(newData)
} else {
console.error('formData.value 或 formData.value.matItemDOList 未正确初始化')
}
}
//
const handleDelete2 = (index: number) => {
@ -468,8 +465,9 @@ const handleDelete2 = (index: number) => {
}
const handleInitPlanSub = async () => {
//
formData.value.projectOrderSubs =
await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(formData.value.projectId)
formData.value.projectOrderSubs = await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(
formData.value.projectId
)
//
const queryParams = reactive({
@ -478,20 +476,19 @@ const handleInitPlanSub = async () => {
projectPlanId: query.id
})
formData.value.projectPlanSubs =
(await PlanSubApi.getPlanSubPage(queryParams)).list
formData.value.projectPlanSubs = (await PlanSubApi.getPlanSubPage(queryParams)).list
formData.value.projectOrderSubs.forEach(item => {
if (formData.value.projectPlanSubs.filter(sub => sub.projectSubId == item.id).length > 0) {
var subTemp = formData.value.projectPlanSubs.find(sub => sub.projectSubId == item.id)
formData.value.projectOrderSubs.forEach((item) => {
if (formData.value.projectPlanSubs.filter((sub) => sub.projectSubId == item.id).length > 0) {
var subTemp = formData.value.projectPlanSubs.find((sub) => sub.projectSubId == item.id)
item.projectSubId = subTemp.projectSubId
item.projectSubCode = subTemp.projectSubCode
}
})
}
//
const saveMaterials = async () =>{
formData.value.matItemDOList.forEach(item => {
const saveMaterials = async () => {
formData.value.matItemDOList.forEach((item) => {
var subData = item as unknown as MaterialPlanDetailApi.MaterialPlanDetailVO
subData.materialId = item.matId
subData.projectMaterialPlanId = formData.value.id
@ -501,24 +498,23 @@ const saveMaterials = async () =>{
MaterialPlanDetailApi.updateMaterialPlanDetail(subData)
}
})
formData.value.matItemRemoveList.forEach(item =>{
formData.value.matItemRemoveList.forEach((item) => {
if (item.id != undefined) {
MaterialPlanDetailApi.deleteMaterialPlanDetail(item.id)
}
})
}
const closeForm = async () =>{
const closeForm = async () => {
router.push({ path: '/purchase/materialplan' })
tagsViewStore.delVisitedView(router.currentRoute.value);
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const deleteForm = async () =>{
const deleteForm = async () => {
//
await message.confirm('确认删除当前物料需求计划?')
await MaterialPlanApi.deleteMaterialPlan(formData.value.id)
router.push({ path: '/purchase/materialplan' })
tagsViewStore.delVisitedView(router.currentRoute.value);
tagsViewStore.delVisitedView(router.currentRoute.value)
}
//
const saveForm = async () => {
@ -550,7 +546,7 @@ const saveForm = async () => {
}
//
const submitForm = async () => {
if(formData.value.matItemDOList.length ==0){
if (formData.value.matItemDOList.length == 0) {
message.alertWarning('请添加物料信息!')
return
}
@ -571,7 +567,7 @@ const projectInit = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
projectMaterialPlanId: query.id,
projectMaterialPlanId: query.id
})
//
onMounted(async () => {
@ -587,10 +583,11 @@ onMounted(async () => {
formData.value.projectCode = projectInit.value.code
//
formData.value.matItemDOList = (await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)).list
formData.value.matItemDOList.forEach(item=>{
matList.value.push({id:item.matId,name:item.matName})
formData.value.matItemDOList = (
await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)
).list
formData.value.matItemDOList.forEach((item) => {
matList.value.push({ id: item.matId, name: item.matName })
})
formData.value.matItemRemoveList = []
//
@ -608,4 +605,15 @@ onMounted(async () => {
//
userList.value = await UserApi.getSimpleUserList()
})
//
const handleSelectedMaterial = (currentIndex: number, newValue: any) => {
// console.log(currentIndex,':', newValue)
formData.value.matItemDOList[currentIndex].matId = newValue?.id
formData.value.matItemDOList[currentIndex].matName = newValue?.name
formData.value.matItemDOList[currentIndex].matCode = newValue?.code
formData.value.matItemDOList[currentIndex].matSpec = newValue?.spec
formData.value.matItemDOList[currentIndex].matType = newValue?.materialType
formData.value.matItemDOList[currentIndex].matUnit = newValue?.unit
}
</script>

@ -154,19 +154,20 @@
v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" :width="80" />
<el-table-column prop="matId" min-width="140" align="center">
<template #header> <span class="hl-table_header">*</span>物料编码 </template>
<el-table-column prop="matId" min-width="180" align="center">
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<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="remoteMatNameSearch"
<!-- <el-select v-model="scope.row.matId" placeholder="物料名称" :remote-method="remoteMatNameSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatName(scope, val)" class="!w-180px" disabled>
<el-option v-for="item in matList" :key="item.id" :label="item.code" :value="item.id" />
</el-select>
</el-select> -->
<MaterialSelect v-model="scope.row.matId" disabled @update:newValue="handleSelectedMaterial(scope.$index,$event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matName" label="物料名称" min-width="120" align="center" />
<!-- <el-table-column prop="matName" label="物料名称" min-width="120" align="center" /> -->
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
@ -341,6 +342,7 @@ import download from '@/utils/download'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
const reload = inject('reload')

@ -155,18 +155,19 @@
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" :width="80" />
<el-table-column prop="matId" min-width="140" align="center">
<template #header> <span class="hl-table_header">*</span>物料编码 </template>
<template #header> <span class="hl-table_header">*</span>物料编码/名称 </template>
<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="remoteMatNameSearch"
<!-- <el-select v-model="scope.row.matId" placeholder="物料名称" :remote-method="remoteMatNameSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatName(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.code" :value="item.id" />
</el-select>
</el-select> -->
<MaterialSelect v-model="scope.row.matId" @update:newValue="handleSelectedMaterial(scope.$index,$event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matName" label="物料名称" min-width="120" align="center" />
<!-- <el-table-column prop="matName" label="物料名称" min-width="120" align="center" /> -->
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
@ -345,6 +346,7 @@ import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
import { useTagsViewStore } from "@/store/modules/tagsView"
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
const reload = inject('reload')
@ -671,4 +673,15 @@ onMounted(async () => {
supplierInit.value = await SupplierApi.getSimpList()
})
//
const handleSelectedMaterial = (currentIndex: number, newValue: any) => {
// console.log(currentIndex,':', newValue)
formData.value.matItemDOList[currentIndex].matId = newValue?.id
formData.value.matItemDOList[currentIndex].matName = newValue?.name
formData.value.matItemDOList[currentIndex].matCode = newValue?.code
formData.value.matItemDOList[currentIndex].matSpec = newValue?.spec
formData.value.matItemDOList[currentIndex].matType = newValue?.materialType
formData.value.matItemDOList[currentIndex].matUnit = newValue?.unit
}
</script>
Loading…
Cancel
Save