njzscloud-dispose-web/src/pages/order/book-order/OrderForm.vue

284 lines
12 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>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="orderForm"
class="form-panel"
label-width="auto">
<ElFormItem label-width="90" label="Id" prop="id">
<ElInput
v-model="formData.id"
:disabled="status === 'view'"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单编号" prop="sn">
<ElInput
v-model="formData.sn"
:disabled="status === 'view'"
placeholder="订单编号"/>
</ElFormItem>
<ElFormItem label-width="90" label="项目 Id" prop="projectId">
<ElInput
v-model="formData.projectId"
:disabled="status === 'view'"
placeholder="项目 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人 Idsys_user.id" prop="userId">
<ElInput
v-model="formData.userId"
:disabled="status === 'view'"
placeholder="下单人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人客户 Idcst_customer.id" prop="customerId">
<ElInput
v-model="formData.customerId"
:disabled="status === 'view'"
placeholder="下单人客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人姓名" prop="contacts">
<ElInput
v-model="formData.contacts"
:disabled="status === 'view'"
placeholder="下单人姓名"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单人联系方式" prop="phone">
<ElInput
v-model="formData.phone"
:disabled="status === 'view'"
placeholder="下单人联系方式"/>
</ElFormItem>
<ElFormItem label-width="90" label="下单时间" prop="orderTime">
<ElInput
v-model="formData.orderTime"
:disabled="status === 'view'"
placeholder="下单时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出" prop="orderCategory">
<ElInput
v-model="formData.orderCategory"
:disabled="status === 'view'"
placeholder="订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出"/>
</ElFormItem>
<ElFormItem label-width="90" label="订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消" prop="orderStatus">
<ElInput
v-model="formData.orderStatus"
:disabled="status === 'view'"
placeholder="订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消"/>
</ElFormItem>
<ElFormItem label-width="90" label="完结时间" prop="finishTime">
<ElInput
v-model="formData.finishTime"
:disabled="status === 'view'"
placeholder="完结时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输组织 Idcst_org.id" prop="transOrgId">
<ElInput
v-model="formData.transOrgId"
:disabled="status === 'view'"
placeholder="运输组织 Idcst_org.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="运输方客户 Id" prop="transCustomerId">
<ElInput
v-model="formData.transCustomerId"
:disabled="status === 'view'"
placeholder="运输方客户 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="指派清运公司时间" prop="assignmentTransTime">
<ElInput
v-model="formData.assignmentTransTime"
:disabled="status === 'view'"
placeholder="指派清运公司时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="站点 Idcst_station.id" prop="stationId">
<ElInput
v-model="formData.stationId"
:disabled="status === 'view'"
placeholder="站点 Idcst_station.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="站点名称cst_station.station.name" prop="stationName">
<ElInput
v-model="formData.stationName"
:disabled="status === 'view'"
placeholder="站点名称cst_station.station.name"/>
</ElFormItem>
<ElFormItem label-width="90" label="运距;单位:米" prop="transDistance">
<ElInput
v-model="formData.transDistance"
:disabled="status === 'view'"
placeholder="运距;单位:米"/>
</ElFormItem>
<ElFormItem label-width="90" label="预估量" prop="estimatedQuantity">
<ElInput
v-model="formData.estimatedQuantity"
:disabled="status === 'view'"
placeholder="预估量"/>
</ElFormItem>
<ElFormItem label-width="90" label="预估车数" prop="estimatedTrainNum">
<ElInput
v-model="formData.estimatedTrainNum"
:disabled="status === 'view'"
placeholder="预估车数"/>
</ElFormItem>
<ElFormItem label-width="90" label="产品 Id" prop="goodsId">
<ElInput
v-model="formData.goodsId"
:disabled="status === 'view'"
placeholder="产品 Id"/>
</ElFormItem>
<ElFormItem label-width="90" label="产品名称" prop="goodsName">
<ElInput
v-model="formData.goodsName"
:disabled="status === 'view'"
placeholder="产品名称"/>
</ElFormItem>
<ElFormItem label-width="90" label="计量单位字典代码unit" prop="unit">
<ElInput
v-model="formData.unit"
:disabled="status === 'view'"
placeholder="计量单位字典代码unit"/>
</ElFormItem>
<ElFormItem label-width="90" label="客户备注" prop="customerMemo">
<ElInput
v-model="formData.customerMemo"
:disabled="status === 'view'"
placeholder="客户备注"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建人 Id sys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
:disabled="status === 'view'"
placeholder="创建人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
:disabled="status === 'view'"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label-width="90" label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
:disabled="status === 'view'"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label-width="90" label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
:disabled="status === 'view'"
placeholder="修改时间"/>
</ElFormItem>
</ElForm>
<template #footer>
<ElButton @click="showDialog = false">{{ status === 'view' ? '关闭' : '取消' }}</ElButton>
<ElButton v-if="status !== 'view'" :loading="submiting" type="primary" @click="submitHandler"></ElButton>
</template>
</ElDialog>
</template>
<script lang="ts" setup>
import OrderApi from '@/pages/order/book-order/order-api.ts'
import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils'
import {
ElMessage,
type FormInstance,
type FormRules,
} from 'element-plus'
const emits = defineEmits(['editSucc'])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const orderFormIns = useTemplateRef<FormInstance>('orderForm')
const formData = Utils.resetAble(reactive<OrderTypes.SearchOrderResult>({}))
const rules = reactive<FormRules<OrderTypes.SearchOrderResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
sn: [{ required: true, message: '请填写订单编号', trigger: 'blur' }],
projectId: [{ required: true, message: '请填写项目 Id', trigger: 'blur' }],
userId: [{ required: true, message: '请填写下单人 Idsys_user.id', trigger: 'blur' }],
customerId: [{ required: true, message: '请填写下单人客户 Idcst_customer.id', trigger: 'blur' }],
contacts: [{ required: true, message: '请填写下单人姓名', trigger: 'blur' }],
phone: [{ required: true, message: '请填写下单人联系方式', trigger: 'blur' }],
orderTime: [{ required: true, message: '请填写下单时间', trigger: 'blur' }],
orderCategory: [{ required: true, message: '请填写订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出', trigger: 'blur' }],
orderStatus: [{ required: true, message: '请填写订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消', trigger: 'blur' }],
finishTime: [{ required: true, message: '请填写完结时间', trigger: 'blur' }],
transOrgId: [{ required: true, message: '请填写运输组织 Idcst_org.id', trigger: 'blur' }],
transCustomerId: [{ required: true, message: '请填写运输方客户 Id', trigger: 'blur' }],
assignmentTransTime: [{ required: true, message: '请填写指派清运公司时间', trigger: 'blur' }],
stationId: [{ required: true, message: '请填写站点 Idcst_station.id', trigger: 'blur' }],
stationName: [{ required: true, message: '请填写站点名称cst_station.station.name', trigger: 'blur' }],
transDistance: [{ required: true, message: '请填写运距;单位:米', trigger: 'blur' }],
estimatedQuantity: [{ required: true, message: '请填写预估量', trigger: 'blur' }],
estimatedTrainNum: [{ required: true, message: '请填写预估车数', trigger: 'blur' }],
goodsId: [{ required: true, message: '请填写产品 Id', trigger: 'blur' }],
goodsName: [{ required: true, message: '请填写产品名称', trigger: 'blur' }],
unit: [{ required: true, message: '请填写计量单位字典代码unit', trigger: 'blur' }],
customerMemo: [{ 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' }],
})
function dialogCloseHandler() {
formData.$reset()
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
if (formData.id != null) {
FormUtil.submit(orderFormIns, () => OrderApi.modify(formData))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
} else {
FormUtil.submit(orderFormIns, () => OrderApi.add(formData))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
}
}
defineExpose({
open(data: OrderTypes.SearchOrderResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
OrderApi.detail(data.id!)
.then(res => {
formData.$reset(res.data)
})
} else {
status.value = 'add'
formData.$reset(data)
}
}
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
}
</style>