njzscloud-dispose-web/src/pages/wh/out-order/OutOrderForm.vue

143 lines
6.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<AFormPanel
ref="formPanel"
:details-loader="detailsLoader"
:do-submit="doSubmit"
:rules="rules"
:title="status === 'add' ? '新建项目' : '修改项目'"
>
<template #default="{formData}">
<div class="form-items">
<ElFormItem label="责任人" prop="responsibleId">
<ASelect v-model="formData.responsibleId" :api="UserApi.paging" :tableColumn="userColumn" labelKey="nickname" placeholder="请选择负责人"/>
</ElFormItem>
<ElFormItem label="仓库" prop="warehouseId">
<ASelect v-model="formData.warehouseId" :api="WarehouseApi.paging" :tableColumn="warehouseColumn" labelKey="warehouseName" placeholder="选择仓库" @change="warehouseChange"/>
</ElFormItem>
<ElFormItem label="存放位置" prop="location">
<ElInput v-model="formData.location" placeholder="存放位置"/>
</ElFormItem>
<ElFormItem label="出库时间" prop="outTime">
<ElDatePicker v-model="formData.outTime" format="YYYY-MM-DD" placeholder="请选择出库日期" type="date" value-format="YYYY-MM-DD"/>
</ElFormItem>
<ElFormItem label="销售单" prop="orderId">
<ASelect v-model="formData.orderId" :api="SalesOrderApi.paging" :tableColumn="orderColumn" labelKey="sn" placeholder="请选择销售单" @change="orderChange"/>
<!-- <ElInput v-model="formData.orderId" placeholder="销售单 Idwh_sales_order.id" /> -->
</ElFormItem>
<!-- <ElFormItem label="销售单号wh_sales_order.sn" prop="orderSn">
<ElInput v-model="formData.orderSn" placeholder="销售单号wh_sales_order.sn" />
</ElFormItem> -->
<ElFormItem label="产品分类" prop="goodsCategoryId">
<ElInput v-model="formData.goodsCategoryId" placeholder="产品分类 Id"/>
</ElFormItem>
<ElFormItem label="分类名称" prop="goodsCategoryName">
<ElInput v-model="formData.goodsCategoryName" placeholder="分类名称"/>
</ElFormItem>
<ElFormItem label="产品" prop="goodsId">
<ElInput v-model="formData.goodsId" placeholder="产品 Id"/>
</ElFormItem>
<ElFormItem label="产品名称" prop="goodsName">
<ElInput v-model="formData.goodsName" placeholder="产品名称"/>
</ElFormItem>
<ElFormItem label="产品编码" prop="goodSn">
<ElInput v-model="formData.goodSn" placeholder="产品编码"/>
</ElFormItem>
<ElFormItem label="数量" prop="quantity">
<ElInput v-model="formData.quantity" placeholder="数量"/>
</ElFormItem>
<!-- <ElFormItem label="计量单位字典代码unit" prop="unit">
<ElInput v-model="formData.unit" placeholder="计量单位字典代码unit" />
</ElFormItem> -->
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注"/>
</ElFormItem>
</div>
</template>
</AFormPanel>
</template>
<script lang="ts" setup>
import OutOrderApi from '@/pages/wh/out-order/out-order-api.ts'
import Strings from '@/common/utils/strings.ts'
import { type FormRules } from 'element-plus'
import SalesOrderApi from '@/pages/wh/sales-order/sales-order-api.ts'
import WarehouseApi from '@/pages/wh/warehouse/warehouse-api.ts'
import ASelect from '@/components/a-select/ASelect.vue'
import UserApi from '@/pages/sys/user/user-api.ts'
import type AFormPanel from '@/components/a-form-panel/AFormPanel.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
const props = withDefaults(defineProps<{
research?: () => void
}>(), {
research: () => {
},
})
const rules = reactive<FormRules<OutOrderTypes.SearchOutOrderResult>>({
id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写编号', trigger: 'blur'} ],
responsibleId: [ {required: true, message: '请填写责任人 Idsys_user.id', trigger: 'blur'} ],
warehouseId: [ {required: true, message: '请填写仓库 Idwh_warehouse.id', trigger: 'blur'} ],
location: [ {required: true, message: '请填写存放位置', trigger: 'blur'} ],
outTime: [ {required: true, message: '请填写出库时间', trigger: 'blur'} ],
orderId: [ {required: true, message: '请填写销售单 Idwh_sales_order.id', trigger: 'blur'} ],
orderSn: [ {required: true, message: '请填写销售单号wh_sales_order.sn', trigger: 'blur'} ],
goodsCategoryId: [ {required: true, message: '请填写产品分类 Id', trigger: 'blur'} ],
goodsCategoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
goodSn: [ {required: true, message: '请填写产品编码', trigger: 'blur'} ],
quantity: [ {required: true, message: '请填写数量', trigger: 'blur'} ],
unit: [ {required: true, message: '请填写计量单位字典代码unit', trigger: 'blur'} ],
memo: [ {required: true, message: '请填写备注', trigger: 'blur'} ],
creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [ {required: true, message: '请填写修改人 Id sys_user.id', trigger: 'blur'} ],
createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
})
const formPanelIns = useTemplateRef<ComponentExposed<typeof AFormPanel>>('formPanel')
const status = ref<'add' | 'modify'>('add')
function detailsLoader(id?: string) {
if (Strings.isBlank(id)) {
status.value = 'add'
return Promise.resolve()
} else {
status.value = 'modify'
return OutOrderApi
.detail(id!)
.then(res => res.data)
}
}
function doSubmit(data: OutOrderTypes.SearchOutOrderResult) {
if (status.value === 'add') {
return OutOrderApi.add(data)
.then(props.research)
} else {
return OutOrderApi.modify(data)
.then(props.research)
}
}
defineExpose({
open(data?: OutOrderTypes.SearchOutOrderResult) {
formPanelIns.value?.open(data?.id)
},
})
</script>
<style lang="stylus" scoped>
.form-items {
grid-template-columns: 1fr 1fr;
:deep(.el-form-item) {
}
}
</style>