Browse Source

基础数据管理物品包装信息

master
陈薪名 1 year ago
parent
commit
40a75e5069
  1. 250
      src/views/wms/itempackaging/ItempackagingForm.vue
  2. 3
      src/views/wms/itempackaging/index.vue

250
src/views/wms/itempackaging/ItempackagingForm.vue

@ -1,172 +1,20 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<div class="p-20px m--10px" style="max-height: 600px;overflow-y: auto;"> <Form ref="formRef" v-loading="formLoading" :rules="ItempackagingRules" :schema="Itempackaging.allSchemas.formSchema" :is-col="true" />
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-row>
<el-col :span="12">
<el-form-item label="物品代码" prop="itemCode">
<el-input v-model="formData.itemCode" placeholder="请输入物品代码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计量单位" prop="uom">
<el-select v-model="formData.uom" placeholder="请选择计量单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.UOM)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="包装单位" prop="stdPackUnit">
<el-select v-model="formData.stdPackUnit" placeholder="请选择包装单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PACK_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="包装数量" prop="stdPackQty">
<el-input v-model="formData.stdPackQty" placeholder="请输入包装数量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装单位" prop="altPackUnit1">
<el-select v-model="formData.altPackUnit1" placeholder="请选择替代包装单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PACK_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装量" prop="altPackQty1">
<el-input v-model="formData.altPackQty1" placeholder="请输入替代包装量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装单位" prop="altPackUnit2">
<el-select v-model="formData.altPackUnit2" placeholder="请选择替代包装单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PACK_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装量" prop="altPackQty2">
<el-input v-model="formData.altPackQty2" placeholder="请输入替代包装量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装单位" prop="altPackUnit3">
<el-select v-model="formData.altPackUnit3" placeholder="请选择替代包装单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PACK_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装量" prop="altPackQty3">
<el-input v-model="formData.altPackQty3" placeholder="请输入替代包装量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装单位" prop="altPackUnit4">
<el-select v-model="formData.altPackUnit4" placeholder="请选择替代包装单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PACK_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="替代包装量" prop="altPackQty4">
<el-input v-model="formData.altPackQty4" placeholder="请输入替代包装量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否可用" prop="available">
<el-select v-model="formData.available" placeholder="请选择是否可用">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TRUE_FALSE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生效时间" prop="activeTime">
<el-date-picker
v-model="formData.activeTime"
type="date"
value-format="x"
placeholder="选择生效时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="失效时间" prop="expireTime">
<el-date-picker
v-model="formData.expireTime"
type="date"
value-format="x"
placeholder="选择失效时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <ButtonBase :Butttondata="Butttondata" @buttonBaseClick="buttonBaseClick" />
<el-button @click="dialogVisible = false"> </el-button>
</template> </template>
</Dialog> </Dialog>
<SearchTable ref="searchTableRef" dialogTitle="物料基础信息" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { DICT_TYPE, getStrDictOptions, getIntDictOptions } from '@/utils/dict' import { Itempackaging, ItempackagingRules, ItemBasic } from '@/utils/disposition/tableColumns'
import * as ItempackagingApi from '@/api/wms/itempackaging' import * as ItempackagingApi from '@/api/wms/itempackaging'
import { SearchTable } from '@/components/SearchTable';
import * as defaultButtons from '@/utils/disposition/defaultButtons'
import ButtonBase from '@/components/XButton/src/ButtonBase.vue'
import * as ItembasicApi from '@/api/wms/itembasic'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -175,33 +23,15 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const formType = ref('') // create - update - const formType = ref('') // create - update -
const formData = ref({
itemCode: undefined,
uom: undefined,
stdPackUnit: undefined,
stdPackQty: undefined,
altPackUnit1: undefined,
altPackQty1: undefined,
altPackUnit2: undefined,
altPackQty2: undefined,
altPackUnit3: undefined,
altPackQty3: undefined,
altPackUnit4: undefined,
altPackQty4: undefined,
available: undefined,
activeTime: undefined,
expireTime: undefined,
remark: undefined
})
const formRules = reactive({
itemCode: [{ required: true, message: '物品代码不能为空', trigger: 'blur' }],
uom: [{ required: true, message: '计量单位不能为空', trigger: 'change' }],
stdPackUnit: [{ required: true, message: '包装单位不能为空', trigger: 'change' }],
stdPackQty: [{ required: true, message: '包装数量不能为空', trigger: 'blur' }],
available: [{ required: true, message: '是否可用不能为空', trigger: 'change' }]
})
const formRef = ref() // Ref const formRef = ref() // Ref
/** 弹层操作 */
const searchTableRef = ref()
const opensearchTable = () => {
searchTableRef.value.open('物品基础信息', ItemBasic.allSchemas, ItembasicApi.getItembasicPage)
}
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {
dialogVisible.value = true dialogVisible.value = true
@ -212,7 +42,8 @@ const open = async (type: string, id?: number) => {
if (id) { if (id) {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await ItempackagingApi.getItempackaging(id) const res = await ItempackagingApi.getItempackaging(id)
unref(formRef)?.setValues(res)
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -220,17 +51,36 @@ const open = async (type: string, id?: number) => {
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 弹窗按钮 */
const Butttondata = [
defaultButtons.formSaveBtn(null), //
defaultButtons.formCloseBtn(null), //
]
/** 按钮事件 */
const buttonBaseClick = (val) => {
//
if (val == 'save') {
submitForm()
}
//
else if (val == 'close') {
dialogVisible.value = false
}
}
/** 提交表单 */ /** 提交表单 */
const emit = defineEmits(['success']) // success const emit = defineEmits(['success']) // success
const submitForm = async () => { const submitForm = async () => {
const elForm = unref(formRef)?.getElFormRef()
// //
if (!formRef) return if (!elForm) return
const valid = await formRef.value.validate() const valid = await elForm.validate()
if (!valid) return if (!valid) return
// //
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as unknown as ItempackagingApi.ItempackagingVO const data = unref(formRef)?.formModel as ItempackagingApi.ItempackagingVO
if (formType.value === 'create') { if (formType.value === 'create') {
await ItempackagingApi.createItempackaging(data) await ItempackagingApi.createItempackaging(data)
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
@ -248,24 +98,6 @@ const submitForm = async () => {
/** 重置表单 */ /** 重置表单 */
const resetForm = () => { const resetForm = () => {
formData.value = { unref(formRef)?.resetFields()
itemCode: undefined,
uom: undefined,
stdPackUnit: undefined,
stdPackQty: undefined,
altPackUnit1: undefined,
altPackQty1: undefined,
altPackUnit2: undefined,
altPackQty2: undefined,
altPackUnit3: undefined,
altPackQty3: undefined,
altPackUnit4: undefined,
altPackQty4: undefined,
available: undefined,
activeTime: undefined,
expireTime: undefined,
remark: undefined
}
formRef.value?.resetFields()
} }
</script> </script>

3
src/views/wms/itempackaging/index.vue

@ -23,7 +23,7 @@
v-model:currentPage="tableObject.currentPage" v-model:currentPage="tableObject.currentPage"
v-model:sort="tableObject.sort" v-model:sort="tableObject.sort"
> >
<template #default="{row}"> <template #itemCode="{row}">
<el-button type="primary" link @click="openDetail(row.id)"> <el-button type="primary" link @click="openDetail(row.id)">
<span>{{ row.itemCode }}</span> <span>{{ row.itemCode }}</span>
</el-button> </el-button>
@ -53,6 +53,7 @@ import * as defaultButtons from '@/utils/disposition/defaultButtons'
import TableHead from '@/components/TableHead/src/TableHead.vue' import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
defineOptions({ name: 'Itempackaging' }) defineOptions({ name: 'Itempackaging' })
const { tableObject, tableMethods } = useTable({ const { tableObject, tableMethods } = useTable({

Loading…
Cancel
Save