订单列表

master
lzq 2026-01-26 18:39:48 +08:00
parent c8ebd5ef00
commit 9b8af50aa9
27 changed files with 527 additions and 1711 deletions

View File

@ -180,7 +180,7 @@ function paging(param: CustomerTypes.SearchCustomerParam) {
return CustomerApi.paging(param) return CustomerApi.paging(param)
.then(res => { .then(res => {
const dataList: CustomerTypes.TableData[] = [] const dataList: CustomerTypes.TableData[] = []
for (const {userId, username, nickname, phone, customerInfos} of res.data) { for (const {userId, username, nickname, phone, customerInfos = []} of res.data.records) {
for (let i = 0; i < customerInfos.length; i++) { for (let i = 0; i < customerInfos.length; i++) {
const it = customerInfos[i] const it = customerInfos[i]
dataList.push({ dataList.push({

View File

@ -11,6 +11,9 @@
<ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/> <ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
<ElFormItem label="编码">
<ElInput v-model="searchForm.sn" clearable placeholder="编码" @clear="research"/>
</ElFormItem>
<ElFormItem label="分类名称"> <ElFormItem label="分类名称">
<ElInput v-model="searchForm.categoryName" clearable placeholder="分类名称" @clear="research"/> <ElInput v-model="searchForm.categoryName" clearable placeholder="分类名称" @clear="research"/>
</ElFormItem> </ElFormItem>
@ -24,6 +27,9 @@
<ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/> <ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.sn" clearable placeholder="编码" @clear="research"/>
</ElFormItem>
<ElFormItem> <ElFormItem>
<ElInput v-model="searchForm.categoryName" clearable placeholder="分类名称" @clear="research"/> <ElInput v-model="searchForm.categoryName" clearable placeholder="分类名称" @clear="research"/>
</ElFormItem> </ElFormItem>
@ -35,7 +41,9 @@
</template> </template>
</ElTableColumn> </ElTableColumn>
<ElTableColumn label="业务类型" prop="bizTypeTxt"/> <ElTableColumn label="业务类型" prop="bizTypeTxt"/>
<ElTableColumn label="编码" prop="sn"/>
<ElTableColumn label="分类名称" prop="categoryName"/> <ElTableColumn label="分类名称" prop="categoryName"/>
<ElTableColumn label="备注" prop="memo"/>
<ElTableColumn label="创建时间" prop="createTime"/> <ElTableColumn label="创建时间" prop="createTime"/>
</template> </template>
<GoodsCategoryForm ref="goodsCategoryForm" :research="research"/> <GoodsCategoryForm ref="goodsCategoryForm" :research="research"/>

View File

@ -16,12 +16,18 @@
<ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/> <ElOption v-for="item in bizType" :key="item.val" :label="item.txt" :value="item.val"/>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
<ElFormItem v-if="formData.bizType===bizType.HuiShouPin" label="国标码" prop="sn">
<ElInput v-model="formData.sn" placeholder="国标码"/>
</ElFormItem>
<ElFormItem label="分类名称" prop="categoryName"> <ElFormItem label="分类名称" prop="categoryName">
<ElInput v-model="formData.categoryName" placeholder="分类名称"/> <ElInput v-model="formData.categoryName" placeholder="分类名称"/>
</ElFormItem> </ElFormItem>
<ElFormItem label="排序" prop="sort"> <ElFormItem label="排序" prop="sort">
<ElInputNumber v-model="formData.sort" :min="0" placeholder="排序"/> <ElInputNumber v-model="formData.sort" :min="0" placeholder="排序"/>
</ElFormItem> </ElFormItem>
<ElFormItem label="备注" prop="memo">
<ElInput v-model="formData.memo" placeholder="备注"/>
</ElFormItem>
</div> </div>
</template> </template>
</AFormPanel> </AFormPanel>
@ -47,6 +53,7 @@ const uploaderIns = useTemplateRef<InstanceType<typeof Uploader>>('uploader')
const status = ref<'add' | 'modify'>('add') const status = ref<'add' | 'modify'>('add')
const rules = reactive<FormRules<GoodsCategoryTypes.SearchGoodsCategoryResult>>({ const rules = reactive<FormRules<GoodsCategoryTypes.SearchGoodsCategoryResult>>({
bizType: [ {required: true, message: '请填写业务类型', trigger: 'blur'} ], bizType: [ {required: true, message: '请填写业务类型', trigger: 'blur'} ],
sn: [ {required: true, message: '请填写国标码', trigger: 'blur'} ],
categoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ], categoryName: [ {required: true, message: '请填写分类名称', trigger: 'blur'} ],
picture: [ {required: true, message: '请上传图片', trigger: 'blur'} ], picture: [ {required: true, message: '请上传图片', trigger: 'blur'} ],
sort: [ {required: true, message: '请填写排序', trigger: 'blur'} ], sort: [ {required: true, message: '请填写排序', trigger: 'blur'} ],
@ -104,6 +111,13 @@ defineExpose({
} }
} }
} }
}
:deep(.el-form-item) {
&:last-child:nth-child(2n+1) {
grid-column: span 2;
width: 100%;
}
}
}
</style> </style>

View File

@ -18,22 +18,18 @@ declare global {
id: string id: string
// 业务类型字典代码biz_typeZaiShengPin-->再生品、HuiShouPin-->回收品、QiTa-->其他 // 业务类型字典代码biz_typeZaiShengPin-->再生品、HuiShouPin-->回收品、QiTa-->其他
bizType?: string bizType?: string
// 国标码
sn?: string
// 分类名称 // 分类名称
categoryName?: string categoryName?: string
// 图片 // 图片
picture?: string picture?: string
// 排序 // 排序
sort?: number sort?: number
// 创建人 Idsys_user.id
creatorId?: string
// 修改人 Idsys_user.id
modifierId?: string
// 创建时间 // 创建时间
createTime?: string createTime?: string
// 修改时间 // 备注
modifyTime?: string memo?: string
// 是否删除; 0-->未删除、1-->已删除
deleted?: boolean
} }
interface AddGoodsCategoryParam { interface AddGoodsCategoryParam {

View File

@ -1,3 +0,0 @@
export default {
component: () => import('@/pages/order/book-order/Order.vue'),
} as RouterTypes.RouteConfig

View File

@ -51,24 +51,47 @@
</ElFormItem> </ElFormItem>
</template> </template>
<template #columns> <template #columns>
<ElTableColumn label="订单编号" prop="sn"/> <ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
<ElTableColumn label="下单人" prop="contacts"/> <!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
<ElTableColumn label="联系方式" prop="phone"/> <ElTableColumn label="客户姓名" prop="contacts" width="100"/>
<ElTableColumn label="垃圾品类" prop="goodsName"/> <!-- <ElTableColumn label="联系方式" prop="phone"/> -->
<ElTableColumn label="运输站点" prop="goodsName"/> <ElTableColumn label="货品名称" prop="goodsName" width="120"/>
<ElTableColumn label="运距(米)" prop="transDistance"/>
<ElTableColumn label="预估量" prop="estimatedQuantity"/> <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
<ElTableColumn label="预估车数" prop="estimatedTrainNum"/> <template #default="{row}">
<ElTableColumn label="客户备注" prop="customerMemo"/> {{ row.projectName ?? '-' }}
<ElTableColumn label="创建时间" prop="createTime"/> </template>
</ElTableColumn>
<ElTableColumn label="站点名称" prop="stationName" width="120"/>
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="120"/>
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
<ElTableColumn label="车次" prop="trainNum" width="80"/>
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
<ElTableColumn label="净重(吨)" prop="settleWeight" width="100"/>
<!-- <ElTableColumn label="毛重(吨)" prop="roughWeight"/> -->
<!-- <ElTableColumn label="皮重(吨)" prop="tareWeight"/> -->
<ElTableColumn label="进场时间" prop="inTime" width="140"/>
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
<ElTableColumn label="出场时间" prop="outTime" width="140"/>
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt"/>
<ElTableColumn fixed="right" label="订单状态" prop="transStatusTxt"/>
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt"/>
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
</template> </template>
<OrderForm ref="orderForm" :research="research"/> <OrderForm ref="orderForm" :research="research"/>
</FormPage> </FormPage>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import OrderApi from '@/pages/order/book-order/order-api.ts' import OrderApi from '@/pages/order/order-api.ts'
import OrderForm from '@/pages/order/book-order/OrderForm.vue' import OrderForm from '@/pages/order/book/BookForm.vue'
import FormPage from '@/components/page/FormPage.vue' import FormPage from '@/components/page/FormPage.vue'
import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue' import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue'
import type { ComponentExposed } from 'vue-component-type-helpers' import type { ComponentExposed } from 'vue-component-type-helpers'

View File

@ -96,7 +96,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import OrderApi from '@/pages/order/book-order/order-api.ts' import OrderApi from '@/pages/order/order-api.ts'
import Utils from '@/common/utils' import Utils from '@/common/utils'
const showDialog = ref(false) const showDialog = ref(false)

View File

@ -180,7 +180,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import OrderApi from '@/pages/order/book-order/order-api.ts' import OrderApi from '@/pages/order/order-api.ts'
import Strings from '@/common/utils/strings.ts' import Strings from '@/common/utils/strings.ts'
import FormUtil from '@/common/utils/formUtil.ts' import FormUtil from '@/common/utils/formUtil.ts'
import Utils from '@/common/utils' import Utils from '@/common/utils'
@ -190,7 +190,7 @@ import {
type FormRules, type FormRules,
} from 'element-plus' } from 'element-plus'
const emits = defineEmits(['editSucc']) const emits = defineEmits([ 'editSucc' ])
const showDialog = ref(false) const showDialog = ref(false)
const submiting = ref(false) const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add') const status = ref<'add' | 'view' | 'modify'>('add')
@ -199,34 +199,34 @@ const orderFormIns = useTemplateRef<FormInstance>('orderForm')
const formData = Utils.resetAble(reactive<OrderTypes.SearchOrderResult>({})) const formData = Utils.resetAble(reactive<OrderTypes.SearchOrderResult>({}))
const rules = reactive<FormRules<OrderTypes.SearchOrderResult>>({ const rules = reactive<FormRules<OrderTypes.SearchOrderResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }], id: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
sn: [{ required: true, message: '请填写订单编号', trigger: 'blur' }], sn: [ {required: true, message: '请填写订单编号', trigger: 'blur'} ],
projectId: [{ required: true, message: '请填写项目 Id', trigger: 'blur' }], projectId: [ {required: true, message: '请填写项目 Id', trigger: 'blur'} ],
userId: [{ required: true, message: '请填写下单人 Idsys_user.id', trigger: 'blur' }], userId: [ {required: true, message: '请填写下单人 Idsys_user.id', trigger: 'blur'} ],
customerId: [{ required: true, message: '请填写下单人客户 Idcst_customer.id', trigger: 'blur' }], customerId: [ {required: true, message: '请填写下单人客户 Idcst_customer.id', trigger: 'blur'} ],
contacts: [{ required: true, message: '请填写下单人姓名', trigger: 'blur' }], contacts: [ {required: true, message: '请填写下单人姓名', trigger: 'blur'} ],
phone: [{ required: true, message: '请填写下单人联系方式', trigger: 'blur' }], phone: [ {required: true, message: '请填写下单人联系方式', trigger: 'blur'} ],
orderTime: [{ required: true, message: '请填写下单时间', trigger: 'blur' }], orderTime: [ {required: true, message: '请填写下单时间', trigger: 'blur'} ],
orderCategory: [{ required: true, message: '请填写订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出', trigger: 'blur' }], orderCategory: [ {required: true, message: '请填写订单类型字典代码order_categoryHuiShouYuYue-->回收预约单、XiaoShouYuYue-->销售预约单、DuanBoRu-->短驳入、DuanBoChu-->短驳出', trigger: 'blur'} ],
orderStatus: [{ required: true, message: '请填写订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消', trigger: 'blur' }], orderStatus: [ {required: true, message: '请填写订单状态字典代码order_statusYiYuYue-->已预约、JinXingZhong-->进行中、YiWanCheng-->已完成、YiQuXiao-->已取消', trigger: 'blur'} ],
finishTime: [{ required: true, message: '请填写完结时间', trigger: 'blur' }], finishTime: [ {required: true, message: '请填写完结时间', trigger: 'blur'} ],
transOrgId: [ {required: true, message: '请填写运输企业 Idcst_org.id', trigger: 'blur'} ], transOrgId: [ {required: true, message: '请填写运输企业 Idcst_org.id', trigger: 'blur'} ],
transCustomerId: [{ required: true, message: '请填写运输方客户 Id', trigger: 'blur' }], transCustomerId: [ {required: true, message: '请填写运输方客户 Id', trigger: 'blur'} ],
assignmentTransTime: [{ required: true, message: '请填写指派清运公司时间', trigger: 'blur' }], assignmentTransTime: [ {required: true, message: '请填写指派清运公司时间', trigger: 'blur'} ],
stationId: [{ required: true, message: '请填写站点 Idcst_station.id', trigger: 'blur' }], stationId: [ {required: true, message: '请填写站点 Idcst_station.id', trigger: 'blur'} ],
stationName: [{ required: true, message: '请填写站点名称cst_station.station.name', trigger: 'blur' }], stationName: [ {required: true, message: '请填写站点名称cst_station.station.name', trigger: 'blur'} ],
transDistance: [{ required: true, message: '请填写运距;单位:米', trigger: 'blur' }], transDistance: [ {required: true, message: '请填写运距;单位:米', trigger: 'blur'} ],
estimatedQuantity: [{ required: true, message: '请填写预估量', trigger: 'blur' }], estimatedQuantity: [ {required: true, message: '请填写预估量', trigger: 'blur'} ],
estimatedTrainNum: [{ required: true, message: '请填写预估车数', trigger: 'blur' }], estimatedTrainNum: [ {required: true, message: '请填写预估车数', trigger: 'blur'} ],
goodsId: [{ required: true, message: '请填写产品 Id', trigger: 'blur' }], goodsId: [ {required: true, message: '请填写产品 Id', trigger: 'blur'} ],
goodsName: [{ required: true, message: '请填写产品名称', trigger: 'blur' }], goodsName: [ {required: true, message: '请填写产品名称', trigger: 'blur'} ],
unit: [{ required: true, message: '请填写计量单位字典代码unit', trigger: 'blur' }], unit: [ {required: true, message: '请填写计量单位字典代码unit', trigger: 'blur'} ],
customerMemo: [{ required: true, message: '请填写客户备注', trigger: 'blur' }], customerMemo: [ {required: true, message: '请填写客户备注', trigger: 'blur'} ],
creatorId: [{ required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur' }], creatorId: [ {required: true, message: '请填写创建人 Id sys_user.id', trigger: 'blur'} ],
modifierId: [{ 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' }], createTime: [ {required: true, message: '请填写创建时间', trigger: 'blur'} ],
modifyTime: [{ required: true, message: '请填写修改时间', trigger: 'blur' }], modifyTime: [ {required: true, message: '请填写修改时间', trigger: 'blur'} ],
deleted: [{ required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur' }], deleted: [ {required: true, message: '请填写是否删除; 0-->未删除、1-->已删除', trigger: 'blur'} ],
}) })
function dialogCloseHandler() { function dialogCloseHandler() {
@ -237,7 +237,7 @@ function submitHandler() {
if (status.value === 'view') return if (status.value === 'view') return
submiting.value = true submiting.value = true
if (formData.id != null) { if (formData.id != null) {
FormUtil.submit(orderFormIns, () => OrderApi.modify(formData)) FormUtil.submit(orderFormIns, () => OrderApi.modify(formData))
.then(() => { .then(() => {
ElMessage.success('修改成功') ElMessage.success('修改成功')
emits('editSucc') emits('editSucc')
@ -247,7 +247,7 @@ function submitHandler() {
submiting.value = false submiting.value = false
}) })
} else { } else {
FormUtil.submit(orderFormIns, () => OrderApi.add(formData)) FormUtil.submit(orderFormIns, () => OrderApi.add(formData))
.then(() => { .then(() => {
ElMessage.success('添加成功') ElMessage.success('添加成功')
emits('editSucc') emits('editSucc')
@ -272,7 +272,7 @@ defineExpose({
status.value = 'add' status.value = 'add'
formData.$reset(data) formData.$reset(data)
} }
} },
}) })
</script> </script>

View File

@ -184,7 +184,6 @@ declare global {
sn?: string sn?: string
// 项目 Id // 项目 Id
projectId?: string projectId?: string
projectInfo?: ProjectInfo
// 下单人 Idsys_user.id // 下单人 Idsys_user.id
userId?: string userId?: string
// 下单人客户 Idcst_customer.id // 下单人客户 Idcst_customer.id
@ -229,6 +228,7 @@ declare global {
customerMemo?: string customerMemo?: string
// 创建时间 // 创建时间
createTime?: string createTime?: string
projectInfo?: ProjectInfo
cargoPlace?: CargoPlace cargoPlace?: CargoPlace
transRecodes?: TransRecode[] transRecodes?: TransRecode[]
} }

View File

@ -0,0 +1,3 @@
export default {
component: () => import('@/pages/order/book/Book.vue'),
} as RouterTypes.RouteConfig

View File

@ -0,0 +1,138 @@
<template>
<FormPage
ref="formPage"
:action-column="actionColumn"
:form-style="{
border: false,
colCount: 3,
vgap: '20px',
hgap: '20px',
}"
:paging="paging">
<template #searchFormItem="{searchForm}">
<ElFormItem label="站点">
<ElInput v-model="searchForm.stationId" placeholder="站点"/>
</ElFormItem>
<ElFormItem label="订单编号">
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem label="项目名称">
<ElInput v-model="searchForm.projectName" placeholder="项目名称"/>
</ElFormItem>
<ElFormItem label="客户姓名">
<ElInput v-model="searchForm.contacts" placeholder="客户姓名"/>
</ElFormItem>
<ElFormItem label="联系方式">
<ElInput v-model="searchForm.phone" placeholder="联系方式"/>
</ElFormItem>
<ElFormItem label="订单类型">
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
<!-- <ElFormItem label="订单状态">
<ElInput v-model="searchForm.orderStatus" placeholder="订单状态"/>
</ElFormItem> -->
<ElFormItem label="运输企业">
<ElInput v-model="searchForm.transOrgName" placeholder="运输企业"/>
</ElFormItem>
<ElFormItem label="下单时间">
<ADtPicker v-model="searchForm.orderTimes" :change-handler="research"/>
</ElFormItem>
<ElFormItem label="完结时间">
<ADtPicker v-model="searchForm.finishTimes" :change-handler="research"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{searchForm}">
<ElFormItem>
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
<ElTableColumn label="客户姓名" prop="contacts" width="100"/>
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
<ElTableColumn label="项目名称" show-overflow-tooltip width="100">
<template #default="{row}">
{{ row.projectName ?? '-' }}
</template>
</ElTableColumn>
<ElTableColumn label="站点名称" prop="stationName" width="120"/>
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="120"/>
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
<ElTableColumn label="车次" prop="trainNum" width="80"/>
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
<ElTableColumn label="净重(吨)" prop="settleWeight" width="100"/>
<!-- <ElTableColumn label="毛重(吨)" prop="roughWeight"/> -->
<!-- <ElTableColumn label="皮重(吨)" prop="tareWeight"/> -->
<ElTableColumn label="进场时间" prop="inTime" width="140"/>
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
<ElTableColumn label="出场时间" prop="outTime" width="140"/>
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt"/>
<ElTableColumn fixed="right" label="订单状态" prop="transStatusTxt"/>
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt"/>
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
</template>
<OrderForm ref="orderForm" :research="research"/>
</FormPage>
</template>
<script lang="ts" setup>
import OrderApi from '@/pages/order/order-api.ts'
import OrderForm from '@/pages/order/book/BookForm.vue'
import FormPage from '@/components/page/FormPage.vue'
import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
const actionColumn = reactive<ActionColumnType<OrderTypes.SearchOrderResult>>({
tableActions: [
{
tooltip: '详情',
icon: 'Postcard',
action({row}) {
},
},
/* {
icon: 'Delete',
loading: false,
type: 'danger',
tooltip: '删除',
confirm: {
title: '是否删除当前数据',
},
action({row}) {
OrgApi.del([ row.id! ])
.then(() => {
ElMessage.success('删除成功')
return true
})
},
}, */
],
})
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')
function research() {
formPageIns.value?.doSearch()
}
function paging(param: OrderTypes.SearchOrderParam) {
return OrderApi.paging(param)
}
</script>

View File

@ -0,0 +1,3 @@
export default {
component: () => import('@/pages/order/cancel/Cancel.vue'),
} as RouterTypes.RouteConfig

View File

@ -0,0 +1,138 @@
<template>
<FormPage
ref="formPage"
:action-column="actionColumn"
:form-style="{
border: false,
colCount: 3,
vgap: '20px',
hgap: '20px',
}"
:paging="paging">
<template #searchFormItem="{searchForm}">
<ElFormItem label="站点">
<ElInput v-model="searchForm.stationId" placeholder="站点"/>
</ElFormItem>
<ElFormItem label="订单编号">
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem label="项目名称">
<ElInput v-model="searchForm.projectName" placeholder="项目名称"/>
</ElFormItem>
<ElFormItem label="客户姓名">
<ElInput v-model="searchForm.contacts" placeholder="客户姓名"/>
</ElFormItem>
<ElFormItem label="联系方式">
<ElInput v-model="searchForm.phone" placeholder="联系方式"/>
</ElFormItem>
<ElFormItem label="订单类型">
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
<!-- <ElFormItem label="订单状态">
<ElInput v-model="searchForm.orderStatus" placeholder="订单状态"/>
</ElFormItem> -->
<ElFormItem label="运输企业">
<ElInput v-model="searchForm.transOrgName" placeholder="运输企业"/>
</ElFormItem>
<ElFormItem label="下单时间">
<ADtPicker v-model="searchForm.orderTimes" :change-handler="research"/>
</ElFormItem>
<ElFormItem label="完结时间">
<ADtPicker v-model="searchForm.finishTimes" :change-handler="research"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{searchForm}">
<ElFormItem>
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
<ElTableColumn label="客户姓名" prop="contacts" width="100"/>
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
<ElTableColumn label="项目名称" show-overflow-tooltip width="100">
<template #default="{row}">
{{ row.projectName ?? '-' }}
</template>
</ElTableColumn>
<ElTableColumn label="站点名称" prop="stationName" width="120"/>
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="120"/>
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
<ElTableColumn label="车次" prop="trainNum" width="80"/>
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
<ElTableColumn label="净重(吨)" prop="settleWeight" width="100"/>
<!-- <ElTableColumn label="毛重(吨)" prop="roughWeight"/> -->
<!-- <ElTableColumn label="皮重(吨)" prop="tareWeight"/> -->
<ElTableColumn label="进场时间" prop="inTime" width="140"/>
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
<ElTableColumn label="出场时间" prop="outTime" width="140"/>
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt"/>
<ElTableColumn fixed="right" label="订单状态" prop="transStatusTxt"/>
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt"/>
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
</template>
<OrderForm ref="orderForm" :research="research"/>
</FormPage>
</template>
<script lang="ts" setup>
import OrderApi from '@/pages/order/order-api.ts'
import OrderForm from '@/pages/order/book/BookForm.vue'
import FormPage from '@/components/page/FormPage.vue'
import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
const actionColumn = reactive<ActionColumnType<OrderTypes.SearchOrderResult>>({
tableActions: [
{
tooltip: '详情',
icon: 'Postcard',
action({row}) {
},
},
/* {
icon: 'Delete',
loading: false,
type: 'danger',
tooltip: '删除',
confirm: {
title: '是否删除当前数据',
},
action({row}) {
OrgApi.del([ row.id! ])
.then(() => {
ElMessage.success('删除成功')
return true
})
},
}, */
],
})
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')
function research() {
formPageIns.value?.doSearch()
}
function paging(param: OrderTypes.SearchOrderParam) {
return OrderApi.paging(param)
}
</script>

View File

@ -0,0 +1,3 @@
export default {
component: () => import('@/pages/order/history/History.vue'),
} as RouterTypes.RouteConfig

View File

@ -1,4 +1,7 @@
import { get, post } from "@/common/utils/http-util.ts"; import {
get,
post,
} from '@/common/utils/http-util.ts'
export default { export default {
paging(data: OrderTypes.SearchOrderParam) { paging(data: OrderTypes.SearchOrderParam) {

View File

@ -0,0 +1,138 @@
<template>
<FormPage
ref="formPage"
:action-column="actionColumn"
:form-style="{
border: false,
colCount: 3,
vgap: '20px',
hgap: '20px',
}"
:paging="paging">
<template #searchFormItem="{searchForm}">
<ElFormItem label="站点">
<ElInput v-model="searchForm.stationId" placeholder="站点"/>
</ElFormItem>
<ElFormItem label="订单编号">
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem label="项目名称">
<ElInput v-model="searchForm.projectName" placeholder="项目名称"/>
</ElFormItem>
<ElFormItem label="客户姓名">
<ElInput v-model="searchForm.contacts" placeholder="客户姓名"/>
</ElFormItem>
<ElFormItem label="联系方式">
<ElInput v-model="searchForm.phone" placeholder="联系方式"/>
</ElFormItem>
<ElFormItem label="订单类型">
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
<!-- <ElFormItem label="订单状态">
<ElInput v-model="searchForm.orderStatus" placeholder="订单状态"/>
</ElFormItem> -->
<ElFormItem label="运输企业">
<ElInput v-model="searchForm.transOrgName" placeholder="运输企业"/>
</ElFormItem>
<ElFormItem label="下单时间">
<ADtPicker v-model="searchForm.orderTimes" :change-handler="research"/>
</ElFormItem>
<ElFormItem label="完结时间">
<ADtPicker v-model="searchForm.finishTimes" :change-handler="research"/>
</ElFormItem>
</template>
<template #simpleSearchFormItem="{searchForm}">
<ElFormItem>
<ElInput v-model="searchForm.sn" placeholder="订单编号"/>
</ElFormItem>
<ElFormItem>
<ElInput v-model="searchForm.orderCategory" placeholder="订单类型"/>
</ElFormItem>
</template>
<template #columns>
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
<ElTableColumn label="客户姓名" prop="contacts" width="100"/>
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
<ElTableColumn label="项目名称" show-overflow-tooltip width="100">
<template #default="{row}">
{{ row.projectName ?? '-' }}
</template>
</ElTableColumn>
<ElTableColumn label="站点名称" prop="stationName" width="120"/>
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="120"/>
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
<ElTableColumn label="车次" prop="trainNum" width="80"/>
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
<ElTableColumn label="净重(吨)" prop="settleWeight" width="100"/>
<!-- <ElTableColumn label="毛重(吨)" prop="roughWeight"/> -->
<!-- <ElTableColumn label="皮重(吨)" prop="tareWeight"/> -->
<ElTableColumn label="进场时间" prop="inTime" width="140"/>
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
<ElTableColumn label="出场时间" prop="outTime" width="140"/>
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt"/>
<ElTableColumn fixed="right" label="订单状态" prop="transStatusTxt"/>
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt"/>
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
</template>
<OrderForm ref="orderForm" :research="research"/>
</FormPage>
</template>
<script lang="ts" setup>
import OrderApi from '@/pages/order/order-api.ts'
import OrderForm from '@/pages/order/book/BookForm.vue'
import FormPage from '@/components/page/FormPage.vue'
import ADtPicker from '@/components/a-dt-picker/ADtPicker.vue'
import type { ComponentExposed } from 'vue-component-type-helpers'
import type { ActionColumnType } from '@/components/page/a-page-type.ts'
const actionColumn = reactive<ActionColumnType<OrderTypes.SearchOrderResult>>({
tableActions: [
{
tooltip: '详情',
icon: 'Postcard',
action({row}) {
},
},
/* {
icon: 'Delete',
loading: false,
type: 'danger',
tooltip: '删除',
confirm: {
title: '是否删除当前数据',
},
action({row}) {
OrgApi.del([ row.id! ])
.then(() => {
ElMessage.success('删除成功')
return true
})
},
}, */
],
})
const formPageIns = useTemplateRef<ComponentExposed<typeof FormPage>>('formPage')
function research() {
formPageIns.value?.doSearch()
}
function paging(param: OrderTypes.SearchOrderParam) {
return OrderApi.paging(param)
}
</script>

View File

@ -0,0 +1,3 @@
export default {
component: () => import('@/pages/order/realtime/Realtime.vue'),
} as RouterTypes.RouteConfig

View File

@ -1,106 +0,0 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label="看料照片" prop="checkPhoto">
<Uploader v-model:files="formData.checkPhoto"
:limit="3"
:upload-props="{
accept: 'image/*',
listType:'picture-card'
}"/>
</ElFormItem>
<ElFormItem label="备注" prop="weight">
<ElInput v-model="formData.checkerMemo" placeholder="请输入备注"></ElInput>
</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 TransApi from '@/pages/order/trans-order/trans-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'
import Uploader from '@/components/uploader/Uploader.vue'
const emits = defineEmits([ 'editSucc' ])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const transFormIns = useTemplateRef<FormInstance>('transForm')
const formData = Utils.resetAble(reactive<TransTypes.CheckResult>({}))
const rules = reactive<FormRules<TransTypes.CheckResult>>({
orderTransId: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset()
}
function submitHandler() {
// console.log(formData, "formData");
// return;
if (status.value === 'view') return
submiting.value = true
FormUtil.submit(transFormIns, () => {
let data = Object.assign({}, formData)
return TransApi.check(data)
})
.then(() => {
ElMessage.success('看料成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
// if (formData.id != null) {
// FormUtil.submit(transFormIns, () => TransApi.modify(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// } else {
// FormUtil.submit(transFormIns, () => TransApi.add(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// }
}
defineExpose({
open(data: TransTypes.SearchTransResult = {}) {
formData.orderTransId = data.id
showDialog.value = true
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
}
</style>

View File

@ -1,119 +0,0 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label="磅重" prop="weight">
<ElInput v-model="formData.weight" placeholder="请输入磅重" type="number">
<template #append></template>
</ElInput>
</ElFormItem>
<ElFormItem label="车头照" prop="cargoPhoto">
<Uploader v-model:file="formData.cargoPhoto"
:upload-props="{
accept: 'image/*',
listType:'picture-card'
}"/>
</ElFormItem>
<ElFormItem label="车斗照" prop="bodyPhoto">
<Uploader v-model:file="formData.bodyPhoto"
:upload-props="{
accept: 'image/*',
listType:'picture-card'
}"/>
</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 TransApi from '@/pages/order/trans-order/trans-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'
import Uploader from '@/components/uploader/Uploader.vue'
const emits = defineEmits([ 'editSucc' ])
const showDialog = ref(false)
const submiting = ref(false)
const status = ref<'add' | 'view' | 'modify'>('add')
const transFormIns = useTemplateRef<FormInstance>('transForm')
const formData = Utils.resetAble(reactive<TransTypes.InOutResult>({
weight: 0,
}))
const rules = reactive<FormRules<TransTypes.InOutResult>>({
orderTransId: [ {required: true, message: '请填写Id', trigger: 'blur'} ],
cargoPhoto: [ {required: true, message: '请上传车头照', trigger: 'blur'} ],
bodyPhoto: [ {required: true, message: '请上传车尾照', trigger: 'blur'} ],
weight: [ {required: true, message: '请输入磅重', trigger: 'blur'} ],
})
function dialogCloseHandler() {
formData.$reset()
}
function submitHandler() {
if (status.value === 'view') return
submiting.value = true
FormUtil.submit(transFormIns, () => {
let data = Object.assign({}, formData)
data.weight = data.weight * 1000
return TransApi.coming(data)
})
.then(() => {
ElMessage.success('进场成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
// if (formData.id != null) {
// FormUtil.submit(transFormIns, () => TransApi.modify(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// } else {
// FormUtil.submit(transFormIns, () => TransApi.add(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// }
}
defineExpose({
open(data: TransTypes.SearchTransResult = {}) {
formData.orderTransId = data.id
showDialog.value = true
},
})
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
}
</style>

View File

@ -1,121 +0,0 @@
<template>
<ElDialog v-model="showDialog" :close-on-click-modal="false" destroy-on-close width="fit-content" @close="dialogCloseHandler">
<ElForm :model="formData" :rules="rules" ref="transForm" class="form-panel" label-width="auto">
<ElFormItem label="磅重" prop="weight">
<ElInput v-model="formData.weight" placeholder="请输入磅重" type="number">
<template #append></template>
</ElInput>
</ElFormItem>
<ElFormItem label="车头照" prop="cargoPhoto">
<Uploader v-model:file="formData.cargoPhoto"
:upload-props="{
accept: 'image/*',
listType:'picture-card'
}"/>
</ElFormItem>
<ElFormItem label="车斗照" prop="bodyPhoto">
<Uploader v-model:file="formData.bodyPhoto"
:upload-props="{
accept: 'image/*',
listType:'picture-card'
}"/>
</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 TransApi from '@/pages/order/trans-order/trans-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'
import Uploader from '@/components/uploader/Uploader.vue'
const emits = defineEmits(["editSucc"]);
const showDialog = ref(false);
const submiting = ref(false);
const status = ref<"add" | "view" | "modify">("add");
const transFormIns = useTemplateRef<FormInstance>("transForm");
const formData = Utils.resetAble(
reactive<TransTypes.InOutResult>({
weight: 0,
})
);
const rules = reactive<FormRules<TransTypes.InOutResult>>({
orderTransId: [{ required: true, message: "请填写Id", trigger: "blur" }],
cargoPhoto: [{ required: true, message: "请上传车头照", trigger: "blur" }],
bodyPhoto: [{ required: true, message: "请上传车尾照", trigger: "blur" }],
weight: [{ required: true, message: "请输入磅重", trigger: "blur" }],
});
function dialogCloseHandler() {
formData.$reset();
}
function submitHandler() {
if (status.value === "view") return;
submiting.value = true;
FormUtil.submit(transFormIns, () => {
let data = Object.assign({}, formData);
data.weight = data.weight * 1000;
return TransApi.leaving(data);
})
.then(() => {
ElMessage.success("出场成功");
emits("editSucc");
showDialog.value = false;
})
.finally(() => {
submiting.value = false;
});
// if (formData.id != null) {
// FormUtil.submit(transFormIns, () => TransApi.modify(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// } else {
// FormUtil.submit(transFormIns, () => TransApi.add(formData))
// .then(() => {
// ElMessage.success("");
// emits("editSucc");
// showDialog.value = false;
// })
// .finally(() => {
// submiting.value = false;
// });
// }
}
defineExpose({
open(data: TransTypes.SearchTransResult = {}) {
formData.orderTransId = data.id;
showDialog.value = true;
},
});
</script>
<style lang="stylus" scoped>
.form-panel {
padding 20px
}
</style>

View File

@ -1,246 +0,0 @@
<template>
<Page>
<ElForm v-show="showSearchForm" inline @submit.prevent="paging">
<ElFormItem label="车次">
<ElInput v-model="searchForm.trainNum" placeholder="车次" />
</ElFormItem>
<ElFormItem label="订单 Id">
<ElInput v-model="searchForm.orderId" placeholder="订单 Id" />
</ElFormItem>
<!-- 字典代码trans_statusDaiPaiDan--待派单DaiJieDan--待接单YiJieDan--已接单YunShuZhong--运输中YiJinChang--已进场YiChuChang--已出场YiWanCheng--已完成YiQuXiao--已取消 -->
<ElFormItem label="运输状态">
<ElInput v-model="searchForm.transStatus" placeholder="运输状态" />
</ElFormItem>
<ElFormItem label="车道名称">
<ElInput v-model="searchForm.lane" placeholder="车道名称" />
</ElFormItem>
<ElFormItem label="勘料状态">
<!-- 字典代码check_statusWu--无需勘料YiKanLiao--已勘料WeiKanLiao--未勘料 -->
<ElInput v-model="searchForm.checkStatus" placeholder="勘料状态" />
</ElFormItem>
<ElFormItem label="车辆 Id">
<ElInput v-model="searchForm.truckId" placeholder="车辆 Id" />
</ElFormItem>
<ElFormItem label="车牌号">
<ElInput v-model="searchForm.truckLicensePlate" placeholder="车牌号" />
</ElFormItem>
<ElFormItem label="历史皮重">
<ElInput v-model="searchForm.historyTareWeight" placeholder="历史皮重" />
</ElFormItem>
<ElFormItem label="创建时间">
<ElInput v-model="searchForm.createTime" placeholder="创建时间" />
</ElFormItem>
<ElFormItem>
<ElButton :icon="elIcons.Search" :loading="searching" native-type="submit" type="primary">搜索</ElButton>
<ElButton :icon="elIcons.Refresh" :loading="searching" @click="reset"></ElButton>
</ElFormItem>
</ElForm>
<div class="tool-bar">
<div></div>
<!-- <ElButton :icon="elIcons.Plus" type="primary" @click="addHandler"></ElButton> -->
<ElButton :icon="elIcons.Filter" type="default" @click="showSearchForm = !showSearchForm" />
</div>
<ElTable v-loading="searching" :data="tableData" cell-class-name="table-cell" class="table-list" empty-text="暂无数据" header-row-class-name="table-header" row-key="id">
<!-- <ElTableColumn label="Id" prop="id" /> -->
<ElTableColumn label="订单" prop="orderId" show-overflow-tooltip width="100" />
<ElTableColumn label="订单状态" prop="orderStatusTxt" />
<ElTableColumn label="订单类型" prop="orderCategoryTxt" width="100" />
<ElTableColumn label="运输状态" prop="transStatusTxt" />
<ElTableColumn label="运输垃圾" prop="goodsName" />
<ElTableColumn label="车道名称" prop="lane" />
<ElTableColumn label="看料员" prop="checkerId" />
<ElTableColumn label="勘料状态" prop="checkStatusTxt" />
<ElTableColumn label="勘料时间" prop="checkTime" width="160" />
<ElTableColumn label="司机 Id" prop="driverId" />
<!-- <ElTableColumn label="司机所属用户 Id" prop="driverUserId" /> -->
<ElTableColumn label="归属企业" prop="truckOrgId"/>
<ElTableColumn label="车辆 Id" prop="truckId" />
<ElTableColumn label="车牌号" width="100" prop="truckLicensePlate" />
<ElTableColumn label="历史皮重" prop="historyTareWeight" />
<ElTableColumn label="毛重(吨)" width="100" prop="roughWeight" />
<ElTableColumn label="皮重(吨)" width="100" prop="tareWeight" />
<ElTableColumn label="净重(吨)" width="100" prop="settleWeight" />
<ElTableColumn label="车次" prop="trainNum" />
<ElTableColumn label="运距(米)" prop="transDistance" />
<!-- <ElTableColumn label="进场车头照片" prop="inFrontPhoto" />
<ElTableColumn label="进场车斗照片" prop="inBodyPhoto" />
<ElTableColumn label="出场车头照片" prop="outFrontPhoto" />
<ElTableColumn label="出场车斗照片" prop="outBodyPhoto" /> -->
<ElTableColumn label="进场时间" prop="inTime" width="160" />
<ElTableColumn label="出场时间" prop="outTime" />
<!-- MianFei--免费WeiZhiFu--未支付YiZhiFu--已支付YiTuiKuan--已退款 -->
<ElTableColumn label="支付状态" prop="paymentStatus" width="160" />
<ElTableColumn label="支付时间" prop="payTime" width="160" />
<ElTableColumn label="退款时间" prop="refundTime" />
<ElTableColumn label="总金额(元)" prop="totalMoney" />
<ElTableColumn label="优惠金额" prop="discountMoney" />
<ElTableColumn label="手动修正金额" prop="reviseMoney" />
<ElTableColumn label="结算金额(元)" prop="settleMoney" />
<ElTableColumn label="结算方式" prop="settlementWay" />
<ElTableColumn label="付款人" prop="payerUserId" />
<!-- <ElTableColumn label="创建人" prop="creatorId" /> -->
<ElTableColumn label="创建时间" prop="createTime" width="160" />
<ElTableColumn label="修改时间" prop="modifyTime" width="160" />
<ElTableColumn label="操作" width="180" fixed="right">
<template #default="scope">
<div class="action-btn">
<ElPopconfirm confirm-button-text="" cancel-button-text="" confirm-button-type="danger" cancel-button-type="primary" placement="top" title="是否删除当前数据?" width="180" @confirm="delHandler(scope)">
<template #reference>
<ElButton text type="danger" :loading="deling">删除</ElButton>
</template>
</ElPopconfirm>
<!-- <ElButton text type="primary" @click="modifyHandler(scope)"></ElButton> -->
<ElButton text v-if="scope.row.orderStatus == 'JinXingZhong' && scope.row.transStatus == 'YunShuZhong'" type="primary" @click="showInCar(scope)"></ElButton>
<ElButton text v-if="scope.row.checkStatus == 'YiKanLiao' && scope.row.transStatus == 'YiJinChang'" type="primary" @click="showOutCar(scope)"></ElButton>
<ElButton text v-if="scope.row.checkStatus == 'WeiKanLiao' && scope.row.transStatus == 'YiJinChang'" type="primary" @click="showCheck(scope)"></ElButton>
</div>
</template>
</ElTableColumn>
</ElTable>
<ElPagination layout="->, sizes, total, prev, pager, next" v-model:current-page="searchForm.current" v-model:page-size="searchForm.size" :total="totalCount" :page-sizes="[10, 20, 50, 100, 500]" :hide-on-single-page="false" :teleported="false" @change="paging" />
<TransForm ref="transForm" @edit-succ="paging" />
<InForm ref="inForm" @edit-succ="paging" />
<OutForm ref="outForm" @edit-succ="paging" />
<CheckForm ref="checkForm" @edit-succ="paging" />
</Page>
</template>
<script lang="ts" setup>
import TransApi from "@/pages/order/trans-order/trans-api.ts";
import TransForm from "@/pages/order/trans-order/TransForm.vue";
import InForm from "@/pages/order/trans-order/InForm.vue";
import OutForm from "@/pages/order/trans-order/OutForm.vue";
import CheckForm from "@/pages/order/trans-order/CheckForm.vue";
import Page from "@/components/page/Page.vue";
import { elIcons } from "@/common/element/element.ts";
import Utils from "@/common/utils";
const totalCount = ref(0);
const tableData = Utils.resetAble(reactive<TransTypes.SearchTransResult[]>([]));
const searchForm = Utils.resetAble(
reactive<TransTypes.SearchTransParam>({
current: 1,
size: 20,
orders: "create_time:desc",
})
);
const searching = ref(false);
const deling = ref(false);
const showSearchForm = ref(true);
// const transFormIns = useTemplateRef<InstanceType<typeof TransForm>>("transForm");
const inFormIns = useTemplateRef<InstanceType<typeof TransForm>>("inForm");
const outFormIns = useTemplateRef<InstanceType<typeof TransForm>>("outForm");
const checkFormIns = useTemplateRef<InstanceType<typeof TransForm>>("checkForm");
// function showDialog(data?: TransTypes.SearchTransResult) {
// transFormIns.value?.open(data);
// }
function delHandler({ row }: { row: TransTypes.SearchTransResult }) {
deling.value = true;
TransApi.del([row.id!])
.then(() => {
ElMessage.success("删除成功");
paging();
})
.finally(() => {
deling.value = false;
});
}
function showInCar({ row }: { row: TransTypes.SearchTransResult }) {
inFormIns.value?.open(row);
}
function showOutCar({ row }: { row: TransTypes.SearchTransResult }) {
outFormIns.value?.open(row);
}
function showCheck({ row }: { row: TransTypes.SearchTransResult }) {
checkFormIns.value?.open(row);
}
// function modifyHandler({ row }: { row: TransTypes.SearchTransResult }) {
// showDialog(row);
// }
// function addHandler() {
// showDialog();
// }
function reset() {
searchForm.$reset();
paging();
}
function paging() {
searching.value = true;
TransApi.paging(searchForm)
.then((res) => {
totalCount.value = res.data?.total ?? 0;
tableData.$reset(res.data?.records ?? []);
})
.finally(() => {
searching.value = false;
});
}
onMounted(() => {
paging();
});
</script>
<style lang="stylus" scoped>
.table-list {
flex 1;
margin 0 0 20px 0
width 100%
:deep(.table-header) {
color #454C59
th {
background-color #EDF1F7
font-weight 500
position relative
& > div {
display flex
gap 5px
align-items center
}
&:not(:first-child) > div::before {
position: absolute;
top: 50%;
left: 1px;
width: 1px;
background-color: #D3D7DE;
transform: translateY(-50%);
content: "";
height 50%
}
}
}
:deep(.table-cell) {
color #2F3540
}
.action-btn {
width 100%
display flex
flex-wrap wrap
& > button {
margin 0
}
}
}
.tool-bar {
display flex
justify-content space-between
margin 0 0 20px 0
}
</style>

View File

@ -1,183 +0,0 @@
<template>
<ElDialog v-model="showDialog"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElDescriptions title="运输信息" border>
<ElDescriptionsItem label="Id" prop="id">
{{ detailData.id }}
</ElDescriptionsItem>
<ElDescriptionsItem label="车次" prop="trainNum">
{{ detailData.trainNum }}
</ElDescriptionsItem>
<ElDescriptionsItem label="订单 Id" prop="orderId">
{{ detailData.orderId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消" prop="transStatus">
{{ detailData.transStatus }}
</ElDescriptionsItem>
<ElDescriptionsItem label="车道名称" prop="lane">
{{ detailData.lane }}
</ElDescriptionsItem>
<ElDescriptionsItem label="指派司机时间" prop="assignmentDriverTime">
{{ detailData.assignmentDriverTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="司机确认接单时间" prop="driverConfirmTime">
{{ detailData.driverConfirmTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="开始运输时间" prop="transTime">
{{ detailData.transTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="完结时间" prop="finishTime">
{{ detailData.finishTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="看料员 Idsys_user.id" prop="checkerId">
{{ detailData.checkerId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料" prop="checkStatus">
{{ detailData.checkStatus }}
</ElDescriptionsItem>
<ElDescriptionsItem label="勘料时间" prop="checkTime">
{{ detailData.checkTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="勘料照片" prop="checkPhoto">
{{ detailData.checkPhoto }}
</ElDescriptionsItem>
<ElDescriptionsItem label="勘料员备注" prop="checkerMemo">
{{ detailData.checkerMemo }}
</ElDescriptionsItem>
<ElDescriptionsItem label="司机 Id" prop="driverId">
{{ detailData.driverId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="司机所属客户 Idcst_customer.id" prop="driverCustomerId">
{{ detailData.driverCustomerId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="司机所属用户 Id" prop="driverUserId">
{{ detailData.driverUserId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="归属客户 Idcst_customer.id" prop="truckCustomerId">
{{ detailData.truckCustomerId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="归属企业" prop="truckOrgId">
{{ detailData.truckOrgId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="车辆 Id" prop="truckId">
{{ detailData.truckId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="车牌号" prop="truckLicensePlate">
{{ detailData.truckLicensePlate }}
</ElDescriptionsItem>
<ElDescriptionsItem label="历史皮重" prop="historyTareWeight">
{{ detailData.historyTareWeight }}
</ElDescriptionsItem>
<ElDescriptionsItem label="毛重;单位:千克" prop="roughWeight">
{{ detailData.roughWeight }}
</ElDescriptionsItem>
<ElDescriptionsItem label="皮重;单位:千克" prop="tareWeight">
{{ detailData.tareWeight }}
</ElDescriptionsItem>
<ElDescriptionsItem label="净重;单位:千克" prop="settleWeight">
{{ detailData.settleWeight }}
</ElDescriptionsItem>
<ElDescriptionsItem label="运距;单位:米" prop="transDistance">
{{ detailData.transDistance }}
</ElDescriptionsItem>
<ElDescriptionsItem label="进场车头照片" prop="inFrontPhoto">
{{ detailData.inFrontPhoto }}
</ElDescriptionsItem>
<ElDescriptionsItem label="进场车斗照片" prop="inBodyPhoto">
{{ detailData.inBodyPhoto }}
</ElDescriptionsItem>
<ElDescriptionsItem label="出场车头照片" prop="outFrontPhoto">
{{ detailData.outFrontPhoto }}
</ElDescriptionsItem>
<ElDescriptionsItem label="出场车斗照片" prop="outBodyPhoto">
{{ detailData.outBodyPhoto }}
</ElDescriptionsItem>
<ElDescriptionsItem label="进场时间" prop="inTime">
{{ detailData.inTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="出场时间" prop="outTime">
{{ detailData.outTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款" prop="paymentStatus">
{{ detailData.paymentStatus }}
</ElDescriptionsItem>
<ElDescriptionsItem label="支付时间" prop="payTime">
{{ detailData.payTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="退款时间" prop="refundTime">
{{ detailData.refundTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="总金额;单位:元" prop="totalMoney">
{{ detailData.totalMoney }}
</ElDescriptionsItem>
<ElDescriptionsItem label="优惠金额;单位:元,有正负" prop="discountMoney">
{{ detailData.discountMoney }}
</ElDescriptionsItem>
<ElDescriptionsItem label="手动修正金额;单位:元,有正负" prop="reviseMoney">
{{ detailData.reviseMoney }}
</ElDescriptionsItem>
<ElDescriptionsItem label="结算金额;单位:元" prop="settleMoney">
{{ detailData.settleMoney }}
</ElDescriptionsItem>
<ElDescriptionsItem label="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付" prop="settlementWay">
{{ detailData.settlementWay }}
</ElDescriptionsItem>
<ElDescriptionsItem label="付款人 Idsys_user.id" prop="payerUserId">
{{ detailData.payerUserId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="付款人客户 Idcst_customer.id" prop="payerCustomerId">
{{ detailData.payerCustomerId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="付款方资金账户 Id" prop="payerMoneyAccount">
{{ detailData.payerMoneyAccount }}
</ElDescriptionsItem>
<ElDescriptionsItem label="创建人 Idsys_user.id" prop="creatorId">
{{ detailData.creatorId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="修改人 Id sys_user.id" prop="modifierId">
{{ detailData.modifierId }}
</ElDescriptionsItem>
<ElDescriptionsItem label="创建时间" prop="createTime">
{{ detailData.createTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="修改时间" prop="modifyTime">
{{ detailData.modifyTime }}
</ElDescriptionsItem>
<ElDescriptionsItem label="是否删除; 0-->未删除、1-->已删除" prop="deleted">
{{ detailData.deleted }}
</ElDescriptionsItem>
</ElDescriptions>
<template #footer>
<ElButton @click="showDialog = false" type="primary">关闭</ElButton>
</template>
</ElDialog>
</template>
<script lang="ts" setup>
import TransApi from '@/pages/order/trans-order/trans-api.ts'
import Utils from '@/common/utils'
const showDialog = ref(false)
const detailData = Utils.resetAble(reactive<TransTypes.SearchTransResult>({}))
function dialogCloseHandler() {
detailData.$reset()
}
defineExpose({
open(data: TransTypes.SearchTransResult) {
showDialog.value = true
TransApi.detail(data.id!)
.then(res => {
detailData.$reset(res.data)
})
}
})
</script>
<style lang="stylus" scoped>
</style>

View File

@ -1,417 +0,0 @@
<template>
<ElDialog v-model="showDialog"
:close-on-click-modal="false"
destroy-on-close
width="fit-content"
@close="dialogCloseHandler">
<ElForm :model="formData"
:rules="rules"
ref="transForm"
class="form-panel"
label-width="auto">
<ElFormItem label="Id" prop="id">
<ElInput
v-model="formData.id"
placeholder="Id"/>
</ElFormItem>
<ElFormItem label="车次" prop="trainNum">
<ElInput
v-model="formData.trainNum"
placeholder="车次"/>
</ElFormItem>
<ElFormItem label="订单 Id" prop="orderId">
<ElInput
v-model="formData.orderId"
placeholder="订单 Id"/>
</ElFormItem>
<ElFormItem label="车道名称" prop="lane">
<ElInput
v-model="formData.lane"
placeholder="车道名称"/>
</ElFormItem>
<ElFormItem label="指派司机时间" prop="assignmentDriverTime">
<ElInput
v-model="formData.assignmentDriverTime"
placeholder="指派司机时间"/>
</ElFormItem>
<ElFormItem label="司机确认接单时间" prop="driverConfirmTime">
<ElInput
v-model="formData.driverConfirmTime"
placeholder="司机确认接单时间"/>
</ElFormItem>
<ElFormItem label="开始运输时间" prop="transTime">
<ElInput
v-model="formData.transTime"
placeholder="开始运输时间"/>
</ElFormItem>
<ElFormItem label="完结时间" prop="finishTime">
<ElInput
v-model="formData.finishTime"
placeholder="完结时间"/>
</ElFormItem>
<ElFormItem label="看料员 Idsys_user.id" prop="checkerId">
<ElInput
v-model="formData.checkerId"
placeholder="看料员 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料" prop="checkStatus">
<ElInput
v-model="formData.checkStatus"
placeholder="勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料"/>
</ElFormItem>
<ElFormItem label="勘料时间" prop="checkTime">
<ElInput
v-model="formData.checkTime"
placeholder="勘料时间"/>
</ElFormItem>
<ElFormItem label="勘料照片" prop="checkPhoto">
<ElInput
v-model="formData.checkPhoto"
placeholder="勘料照片"/>
</ElFormItem>
<ElFormItem label="勘料员备注" prop="checkerMemo">
<ElInput
v-model="formData.checkerMemo"
placeholder="勘料员备注"/>
</ElFormItem>
<ElFormItem label="司机 Id" prop="driverId">
<ElInput
v-model="formData.driverId"
placeholder="司机 Id"/>
</ElFormItem>
<ElFormItem label="司机所属客户 Idcst_customer.id" prop="driverCustomerId">
<ElInput
v-model="formData.driverCustomerId"
placeholder="司机所属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label="司机所属用户 Id" prop="driverUserId">
<ElInput
v-model="formData.driverUserId"
placeholder="司机所属用户 Id"/>
</ElFormItem>
<ElFormItem label="归属客户 Idcst_customer.id" prop="truckCustomerId">
<ElInput
v-model="formData.truckCustomerId"
placeholder="归属客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label="归属企业" prop="truckOrgId">
<ElInput
v-model="formData.truckOrgId"
placeholder="归属企业"/>
</ElFormItem>
<ElFormItem label="车辆 Id" prop="truckId">
<ElInput
v-model="formData.truckId"
placeholder="车辆 Id"/>
</ElFormItem>
<ElFormItem label="车牌号" prop="truckLicensePlate">
<ElInput
v-model="formData.truckLicensePlate"
placeholder="车牌号"/>
</ElFormItem>
<ElFormItem label="历史皮重" prop="historyTareWeight">
<ElInput
v-model="formData.historyTareWeight"
placeholder="历史皮重"/>
</ElFormItem>
<ElFormItem label="毛重;单位:千克" prop="roughWeight">
<ElInput
v-model="formData.roughWeight"
placeholder="毛重;单位:千克"/>
</ElFormItem>
<ElFormItem label="皮重;单位:千克" prop="tareWeight">
<ElInput
v-model="formData.tareWeight"
placeholder="皮重;单位:千克"/>
</ElFormItem>
<ElFormItem label="净重;单位:千克" prop="settleWeight">
<ElInput
v-model="formData.settleWeight"
placeholder="净重;单位:千克"/>
</ElFormItem>
<ElFormItem label="运距;单位:米" prop="transDistance">
<ElInput
v-model="formData.transDistance"
placeholder="运距;单位:米"/>
</ElFormItem>
<ElFormItem label="进场车头照片" prop="inFrontPhoto">
<ElInput
v-model="formData.inFrontPhoto"
placeholder="进场车头照片"/>
</ElFormItem>
<ElFormItem label="进场车斗照片" prop="inBodyPhoto">
<ElInput
v-model="formData.inBodyPhoto"
placeholder="进场车斗照片"/>
</ElFormItem>
<ElFormItem label="出场车头照片" prop="outFrontPhoto">
<ElInput
v-model="formData.outFrontPhoto"
placeholder="出场车头照片"/>
</ElFormItem>
<ElFormItem label="出场车斗照片" prop="outBodyPhoto">
<ElInput
v-model="formData.outBodyPhoto"
placeholder="出场车斗照片"/>
</ElFormItem>
<ElFormItem label="进场时间" prop="inTime">
<ElInput
v-model="formData.inTime"
placeholder="进场时间"/>
</ElFormItem>
<ElFormItem label="出场时间" prop="outTime">
<ElInput
v-model="formData.outTime"
placeholder="出场时间"/>
</ElFormItem>
<ElFormItem label="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款" prop="paymentStatus">
<ElInput
v-model="formData.paymentStatus"
placeholder="支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款"/>
</ElFormItem>
<ElFormItem label="支付时间" prop="payTime">
<ElInput
v-model="formData.payTime"
placeholder="支付时间"/>
</ElFormItem>
<ElFormItem label="退款时间" prop="refundTime">
<ElInput
v-model="formData.refundTime"
placeholder="退款时间"/>
</ElFormItem>
<ElFormItem label="总金额;单位:元" prop="totalMoney">
<ElInput
v-model="formData.totalMoney"
placeholder="总金额;单位:元"/>
</ElFormItem>
<ElFormItem label="优惠金额;单位:元,有正负" prop="discountMoney">
<ElInput
v-model="formData.discountMoney"
placeholder="优惠金额;单位:元,有正负"/>
</ElFormItem>
<ElFormItem label="手动修正金额;单位:元,有正负" prop="reviseMoney">
<ElInput
v-model="formData.reviseMoney"
placeholder="手动修正金额;单位:元,有正负"/>
</ElFormItem>
<ElFormItem label="结算金额;单位:元" prop="settleMoney">
<ElInput
v-model="formData.settleMoney"
placeholder="结算金额;单位:元"/>
</ElFormItem>
<ElFormItem label="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付" prop="settlementWay">
<ElInput
v-model="formData.settlementWay"
placeholder="结算方式YueJie-->月结、YuE-->余额、XianFu-->现付"/>
</ElFormItem>
<ElFormItem label="付款人 Idsys_user.id" prop="payerUserId">
<ElInput
v-model="formData.payerUserId"
placeholder="付款人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label="付款人客户 Idcst_customer.id" prop="payerCustomerId">
<ElInput
v-model="formData.payerCustomerId"
placeholder="付款人客户 Idcst_customer.id"/>
</ElFormItem>
<ElFormItem label="付款方资金账户 Id" prop="payerMoneyAccount">
<ElInput
v-model="formData.payerMoneyAccount"
placeholder="付款方资金账户 Id"/>
</ElFormItem>
<ElFormItem label="创建人 Idsys_user.id" prop="creatorId">
<ElInput
v-model="formData.creatorId"
placeholder="创建人 Idsys_user.id"/>
</ElFormItem>
<ElFormItem label="修改人 Id sys_user.id" prop="modifierId">
<ElInput
v-model="formData.modifierId"
placeholder="修改人 Id sys_user.id"/>
</ElFormItem>
<ElFormItem label="创建时间" prop="createTime">
<ElInput
v-model="formData.createTime"
placeholder="创建时间"/>
</ElFormItem>
<ElFormItem label="修改时间" prop="modifyTime">
<ElInput
v-model="formData.modifyTime"
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 TransApi from '@/pages/order/trans-order/trans-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 transFormIns = useTemplateRef<FormInstance>('transForm')
const formData = Utils.resetAble(reactive<TransTypes.SearchTransResult>({}))
const rules = reactive<FormRules<TransTypes.SearchTransResult>>({
id: [{ required: true, message: '请填写Id', trigger: 'blur' }],
trainNum: [{ required: true, message: '请填写车次', trigger: 'blur' }],
orderId: [{ required: true, message: '请填写订单 Id', trigger: 'blur' }],
transStatus: [{ required: true, message: '请填写运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消', trigger: 'blur' }],
lane: [{ required: true, message: '请填写车道名称', trigger: 'blur' }],
assignmentDriverTime: [{ required: true, message: '请填写指派司机时间', trigger: 'blur' }],
driverConfirmTime: [{ required: true, message: '请填写司机确认接单时间', trigger: 'blur' }],
transTime: [{ required: true, message: '请填写开始运输时间', trigger: 'blur' }],
finishTime: [{ required: true, message: '请填写完结时间', trigger: 'blur' }],
checkerId: [{ required: true, message: '请填写看料员 Idsys_user.id', trigger: 'blur' }],
checkStatus: [{ required: true, message: '请填写勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料', trigger: 'blur' }],
checkTime: [{ required: true, message: '请填写勘料时间', trigger: 'blur' }],
checkPhoto: [{ required: true, message: '请填写勘料照片', trigger: 'blur' }],
checkerMemo: [{ required: true, message: '请填写勘料员备注', trigger: 'blur' }],
driverId: [{ required: true, message: '请填写司机 Id', trigger: 'blur' }],
driverCustomerId: [{ required: true, message: '请填写司机所属客户 Idcst_customer.id', trigger: 'blur' }],
driverUserId: [{ required: true, message: '请填写司机所属用户 Id', trigger: 'blur' }],
truckCustomerId: [{ required: true, message: '请填写归属客户 Idcst_customer.id', trigger: 'blur' }],
truckOrgId: [ {required: true, message: '请填写归属企业', trigger: 'blur'} ],
truckId: [{ required: true, message: '请填写车辆 Id', trigger: 'blur' }],
truckLicensePlate: [{ required: true, message: '请填写车牌号', trigger: 'blur' }],
historyTareWeight: [{ required: true, message: '请填写历史皮重', trigger: 'blur' }],
roughWeight: [{ required: true, message: '请填写毛重;单位:千克', trigger: 'blur' }],
tareWeight: [{ required: true, message: '请填写皮重;单位:千克', trigger: 'blur' }],
settleWeight: [{ required: true, message: '请填写净重;单位:千克', trigger: 'blur' }],
transDistance: [{ required: true, message: '请填写运距;单位:米', trigger: 'blur' }],
inFrontPhoto: [{ required: true, message: '请填写进场车头照片', trigger: 'blur' }],
inBodyPhoto: [{ required: true, message: '请填写进场车斗照片', trigger: 'blur' }],
outFrontPhoto: [{ required: true, message: '请填写出场车头照片', trigger: 'blur' }],
outBodyPhoto: [{ required: true, message: '请填写出场车斗照片', trigger: 'blur' }],
inTime: [{ required: true, message: '请填写进场时间', trigger: 'blur' }],
outTime: [{ required: true, message: '请填写出场时间', trigger: 'blur' }],
paymentStatus: [{ required: true, message: '请填写支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款', trigger: 'blur' }],
payTime: [{ required: true, message: '请填写支付时间', trigger: 'blur' }],
refundTime: [{ required: true, message: '请填写退款时间', trigger: 'blur' }],
totalMoney: [{ required: true, message: '请填写总金额;单位:元', trigger: 'blur' }],
discountMoney: [{ required: true, message: '请填写优惠金额;单位:元,有正负', trigger: 'blur' }],
reviseMoney: [{ required: true, message: '请填写手动修正金额;单位:元,有正负', trigger: 'blur' }],
settleMoney: [{ required: true, message: '请填写结算金额;单位:元', trigger: 'blur' }],
settlementWay: [{ required: true, message: '请填写结算方式YueJie-->月结、YuE-->余额、XianFu-->现付', trigger: 'blur' }],
payerUserId: [{ required: true, message: '请填写付款人 Idsys_user.id', trigger: 'blur' }],
payerCustomerId: [{ required: true, message: '请填写付款人客户 Idcst_customer.id', trigger: 'blur' }],
payerMoneyAccount: [{ required: true, message: '请填写付款方资金账户 Id', trigger: 'blur' }],
creatorId: [{ required: true, message: '请填写创建人 Idsys_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(transFormIns, () => TransApi.modify(formData))
.then(() => {
ElMessage.success('修改成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
} else {
FormUtil.submit(transFormIns, () => TransApi.add(formData))
.then(() => {
ElMessage.success('添加成功')
emits('editSucc')
showDialog.value = false
})
.finally(() => {
submiting.value = false
})
}
}
defineExpose({
open(data: TransTypes.SearchTransResult = {}) {
showDialog.value = true
if (!Strings.isBlank(data.id)) {
status.value = 'modify'
TransApi.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>

View File

@ -1,3 +0,0 @@
export default {
component: () => import('@/pages/order/trans-order/Trans.vue'),
} as RouterTypes.RouteConfig

View File

@ -1,34 +0,0 @@
import {
get,
post
} from '@/common/utils/http-util.ts'
export default {
paging(data: TransTypes.SearchTransParam) {
return get<G.PageResult<TransTypes.SearchTransResult>>("/order_trans/paging", data);
},
detail(id: string) {
return get<TransTypes.SearchTransResult>("/order_trans/detail", { id });
},
add(data: TransTypes.AddTransParam) {
return post("/order_trans/add", data);
},
modify(data: TransTypes.ModifyTransParam) {
return post("/order_trans/modify", data);
},
del(ids: string[]) {
return post("/order_trans/del", ids);
},
coming(data: TransTypes.InOutResult) {
return post("/order/truck_coming", data);
},
leaving(data: TransTypes.InOutResult) {
return post("/order/truck_leaving", data);
},
check(data: TransTypes.CheckResult) {
return post("/order/check", data);
},
};

View File

@ -1,422 +0,0 @@
export {};
declare global {
namespace TransTypes {
interface SearchTransParam extends G.PageParam {
// Id
id?: string;
// 车次
trainNum?: number;
// 订单 Id
orderId?: string;
// 运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
transStatus?: string;
// 车道名称
lane?: string;
// 指派司机时间
assignmentDriverTime?: string;
// 司机确认接单时间
driverConfirmTime?: string;
// 开始运输时间
transTime?: string;
// 完结时间
finishTime?: string;
// 看料员 Idsys_user.id
checkerId?: string;
// 勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料
checkStatus?: string;
// 勘料时间
checkTime?: string;
// 勘料照片
checkPhoto?: string;
// 勘料员备注
checkerMemo?: string;
// 司机 Id
driverId?: string;
// 司机所属客户 Idcst_customer.id
driverCustomerId?: string;
// 司机所属用户 Id
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
// 车牌号
truckLicensePlate?: string;
// 历史皮重
historyTareWeight?: number;
// 毛重;单位:千克
roughWeight?: number;
// 皮重;单位:千克
tareWeight?: number;
// 净重;单位:千克
settleWeight?: number;
// 运距;单位:米
transDistance?: number;
// 进场车头照片
inFrontPhoto?: string;
// 进场车斗照片
inBodyPhoto?: string;
// 出场车头照片
outFrontPhoto?: string;
// 出场车斗照片
outBodyPhoto?: string;
// 进场时间
inTime?: string;
// 出场时间
outTime?: string;
// 支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款
paymentStatus?: string;
// 支付时间
payTime?: string;
// 退款时间
refundTime?: string;
// 总金额;单位:元
totalMoney?: string;
// 优惠金额;单位:元,有正负
discountMoney?: string;
// 手动修正金额;单位:元,有正负
reviseMoney?: string;
// 结算金额;单位:元
settleMoney?: string;
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string;
// 付款人 Idsys_user.id
payerUserId?: string;
// 付款人客户 Idcst_customer.id
payerCustomerId?: string;
// 付款方资金账户 Id
payerMoneyAccount?: string;
// 创建人 Idsys_user.id
creatorId?: string;
// 修改人 Id sys_user.id
modifierId?: string;
// 创建时间
createTime?: string;
// 修改时间
modifyTime?: string;
// 是否删除; 0-->未删除、1-->已删除
deleted?: boolean;
}
interface SearchTransResult {
// Id
id?: string;
// 车次
trainNum?: number;
// 订单 Id
orderId?: string;
// 运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
transStatus?: string;
// 车道名称
lane?: string;
// 指派司机时间
assignmentDriverTime?: string;
// 司机确认接单时间
driverConfirmTime?: string;
// 开始运输时间
transTime?: string;
// 完结时间
finishTime?: string;
// 看料员 Idsys_user.id
checkerId?: string;
// 勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料
checkStatus?: string;
// 勘料时间
checkTime?: string;
// 勘料照片
checkPhoto?: string;
// 勘料员备注
checkerMemo?: string;
// 司机 Id
driverId?: string;
// 司机所属客户 Idcst_customer.id
driverCustomerId?: string;
// 司机所属用户 Id
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
// 车牌号
truckLicensePlate?: string;
// 历史皮重
historyTareWeight?: number;
// 毛重;单位:千克
roughWeight?: number;
// 皮重;单位:千克
tareWeight?: number;
// 净重;单位:千克
settleWeight?: number;
// 运距;单位:米
transDistance?: number;
// 进场车头照片
inFrontPhoto?: string;
// 进场车斗照片
inBodyPhoto?: string;
// 出场车头照片
outFrontPhoto?: string;
// 出场车斗照片
outBodyPhoto?: string;
// 进场时间
inTime?: string;
// 出场时间
outTime?: string;
// 支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款
paymentStatus?: string;
// 支付时间
payTime?: string;
// 退款时间
refundTime?: string;
// 总金额;单位:元
totalMoney?: string;
// 优惠金额;单位:元,有正负
discountMoney?: string;
// 手动修正金额;单位:元,有正负
reviseMoney?: string;
// 结算金额;单位:元
settleMoney?: string;
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string;
// 付款人 Idsys_user.id
payerUserId?: string;
// 付款人客户 Idcst_customer.id
payerCustomerId?: string;
// 付款方资金账户 Id
payerMoneyAccount?: string;
// 创建人 Idsys_user.id
creatorId?: string;
// 修改人 Id sys_user.id
modifierId?: string;
// 创建时间
createTime?: string;
// 修改时间
modifyTime?: string;
// 是否删除; 0-->未删除、1-->已删除
deleted?: boolean;
}
interface AddTransParam {
// Id
id?: string;
// 车次
trainNum?: number;
// 订单 Id
orderId?: string;
// 运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
transStatus?: string;
// 车道名称
lane?: string;
// 指派司机时间
assignmentDriverTime?: string;
// 司机确认接单时间
driverConfirmTime?: string;
// 开始运输时间
transTime?: string;
// 完结时间
finishTime?: string;
// 看料员 Idsys_user.id
checkerId?: string;
// 勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料
checkStatus?: string;
// 勘料时间
checkTime?: string;
// 勘料照片
checkPhoto?: string;
// 勘料员备注
checkerMemo?: string;
// 司机 Id
driverId?: string;
// 司机所属客户 Idcst_customer.id
driverCustomerId?: string;
// 司机所属用户 Id
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
// 车牌号
truckLicensePlate?: string;
// 历史皮重
historyTareWeight?: number;
// 毛重;单位:千克
roughWeight?: number;
// 皮重;单位:千克
tareWeight?: number;
// 净重;单位:千克
settleWeight?: number;
// 运距;单位:米
transDistance?: number;
// 进场车头照片
inFrontPhoto?: string;
// 进场车斗照片
inBodyPhoto?: string;
// 出场车头照片
outFrontPhoto?: string;
// 出场车斗照片
outBodyPhoto?: string;
// 进场时间
inTime?: string;
// 出场时间
outTime?: string;
// 支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款
paymentStatus?: string;
// 支付时间
payTime?: string;
// 退款时间
refundTime?: string;
// 总金额;单位:元
totalMoney?: string;
// 优惠金额;单位:元,有正负
discountMoney?: string;
// 手动修正金额;单位:元,有正负
reviseMoney?: string;
// 结算金额;单位:元
settleMoney?: string;
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string;
// 付款人 Idsys_user.id
payerUserId?: string;
// 付款人客户 Idcst_customer.id
payerCustomerId?: string;
// 付款方资金账户 Id
payerMoneyAccount?: string;
// 创建人 Idsys_user.id
creatorId?: string;
// 修改人 Id sys_user.id
modifierId?: string;
// 创建时间
createTime?: string;
// 修改时间
modifyTime?: string;
// 是否删除; 0-->未删除、1-->已删除
deleted?: boolean;
}
interface ModifyTransParam {
// Id
id?: string;
// 车次
trainNum?: number;
// 订单 Id
orderId?: string;
// 运输状态字典代码trans_statusDaiPaiDan-->待派单、DaiJieDan-->待接单、YiJieDan-->已接单、YunShuZhong-->运输中、YiJinChang-->已进场、YiChuChang-->已出场、YiWanCheng-->已完成、YiQuXiao-->已取消
transStatus?: string;
// 车道名称
lane?: string;
// 指派司机时间
assignmentDriverTime?: string;
// 司机确认接单时间
driverConfirmTime?: string;
// 开始运输时间
transTime?: string;
// 完结时间
finishTime?: string;
// 看料员 Idsys_user.id
checkerId?: string;
// 勘料状态字典代码check_statusWu-->无需勘料、YiKanLiao-->已勘料、WeiKanLiao-->未勘料
checkStatus?: string;
// 勘料时间
checkTime?: string;
// 勘料照片
checkPhoto?: string;
// 勘料员备注
checkerMemo?: string;
// 司机 Id
driverId?: string;
// 司机所属客户 Idcst_customer.id
driverCustomerId?: string;
// 司机所属用户 Id
driverUserId?: string;
// 归属客户 Idcst_customer.id
truckCustomerId?: string;
// 归属企业
truckOrgId?: string;
// 车辆 Id
truckId?: string;
// 车牌号
truckLicensePlate?: string;
// 历史皮重
historyTareWeight?: number;
// 毛重;单位:千克
roughWeight?: number;
// 皮重;单位:千克
tareWeight?: number;
// 净重;单位:千克
settleWeight?: number;
// 运距;单位:米
transDistance?: number;
// 进场车头照片
inFrontPhoto?: string;
// 进场车斗照片
inBodyPhoto?: string;
// 出场车头照片
outFrontPhoto?: string;
// 出场车斗照片
outBodyPhoto?: string;
// 进场时间
inTime?: string;
// 出场时间
outTime?: string;
// 支付状态MianFei-->免费、WeiZhiFu-->未支付、YiZhiFu-->已支付、YiTuiKuan-->已退款
paymentStatus?: string;
// 支付时间
payTime?: string;
// 退款时间
refundTime?: string;
// 总金额;单位:元
totalMoney?: string;
// 优惠金额;单位:元,有正负
discountMoney?: string;
// 手动修正金额;单位:元,有正负
reviseMoney?: string;
// 结算金额;单位:元
settleMoney?: string;
// 结算方式YueJie-->月结、YuE-->余额、XianFu-->现付
settlementWay?: string;
// 付款人 Idsys_user.id
payerUserId?: string;
// 付款人客户 Idcst_customer.id
payerCustomerId?: string;
// 付款方资金账户 Id
payerMoneyAccount?: string;
// 创建人 Idsys_user.id
creatorId?: string;
// 修改人 Id sys_user.id
modifierId?: string;
// 创建时间
createTime?: string;
// 修改时间
modifyTime?: string;
// 是否删除; 0-->未删除、1-->已删除
deleted?: boolean;
}
interface InOutResult {
// Id
orderTransId?: string;
// 车头照
cargoPhoto?: string;
// 车尾照
bodyPhoto?: string;
// 磅重
weight: number;
}
interface CheckResult {
// Id
orderTransId?: string;
// 看料照
checkPhoto?: string[];
// 备注
checkerMemo?: string;
}
}
}