订单列表
parent
8894d0bb48
commit
045d327230
|
|
@ -19,7 +19,7 @@ interface ADetailPanelType<D extends object> {
|
||||||
}
|
}
|
||||||
|
|
||||||
const component = defineComponent(
|
const component = defineComponent(
|
||||||
<T extends object & { id?: string }, D extends object>(props: ADetailPanelType<D>, {slots, expose}: SetupContext) => {
|
<D extends object>(props: ADetailPanelType<D>, {slots, expose}: SetupContext) => {
|
||||||
|
|
||||||
const showDialog = ref(false)
|
const showDialog = ref(false)
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
|
@ -28,10 +28,10 @@ const component = defineComponent(
|
||||||
const dialogCloseHandler = () => {
|
const dialogCloseHandler = () => {
|
||||||
detailData.$reset()
|
detailData.$reset()
|
||||||
}
|
}
|
||||||
const open = (data: T) => {
|
const open = (id: string) => {
|
||||||
showDialog.value = true
|
showDialog.value = true
|
||||||
loading.value = true
|
loading.value = true
|
||||||
props.detailsLoader(data.id!)
|
props.detailsLoader(id)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
detailData.$reset((res?.data ?? {}) as any)
|
detailData.$reset((res?.data ?? {}) as any)
|
||||||
})
|
})
|
||||||
|
|
@ -70,8 +70,8 @@ const component = defineComponent(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
export interface ADetailPanelInstance<T extends object & { id?: string }> extends InstanceType<typeof component> {
|
export interface ADetailPanelInstance extends InstanceType<typeof component> {
|
||||||
open: (data: T) => void
|
open: (id: string) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -623,6 +623,8 @@ const component = defineComponent(
|
||||||
class="data-table"
|
class="data-table"
|
||||||
span-method={props.table.spanMethod}
|
span-method={props.table.spanMethod}
|
||||||
onSort-change={sortChangeHandler}
|
onSort-change={sortChangeHandler}
|
||||||
|
summary-method={props.table.summaryMethod}
|
||||||
|
show-summary={props.table.summaryMethod != null}
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
slots.columns?.()
|
slots.columns?.()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
import type { TableColumnCtx } from 'element-plus'
|
||||||
|
import type { DefaultRow } from 'element-plus/es/components/table/src/table/defaults'
|
||||||
|
|
||||||
|
export interface SummaryMethodProps<T extends object> {
|
||||||
|
columns: TableColumnCtx<T>[]
|
||||||
|
data: T[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SummariesType<T extends object> = {
|
||||||
|
[key in keyof T]?: (data: T[]) => string
|
||||||
|
} & {
|
||||||
|
[key: string]: (data: T[]) => string
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function buildSummaryMethod<T extends DefaultRow>(summaries: SummariesType<T>) {
|
||||||
|
return ({columns, data}: SummaryMethodProps<T>) => {
|
||||||
|
const summary: string[] = [ '合计' ]
|
||||||
|
for (let i = 1; i < columns.length; i++) {
|
||||||
|
const column = columns[i]
|
||||||
|
summary[i] = summaries[column.property]?.(data) ?? ''
|
||||||
|
}
|
||||||
|
return summary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</template>
|
</template>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
|
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="155"/>
|
||||||
<ElTableColumn label="客户姓名" prop="contacts" width="100"/>
|
<ElTableColumn label="客户姓名" prop="contacts" width="100"/>
|
||||||
<ElTableColumn label="客户电话" prop="phone" width="120"/>
|
<ElTableColumn label="客户电话" prop="phone" width="120"/>
|
||||||
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
|
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
|
||||||
|
|
@ -57,21 +57,38 @@
|
||||||
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="100"/>
|
<ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="100"/>
|
||||||
<ElTableColumn label="运距" prop="transDistance" width="100">
|
<ElTableColumn label="运距" prop="transDistance" width="100">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.transDistance == null ? '' : row.transDistance + ' 公里'}` }}
|
{{ `${row.transDistance == null ? '' : (row.transDistance / 1000) + ' 公里'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
|
|
||||||
<ElTableColumn label="车次" prop="trainNum" width="70"/>
|
<ElTableColumn label="车次" prop="trainNum" width="70"/>
|
||||||
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
|
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120">
|
||||||
<ElTableColumn label="司机姓名" prop="driverName" width="100"/>
|
|
||||||
<ElTableColumn label="司机电话" prop="driverPhone" width="120"/>
|
|
||||||
<ElTableColumn label="下单时间" prop="orderTime" width="175"/>
|
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
{{ Strings.isBlank(row.truckLicensePlate) ? '-' : row.truckLicensePlate }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="订单状态" prop="transStatus" width="90">
|
<ElTableColumn label="司机姓名" prop="driverName" width="100">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ row.driverName ?? '-' }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="司机电话" prop="driverPhone" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ row.driverPhone ?? '-' }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn fixed="right" label="总金额" prop="settleMoney" width="80">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ `${row.settleMoney == null ? '' : row.settleMoney + ' 元'}` }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="下单时间" prop="orderTime" width="175"/>
|
||||||
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn fixed="right" label="运输状态" prop="transStatus" width="90">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="transStatusColor.cs(row.transStatus)"> {{ row.transStatusTxt }}</ElTag>
|
<ElTag :data-cs="transStatusColor.cs(row.transStatus)"> {{ row.transStatusTxt }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -79,7 +96,7 @@
|
||||||
</template>
|
</template>
|
||||||
<BookForm ref="bookForm" :research="research"/>
|
<BookForm ref="bookForm" :research="research"/>
|
||||||
<BookDetail ref="bookDetail"/>
|
<BookDetail ref="bookDetail"/>
|
||||||
<DispatchForm ref="dispatchForm"/>
|
<DispatchForm ref="dispatchForm" @succ="research"/>
|
||||||
</ATablePage>
|
</ATablePage>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -100,9 +117,10 @@ import BookDetail from '@/pages/order/book/BookDetail.vue'
|
||||||
import type { R } from '@/common/utils/http-util.ts'
|
import type { R } from '@/common/utils/http-util.ts'
|
||||||
import DispatchForm from '@/pages/order/book/DispatchForm.vue'
|
import DispatchForm from '@/pages/order/book/DispatchForm.vue'
|
||||||
import OrderApi from '@/pages/order/order-api.ts'
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
import Strings from '@/common/utils/strings.ts'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
defaultOrderCategory: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
bizType: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
||||||
|
|
@ -122,7 +140,8 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
},
|
},
|
||||||
searchForm: {
|
searchForm: {
|
||||||
defaultData: {
|
defaultData: {
|
||||||
bizType: props.defaultOrderCategory,
|
bizType: props.bizType,
|
||||||
|
orderType: 'YuYue',
|
||||||
},
|
},
|
||||||
highForm: {
|
highForm: {
|
||||||
contentWidth: 342,
|
contentWidth: 342,
|
||||||
|
|
@ -143,9 +162,12 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
record.transRecodes = undefined
|
record.transRecodes = undefined
|
||||||
for (let i = 0; i < transRecodes.length; i++) {
|
for (let i = 0; i < transRecodes.length; i++) {
|
||||||
const it = transRecodes[i]
|
const it = transRecodes[i]
|
||||||
|
const settleMoney = it.paymentRecords?.map(it1 => +(it1.settleMoney ?? 0)).reduce((a: number, b: number) => a + b, 0) ?? 0
|
||||||
dataList.push({
|
dataList.push({
|
||||||
...record,
|
...record,
|
||||||
...it,
|
...it,
|
||||||
|
settleMoney,
|
||||||
|
orderId: record.id,
|
||||||
rowCount: i === 0 ? transRecodes.length : 0,
|
rowCount: i === 0 ? transRecodes.length : 0,
|
||||||
} as OrderTypes.TableData)
|
} as OrderTypes.TableData)
|
||||||
}
|
}
|
||||||
|
|
@ -185,7 +207,6 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
icon: 'Postcard',
|
icon: 'Postcard',
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
action({row}) {
|
action({row}) {
|
||||||
console.log(row)
|
|
||||||
bookDetailIns.value?.open(row)
|
bookDetailIns.value?.open(row)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -198,7 +219,7 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
icon: 'Position',
|
icon: 'Position',
|
||||||
action({row}) {
|
action({row}) {
|
||||||
dispatchFormIns.value?.open({
|
dispatchFormIns.value?.open({
|
||||||
orderId: row.id,
|
orderId: row.orderId,
|
||||||
sn: row.sn,
|
sn: row.sn,
|
||||||
transOrgId: row.transOrgId,
|
transOrgId: row.transOrgId,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,21 @@
|
||||||
<ElDescriptionsItem :span="1">
|
<ElDescriptionsItem :span="1">
|
||||||
<TransRecode :trans-recodes="detailData.transRecodes" v-bind="transRecodeProps">
|
<TransRecode :trans-recodes="detailData.transRecodes" v-bind="transRecodeProps">
|
||||||
<ElTableColumn label="车次" prop="trainNum"/>
|
<ElTableColumn label="车次" prop="trainNum"/>
|
||||||
<ElTableColumn label="司机姓名" prop="driverName"/>
|
<ElTableColumn label="司机姓名" prop="driverName">
|
||||||
<ElTableColumn label="司机电话" prop="driverPhone"/>
|
<template #default="{row}">
|
||||||
<ElTableColumn label="车牌号" prop="truckLicensePlate"/>
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="司机电话" prop="driverPhone">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="车牌号" prop="truckLicensePlate">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.truckLicensePlate ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="运输状态" prop="transStatusTxt" width="100">
|
<ElTableColumn fixed="right" label="运输状态" prop="transStatusTxt" width="100">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="transStatusColor.cs(row.transStatus)"> {{ row.transStatusTxt }}</ElTag>
|
<ElTag :data-cs="transStatusColor.cs(row.transStatus)"> {{ row.transStatusTxt }}</ElTag>
|
||||||
|
|
@ -56,7 +68,7 @@
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<div class="action-btn">
|
<div class="action-btn">
|
||||||
<ElTooltip content="派单" placement="top">
|
<ElTooltip content="派单" placement="top">
|
||||||
<ElButton :disabled="!Strings.isBlank(row.driverName)" :icon="elIcons.Position" class="icon-btn" plain type="primary" @click="dispatch(detailData, row.id, row.trainNum)"/>
|
<ElButton :disabled="row.transStatus !== transStatus.DaiPaiDan" :icon="elIcons.Position" class="icon-btn" plain type="primary" @click="dispatch(detailData, row.id, row.trainNum)"/>
|
||||||
</ElTooltip>
|
</ElTooltip>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -66,8 +78,8 @@
|
||||||
</ElDescriptions>
|
</ElDescriptions>
|
||||||
</template>
|
</template>
|
||||||
<template #footer="detailData">
|
<template #footer="detailData">
|
||||||
<ElButton :disabled="transRecodeProps.moduleValue.length<1" type="primary" @click="dispatch(detailData)">派单</ElButton>
|
<ElButton :disabled="transRecodeProps.moduleValue.length < 1 " type="primary" @click="dispatch(detailData)">派单</ElButton>
|
||||||
<DispatchForm ref="dispatchForm"/>
|
<DispatchForm ref="dispatchForm" @succ="succ"/>
|
||||||
</template>
|
</template>
|
||||||
</ADetailPanel>
|
</ADetailPanel>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -79,14 +91,17 @@ import ADetailPanel, {
|
||||||
} from '@/components/a-detail-panel/ADetailPanel.tsx'
|
} from '@/components/a-detail-panel/ADetailPanel.tsx'
|
||||||
import TransRecode, { buildTransRecodeProps } from '@/pages/order/trans-recode/TransRecode.tsx'
|
import TransRecode, { buildTransRecodeProps } from '@/pages/order/trans-recode/TransRecode.tsx'
|
||||||
import DispatchForm from '@/pages/order/book/DispatchForm.vue'
|
import DispatchForm from '@/pages/order/book/DispatchForm.vue'
|
||||||
import { transStatusColor } from '@/pages/order/constants.ts'
|
import {
|
||||||
|
transStatus,
|
||||||
|
transStatusColor,
|
||||||
|
} from '@/pages/order/constants.ts'
|
||||||
import { elIcons } from '@/common/element/element.ts'
|
import { elIcons } from '@/common/element/element.ts'
|
||||||
import Strings from '@/common/utils/strings.ts'
|
import Strings from '@/common/utils/strings.ts'
|
||||||
import OrderApi from '@/pages/order/order-api.ts'
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const detailPanelIns = useTemplateRef<ADetailPanelInstance<OrderTypes.TableData>>('detailPanel')
|
const detailPanelIns = useTemplateRef<ADetailPanelInstance>('detailPanel')
|
||||||
const dispatchFormIns = useTemplateRef<InstanceType<typeof DispatchForm>>('dispatchForm')
|
const dispatchFormIns = useTemplateRef<InstanceType<typeof DispatchForm>>('dispatchForm')
|
||||||
|
let orderId = ''
|
||||||
const transRecodeProps = buildTransRecodeProps({
|
const transRecodeProps = buildTransRecodeProps({
|
||||||
moduleValue: [],
|
moduleValue: [],
|
||||||
selectable: true,
|
selectable: true,
|
||||||
|
|
@ -97,7 +112,7 @@ const transRecodeProps = buildTransRecodeProps({
|
||||||
|
|
||||||
function dispatch(data: OrderTypes.SearchOrderResult, transId?: string, trainNum?: number) {
|
function dispatch(data: OrderTypes.SearchOrderResult, transId?: string, trainNum?: number) {
|
||||||
dispatchFormIns.value?.open({
|
dispatchFormIns.value?.open({
|
||||||
orderId: data.id,
|
// orderId: data.id,
|
||||||
sn: data.sn,
|
sn: data.sn,
|
||||||
transIds: transId == null ? transRecodeProps.moduleValue : [ transId ],
|
transIds: transId == null ? transRecodeProps.moduleValue : [ transId ],
|
||||||
transOrgId: data.transOrgId,
|
transOrgId: data.transOrgId,
|
||||||
|
|
@ -105,14 +120,21 @@ function dispatch(data: OrderTypes.SearchOrderResult, transId?: string, trainNum
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function succ() {
|
||||||
|
detailPanelIns.value?.open(orderId)
|
||||||
|
}
|
||||||
|
|
||||||
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
||||||
title: '订单详情',
|
title: '订单详情',
|
||||||
width: '80vw',
|
width: '80vw',
|
||||||
detailsLoader: OrderApi.detail,
|
detailsLoader(id) {
|
||||||
|
return OrderApi.detail(id, 'YuYue')
|
||||||
|
},
|
||||||
})
|
})
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open(data: OrderTypes.TableData) {
|
open(data: OrderTypes.TableData) {
|
||||||
detailPanelIns.value?.open(data)
|
orderId = data.orderId!
|
||||||
|
detailPanelIns.value?.open(data.orderId!)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ let transOrgId = ref<string | undefined>(undefined)
|
||||||
let sn = ref<string | undefined>(undefined)
|
let sn = ref<string | undefined>(undefined)
|
||||||
let trainNum = ref<number | undefined>(undefined)
|
let trainNum = ref<number | undefined>(undefined)
|
||||||
|
|
||||||
|
const emits = defineEmits([ 'succ' ])
|
||||||
const formPanelProps = buildFormPanelProps<OrderTypes.DispatchParam>({
|
const formPanelProps = buildFormPanelProps<OrderTypes.DispatchParam>({
|
||||||
title: '派单',
|
title: '派单',
|
||||||
labelWidth: '0',
|
labelWidth: '0',
|
||||||
|
|
@ -21,12 +22,14 @@ const formPanelProps = buildFormPanelProps<OrderTypes.DispatchParam>({
|
||||||
return Promise.resolve({})
|
return Promise.resolve({})
|
||||||
},
|
},
|
||||||
doSubmit(data) {
|
doSubmit(data) {
|
||||||
return OrderApi.dispatch({
|
return OrderApi.assignmentDriver({
|
||||||
orderId: orderId!,
|
orderId: orderId,
|
||||||
transIds: transIds!,
|
orderTransId: transIds,
|
||||||
driverId: data.driverId,
|
driverId: data.driverId,
|
||||||
})
|
})
|
||||||
.then(() => true)
|
.then(() => {
|
||||||
|
emits('succ')
|
||||||
|
})
|
||||||
},
|
},
|
||||||
rules: () => {
|
rules: () => {
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Book from '@/pages/order/book/Book.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Book default-order-category="XiaoShou"/>
|
<Book biz-type="XiaoShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Book from '@/pages/order/book/Book.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Book default-order-category="HuiShou"/>
|
<Book biz-type="HuiShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -36,10 +36,10 @@
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</template>
|
</template>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
|
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="155"/>
|
||||||
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
|
<ElTableColumn label="下单时间" prop="orderTime"/>
|
||||||
<!-- <ElTableColumn label="客户姓名" prop="contacts"/> -->
|
<ElTableColumn label="客户姓名" prop="contacts"/>
|
||||||
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
|
<ElTableColumn label="联系方式" prop="phone"/>
|
||||||
<ElTableColumn label="货品名称" prop="goodsName"/>
|
<ElTableColumn label="货品名称" prop="goodsName"/>
|
||||||
|
|
||||||
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
||||||
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
||||||
|
|
||||||
<ElTableColumn label="毛重" prop="roughWeight">
|
<!-- <ElTableColumn label="毛重" prop="roughWeight">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -70,16 +70,16 @@
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.settleWeight == null ? '' : row.settleWeight + ' 吨'}` }}
|
{{ `${row.settleWeight == null ? '' : row.settleWeight + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn> -->
|
||||||
<ElTableColumn label="进场时间" prop="inTime" width="175"/>
|
<!-- <ElTableColumn label="进场时间" prop="inTime" width="175"/> -->
|
||||||
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
||||||
<ElTableColumn label="出场时间" prop="outTime" width="175"/>
|
<!-- <ElTableColumn label="出场时间" prop="outTime" width="175"/> -->
|
||||||
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<!-- <ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>-->
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="checkStatusColor.cs(row.checkStatus)"> {{ row.checkStatusTxt }}</ElTag>
|
<ElTag :data-cs="checkStatusColor.cs(row.checkStatus)"> {{ row.checkStatusTxt }}</ElTag>
|
||||||
|
|
@ -105,16 +105,16 @@ import ATablePage, {
|
||||||
} from '@/components/a-page/a-table-page/ATablePage.tsx'
|
} from '@/components/a-page/a-table-page/ATablePage.tsx'
|
||||||
import {
|
import {
|
||||||
checkStatusColor,
|
checkStatusColor,
|
||||||
paymentStatusColor,
|
|
||||||
transStatusColor,
|
transStatusColor,
|
||||||
} from '@/pages/order/constants.ts'
|
} from '@/pages/order/constants.ts'
|
||||||
import { useTemplateRef } from 'vue'
|
import { useTemplateRef } from 'vue'
|
||||||
import type { R } from '@/common/utils/http-util.ts'
|
import type { R } from '@/common/utils/http-util.ts'
|
||||||
import HistoryDetail from '@/pages/order/history/HistoryDetail.vue'
|
import HistoryDetail from '@/pages/order/history/HistoryDetail.vue'
|
||||||
import CancelDetail from '@/pages/order/cancel/CancelDetail.vue'
|
import CancelDetail from '@/pages/order/cancel/CancelDetail.vue'
|
||||||
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
defaultOrderCategory: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
bizType: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
||||||
}>()
|
}>()
|
||||||
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
||||||
const cancelDetailIns = useTemplateRef<InstanceType<typeof HistoryDetail>>('cancelDetail')
|
const cancelDetailIns = useTemplateRef<InstanceType<typeof HistoryDetail>>('cancelDetail')
|
||||||
|
|
@ -132,12 +132,13 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
},
|
},
|
||||||
searchForm: {
|
searchForm: {
|
||||||
defaultData: {
|
defaultData: {
|
||||||
orderCategory: props.defaultOrderCategory,
|
bizType: props.bizType,
|
||||||
|
orderType: 'QuXiao',
|
||||||
},
|
},
|
||||||
highForm: {
|
highForm: {
|
||||||
contentWidth: 342,
|
contentWidth: 342,
|
||||||
},
|
},
|
||||||
/* paging(param: OrderTypes.SearchOrderParam) {
|
paging(param: OrderTypes.SearchOrderParam) {
|
||||||
return OrderApi.paging(param)
|
return OrderApi.paging(param)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const records = res.data.records
|
const records = res.data.records
|
||||||
|
|
@ -151,93 +152,13 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
dataList.push({
|
dataList.push({
|
||||||
...record,
|
...record,
|
||||||
...it,
|
...it,
|
||||||
|
orderId: record.id,
|
||||||
rowCount: i === 0 ? transRecodes.length : 0,
|
rowCount: i === 0 ? transRecodes.length : 0,
|
||||||
} as OrderTypes.TableData)
|
} as OrderTypes.TableData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res as R<G.PageResult<OrderTypes.TableData>>
|
return res as R<G.PageResult<OrderTypes.TableData>>
|
||||||
})
|
})
|
||||||
}, */
|
|
||||||
paging(param: OrderTypes.SearchOrderParam) {
|
|
||||||
return Promise.resolve({
|
|
||||||
code: 200,
|
|
||||||
data: {
|
|
||||||
current: param.current,
|
|
||||||
size: param.size,
|
|
||||||
total: 100,
|
|
||||||
records: [
|
|
||||||
{
|
|
||||||
rowCount: 3,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'YiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '运输中',
|
|
||||||
transStatus: 'YunShuZhong',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
] as OrderTypes.TableData[],
|
|
||||||
},
|
|
||||||
} as R<G.PageResult<OrderTypes.TableData>>)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
|
|
|
||||||
|
|
@ -72,9 +72,9 @@
|
||||||
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
|
|
@ -132,14 +132,16 @@ import Strings from '@/common/utils/strings.ts'
|
||||||
import AIcon from '@/components/a-icon/AIcon.vue'
|
import AIcon from '@/components/a-icon/AIcon.vue'
|
||||||
import OrderApi from '@/pages/order/order-api.ts'
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const detailPanelIns = useTemplateRef<ADetailPanelInstance<OrderTypes.TableData>>('detailPanel')
|
const detailPanelIns = useTemplateRef<ADetailPanelInstance>('detailPanel')
|
||||||
|
|
||||||
const transRecodeProps = buildTransRecodeProps({})
|
const transRecodeProps = buildTransRecodeProps({})
|
||||||
|
|
||||||
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
||||||
title: '订单详情',
|
title: '订单详情',
|
||||||
width: '80vw',
|
width: '80vw',
|
||||||
detailsLoader: OrderApi.detail,
|
detailsLoader(id) {
|
||||||
|
return OrderApi.detail(id, 'QuXiao')
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -158,7 +160,7 @@ function kanliao(data: OrderTypes.TransRecode) {
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open(data: OrderTypes.TableData) {
|
open(data: OrderTypes.TableData) {
|
||||||
detailPanelIns.value?.open(data)
|
detailPanelIns.value?.open(data.orderId!)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Cancel from '@/pages/order/cancel/Cancel.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Cancel default-order-category="XiaoShou"/>
|
<Cancel biz-type="XiaoShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Cancel from '@/pages/order/cancel/Cancel.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Cancel default-order-category="HuiShou"/>
|
<Cancel biz-type="HuiShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { createEnum } from '@/common/utils/enums.ts'
|
import { createEnum } from '@/common/utils/enums.ts'
|
||||||
import type { ColorSchemeType } from '@/common/utils/color-schemes.ts'
|
import type { ColorSchemeType } from '@/common/utils/color-schemes.ts'
|
||||||
|
import buildSummaryMethod, { type SummariesType } from '@/components/a-page/a-table-page/build-summary-method.ts'
|
||||||
|
|
||||||
const orderCategoryList = [
|
const orderCategoryList = [
|
||||||
{
|
{
|
||||||
|
|
@ -165,3 +166,27 @@ export const paymentStatusColor: {
|
||||||
return defaultColorScheme
|
return defaultColorScheme
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const summaries: SummariesType<any> = {
|
||||||
|
roughWeight(data) {
|
||||||
|
const summaryResult = data.map(it => +(it.roughWeight ?? 0)).reduce((a, b) => (a + b), 0)
|
||||||
|
return summaryResult == null ? '-' : (summaryResult / 1000) + ' 吨'
|
||||||
|
},
|
||||||
|
tareWeight(data) {
|
||||||
|
const summaryResult = data.map(it => +(it.tareWeight ?? 0)).reduce((a, b) => (a + b), 0)
|
||||||
|
return summaryResult == null ? '-' : (summaryResult / 1000) + ' 吨'
|
||||||
|
},
|
||||||
|
settleWeight(data) {
|
||||||
|
const summaryResult = data.map(it => +(it.settleWeight ?? 0)).reduce((a, b) => (a + b), 0)
|
||||||
|
return summaryResult == null ? '-' : (summaryResult / 1000) + ' 吨'
|
||||||
|
},
|
||||||
|
settleMoney(data) {
|
||||||
|
const summaryResult = data
|
||||||
|
.map(it => it
|
||||||
|
.paymentRecords?.map((it1: any) => +(it1.settleMoney ?? 0))
|
||||||
|
.reduce((a: number, b: number) => (a + b), 0) ?? 0,
|
||||||
|
).reduce((a, b) => (a + b), 0)
|
||||||
|
return summaryResult == null ? '-' : summaryResult + ' 元'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
export const summaryMethod = buildSummaryMethod(summaries)
|
||||||
|
|
|
||||||
|
|
@ -36,12 +36,16 @@
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</template>
|
</template>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
|
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="155"/>
|
||||||
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
|
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
|
||||||
<!-- <ElTableColumn label="客户姓名" prop="contacts"/> -->
|
<!-- <ElTableColumn label="客户姓名" prop="contacts"/> -->
|
||||||
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
|
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
|
||||||
<ElTableColumn label="货品名称" prop="goodsName"/>
|
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
|
||||||
|
<ElTableColumn label="运距" prop="transDistance" width="100">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ `${row.transDistance == null ? '' : (row.transDistance / 1000) + ' 公里'}` }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ row.projectName ?? '-' }}
|
{{ row.projectName ?? '-' }}
|
||||||
|
|
@ -56,28 +60,33 @@
|
||||||
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
||||||
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
||||||
|
|
||||||
<ElTableColumn label="毛重" prop="roughWeight">
|
<ElTableColumn label="毛重" prop="roughWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
{{ `${row.roughWeight == null ? '' : (row.roughWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="皮重" prop="tareWeight">
|
<ElTableColumn label="皮重" prop="tareWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.tareWeight == null ? '' : row.tareWeight + ' 吨'}` }}
|
{{ `${row.tareWeight == null ? '' : (row.tareWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="净重" prop="settleWeight">
|
<ElTableColumn label="净重" prop="settleWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.settleWeight == null ? '' : row.settleWeight + ' 吨'}` }}
|
{{ `${row.settleWeight == null ? '' : (row.settleWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="进场时间" prop="inTime" width="175"/>
|
<ElTableColumn label="进场时间" prop="inTime" width="175"/>
|
||||||
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
||||||
<ElTableColumn label="出场时间" prop="outTime" width="175"/>
|
<ElTableColumn label="出场时间" prop="outTime" width="175"/>
|
||||||
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="总金额" prop="settleMoney" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
{{ `${row.settleMoney == null ? '' : row.settleMoney + ' 元'}` }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
|
|
@ -106,14 +115,16 @@ import ATablePage, {
|
||||||
import {
|
import {
|
||||||
checkStatusColor,
|
checkStatusColor,
|
||||||
paymentStatusColor,
|
paymentStatusColor,
|
||||||
|
summaryMethod,
|
||||||
transStatusColor,
|
transStatusColor,
|
||||||
} from '@/pages/order/constants.ts'
|
} from '@/pages/order/constants.ts'
|
||||||
import { useTemplateRef } from 'vue'
|
import { useTemplateRef } from 'vue'
|
||||||
import type { R } from '@/common/utils/http-util.ts'
|
import type { R } from '@/common/utils/http-util.ts'
|
||||||
import HistoryDetail from '@/pages/order/history/HistoryDetail.vue'
|
import HistoryDetail from '@/pages/order/history/HistoryDetail.vue'
|
||||||
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
defaultOrderCategory: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
bizType: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
||||||
}>()
|
}>()
|
||||||
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
||||||
const historyDetailIns = useTemplateRef<InstanceType<typeof HistoryDetail>>('historyDetail')
|
const historyDetailIns = useTemplateRef<InstanceType<typeof HistoryDetail>>('historyDetail')
|
||||||
|
|
@ -131,12 +142,13 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
},
|
},
|
||||||
searchForm: {
|
searchForm: {
|
||||||
defaultData: {
|
defaultData: {
|
||||||
orderCategory: props.defaultOrderCategory,
|
bizType: props.bizType,
|
||||||
|
orderType: 'LiShi',
|
||||||
},
|
},
|
||||||
highForm: {
|
highForm: {
|
||||||
contentWidth: 342,
|
contentWidth: 342,
|
||||||
},
|
},
|
||||||
/* paging(param: OrderTypes.SearchOrderParam) {
|
paging(param: OrderTypes.SearchOrderParam) {
|
||||||
return OrderApi.paging(param)
|
return OrderApi.paging(param)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const records = res.data.records
|
const records = res.data.records
|
||||||
|
|
@ -147,96 +159,18 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
record.transRecodes = undefined
|
record.transRecodes = undefined
|
||||||
for (let i = 0; i < transRecodes.length; i++) {
|
for (let i = 0; i < transRecodes.length; i++) {
|
||||||
const it = transRecodes[i]
|
const it = transRecodes[i]
|
||||||
|
const settleMoney = it.paymentRecords?.map(it1 => +(it1.settleMoney ?? 0)).reduce((a: number, b: number) => a + b, 0) ?? 0
|
||||||
dataList.push({
|
dataList.push({
|
||||||
...record,
|
...record,
|
||||||
...it,
|
...it,
|
||||||
|
settleMoney,
|
||||||
|
orderId: record.id,
|
||||||
rowCount: i === 0 ? transRecodes.length : 0,
|
rowCount: i === 0 ? transRecodes.length : 0,
|
||||||
} as OrderTypes.TableData)
|
} as OrderTypes.TableData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res as R<G.PageResult<OrderTypes.TableData>>
|
return res as R<G.PageResult<OrderTypes.TableData>>
|
||||||
})
|
})
|
||||||
}, */
|
|
||||||
paging(param: OrderTypes.SearchOrderParam) {
|
|
||||||
return Promise.resolve({
|
|
||||||
code: 200,
|
|
||||||
data: {
|
|
||||||
current: param.current,
|
|
||||||
size: param.size,
|
|
||||||
total: 100,
|
|
||||||
records: [
|
|
||||||
{
|
|
||||||
rowCount: 3,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'YiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '运输中',
|
|
||||||
transStatus: 'YunShuZhong',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
] as OrderTypes.TableData[],
|
|
||||||
},
|
|
||||||
} as R<G.PageResult<OrderTypes.TableData>>)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
|
|
@ -252,8 +186,9 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
colspan: 1,
|
colspan: 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
summaryMethod,
|
||||||
actionColumn: {
|
actionColumn: {
|
||||||
width: 150,
|
width: 140,
|
||||||
tableActions: [
|
tableActions: [
|
||||||
{
|
{
|
||||||
tooltip: '详情',
|
tooltip: '详情',
|
||||||
|
|
|
||||||
|
|
@ -72,9 +72,9 @@
|
||||||
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
|
|
@ -132,14 +132,17 @@ import Strings from '@/common/utils/strings.ts'
|
||||||
import AIcon from '@/components/a-icon/AIcon.vue'
|
import AIcon from '@/components/a-icon/AIcon.vue'
|
||||||
import OrderApi from '@/pages/order/order-api.ts'
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const detailPanelIns = useTemplateRef<ADetailPanelInstance<OrderTypes.TableData>>('detailPanel')
|
const detailPanelIns = useTemplateRef<ADetailPanelInstance>('detailPanel')
|
||||||
|
const transRecodeProps = buildTransRecodeProps({
|
||||||
const transRecodeProps = buildTransRecodeProps({})
|
enableSummary: true,
|
||||||
|
})
|
||||||
|
|
||||||
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
||||||
title: '订单详情',
|
title: '订单详情',
|
||||||
width: '80vw',
|
width: '80vw',
|
||||||
detailsLoader: OrderApi.detail,
|
detailsLoader(id) {
|
||||||
|
return OrderApi.detail(id, 'LiShi')
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -158,7 +161,7 @@ function kanliao(data: OrderTypes.TransRecode) {
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open(data: OrderTypes.TableData) {
|
open(data: OrderTypes.TableData) {
|
||||||
detailPanelIns.value?.open(data)
|
detailPanelIns.value?.open(data.orderId!)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import History from '@/pages/order/history/History.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<History default-order-category="XiaoShou"/>
|
<History biz-type="XiaoShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import History from '@/pages/order/history/History.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<History default-order-category="HuiShou"/>
|
<History biz-type="HuiShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,39 @@ import {
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
paging(data: OrderTypes.SearchOrderParam) {
|
paging(data: OrderTypes.SearchOrderParam) {
|
||||||
return get<G.PageResult<OrderTypes.SearchOrderResult>>("/order/paging", data);
|
return get<G.PageResult<OrderTypes.SearchOrderResult>>('/order/paging', data)
|
||||||
},
|
},
|
||||||
detail(id: string) {
|
detail(id: string, orderType?: 'YuYue' | 'ShiShi' | 'LiShi' | 'QuXiao') {
|
||||||
return get<OrderTypes.SearchOrderResult>("/order/detail", { id });
|
return get<OrderTypes.SearchOrderResult>('/order/detail', {id, orderType})
|
||||||
},
|
},
|
||||||
add(data: OrderTypes.AddOrderParam) {
|
add(data: OrderTypes.AddOrderParam) {
|
||||||
return post("/order/add", data);
|
return post('/order/add', data)
|
||||||
},
|
},
|
||||||
modify(data: OrderTypes.ModifyOrderParam) {
|
modify(data: OrderTypes.ModifyOrderParam) {
|
||||||
return post("/order/modify", data);
|
return post('/order/modify', data)
|
||||||
},
|
},
|
||||||
del(ids: string[]) {
|
del(ids: string[]) {
|
||||||
return post("/order/del", ids);
|
return post('/order/del', ids)
|
||||||
},
|
},
|
||||||
dispatch(data: OrderTypes.DispatchParam) {
|
dispatch(data: OrderTypes.DispatchParam) {
|
||||||
return post('/order/dispatch', data)
|
return post('/order/dispatch', data)
|
||||||
},
|
},
|
||||||
assignmentOrg(data: any) {
|
assignmentOrg(data: any) {
|
||||||
return post("/order/assignmentOrg", data);
|
return post('/order/assignmentOrg', data)
|
||||||
},
|
},
|
||||||
orderTrans(data: OrderTypes.SearchOrderParam) {
|
orderTrans(data: OrderTypes.SearchOrderParam) {
|
||||||
return get<G.PageResult<OrderTypes.SearchOrderResult>>("/order_trans/paging", data);
|
return get<G.PageResult<OrderTypes.SearchOrderResult>>('/order_trans/paging', data)
|
||||||
},
|
},
|
||||||
};
|
assignmentDriver(data: OrderTypes.AssignmentDriver) {
|
||||||
|
return post('/order/assignmentDriver', data)
|
||||||
|
},
|
||||||
|
truckComing(data: OrderTypes.TruckComingLeavingParam) {
|
||||||
|
return post('/order/truck_coming', data)
|
||||||
|
},
|
||||||
|
truckLeaving(data: OrderTypes.TruckComingLeavingParam) {
|
||||||
|
return post('/order/truck_leaving', data)
|
||||||
|
},
|
||||||
|
check(data: OrderTypes.CheckParam) {
|
||||||
|
return post('/order/check', data)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -248,6 +248,7 @@ declare global {
|
||||||
rowCount: number
|
rowCount: number
|
||||||
// Id
|
// Id
|
||||||
id?: string
|
id?: string
|
||||||
|
orderId?: string
|
||||||
// 订单编号
|
// 订单编号
|
||||||
sn?: string
|
sn?: string
|
||||||
// 下单时间
|
// 下单时间
|
||||||
|
|
@ -408,5 +409,24 @@ declare global {
|
||||||
// 是否删除; 0-->未删除、1-->已删除
|
// 是否删除; 0-->未删除、1-->已删除
|
||||||
deleted?: boolean
|
deleted?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface AssignmentDriver {
|
||||||
|
orderId?: string
|
||||||
|
orderTransId?: string[]
|
||||||
|
driverId?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TruckComingLeavingParam {
|
||||||
|
orderTransId?: string
|
||||||
|
weight?: number
|
||||||
|
frontPhoto?: string
|
||||||
|
bodyPhoto?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CheckParam {
|
||||||
|
orderTransId?: string
|
||||||
|
checkPhoto?: string[]
|
||||||
|
checkerMemo?: string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import Uploader from '@/components/uploader/Uploader.vue'
|
||||||
|
import Utils from '@/common/utils'
|
||||||
|
import ADialog from '@/components/a-dialog/ADialog.vue'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
|
const orderData = Utils.resetAble(reactive<{
|
||||||
|
id: string
|
||||||
|
licensePlate: string,
|
||||||
|
}>({
|
||||||
|
id: '',
|
||||||
|
licensePlate: '',
|
||||||
|
}))
|
||||||
|
const title = computed(() => {
|
||||||
|
return `${orderData.licensePlate} 勘料`
|
||||||
|
})
|
||||||
|
|
||||||
|
const emits = defineEmits([ 'succ' ])
|
||||||
|
|
||||||
|
// const formIns = useTemplateRef<FormInstance>('formRef')
|
||||||
|
|
||||||
|
const inOutData = Utils.resetAble(reactive({
|
||||||
|
checkerMemo: '',
|
||||||
|
checkPhoto: [],
|
||||||
|
}))
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const submiting = ref(false)
|
||||||
|
|
||||||
|
function dialogCloseHandler() {
|
||||||
|
inOutData.$reset()
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitHandler() {
|
||||||
|
submiting.value = true
|
||||||
|
const data = {
|
||||||
|
orderTransId: orderData.id,
|
||||||
|
checkPhoto: inOutData.checkPhoto,
|
||||||
|
checkerMemo: inOutData.checkerMemo,
|
||||||
|
}
|
||||||
|
OrderApi.check(data)
|
||||||
|
.then(() => {
|
||||||
|
ElMessage.success(`${title.value}成功`)
|
||||||
|
showDialog.value = false
|
||||||
|
emits('succ')
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
submiting.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open(id: string, licensePlate: string) {
|
||||||
|
orderData.$reset({
|
||||||
|
id,
|
||||||
|
licensePlate,
|
||||||
|
})
|
||||||
|
showDialog.value = true
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<ADialog
|
||||||
|
v-model:show="showDialog"
|
||||||
|
:closed="dialogCloseHandler"
|
||||||
|
:submit-handler="submitHandler"
|
||||||
|
:title="title"
|
||||||
|
>
|
||||||
|
<ElForm ref="formRef"
|
||||||
|
class="check-panel-form"
|
||||||
|
@submit.prevent>
|
||||||
|
<ElFormItem label="勘料照片" prop="headerPhoto">
|
||||||
|
<Uploader v-model:files="inOutData.checkPhoto"/>
|
||||||
|
</ElFormItem>
|
||||||
|
<ElFormItem label="勘料备注" prop="headerPhoto">
|
||||||
|
<ElInput v-model="inOutData.checkerMemo"/>
|
||||||
|
</ElFormItem>
|
||||||
|
</ElForm>
|
||||||
|
<template #footer>
|
||||||
|
<ElButton @click="showDialog = false">关闭</ElButton>
|
||||||
|
<ElButton type="danger" @click="showDialog = false">拒收</ElButton>
|
||||||
|
<ElButton :loading="submiting" type="primary" @click="submitHandler">确认勘料</ElButton>
|
||||||
|
</template>
|
||||||
|
</ADialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.check-panel-form {
|
||||||
|
display grid
|
||||||
|
grid-template-areas "weight weight" \
|
||||||
|
"headerPhoto bodyPhoto"
|
||||||
|
gap: 0 20px;
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
:deep(.el-input-number) {
|
||||||
|
.el-input__suffix-inner {
|
||||||
|
padding-left 10px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
&:nth-child(1) {
|
||||||
|
grid-area weight
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
grid-area headerPhoto
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
grid-area bodyPhoto
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -7,6 +7,7 @@ import {
|
||||||
ElMessage,
|
ElMessage,
|
||||||
type FormInstance,
|
type FormInstance,
|
||||||
} from 'element-plus'
|
} from 'element-plus'
|
||||||
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const orderData = Utils.resetAble(reactive<{
|
const orderData = Utils.resetAble(reactive<{
|
||||||
id: string
|
id: string
|
||||||
|
|
@ -21,6 +22,8 @@ const title = computed(() => {
|
||||||
return `${orderData.licensePlate} ${orderData.state}`
|
return `${orderData.licensePlate} ${orderData.state}`
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const emits = defineEmits([ 'succ' ])
|
||||||
|
|
||||||
const formIns = useTemplateRef<FormInstance>('formRef')
|
const formIns = useTemplateRef<FormInstance>('formRef')
|
||||||
|
|
||||||
const inOutData = Utils.resetAble(reactive({
|
const inOutData = Utils.resetAble(reactive({
|
||||||
|
|
@ -37,12 +40,25 @@ function dialogCloseHandler() {
|
||||||
|
|
||||||
function submitHandler() {
|
function submitHandler() {
|
||||||
submiting.value = true
|
submiting.value = true
|
||||||
FormUtil.submit(formIns, () => Promise.resolve())
|
const data = {
|
||||||
|
orderTransId: orderData.id,
|
||||||
|
weight: (inOutData.weight ?? 0) * 1000,
|
||||||
|
frontPhoto: inOutData.headerPhoto,
|
||||||
|
bodyPhoto: inOutData.bodyPhoto,
|
||||||
|
}
|
||||||
|
FormUtil.submit(formIns, () => {
|
||||||
|
if (orderData.state === '进场') {
|
||||||
|
return OrderApi.truckComing(data).then(() => true)
|
||||||
|
} else {
|
||||||
|
return OrderApi.truckLeaving(data).then(() => true)
|
||||||
|
}
|
||||||
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
ElMessage.success(`${title.value}成功`)
|
ElMessage.success(`${title.value}成功`)
|
||||||
if ((res ?? true)) {
|
if ((res ?? true)) {
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
}
|
}
|
||||||
|
emits('succ')
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
submiting.value = false
|
submiting.value = false
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,11 @@
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</template>
|
</template>
|
||||||
<template #columns>
|
<template #columns>
|
||||||
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="140"/>
|
<ElTableColumn fixed="left" label="订单编号" prop="sn" width="155"/>
|
||||||
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
|
<!-- <ElTableColumn label="下单时间" prop="orderTime"/> -->
|
||||||
<!-- <ElTableColumn label="客户姓名" prop="contacts"/> -->
|
<!-- <ElTableColumn label="客户姓名" prop="contacts"/> -->
|
||||||
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
|
<!-- <ElTableColumn label="联系方式" prop="phone"/> -->
|
||||||
<ElTableColumn label="货品名称" prop="goodsName"/>
|
<ElTableColumn label="货品名称" prop="goodsName" width="120"/>
|
||||||
|
|
||||||
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
<!-- <ElTableColumn label="项目名称" show-overflow-tooltip width="100">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
|
|
@ -50,34 +50,57 @@
|
||||||
<!-- <ElTableColumn label="站点名称" prop="stationName" width="120"/> -->
|
<!-- <ElTableColumn label="站点名称" prop="stationName" width="120"/> -->
|
||||||
<!-- <ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="140"/> -->
|
<!-- <ElTableColumn label="运输单位" prop="transOrgName" show-overflow-tooltip width="140"/> -->
|
||||||
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
|
<!-- <ElTableColumn label="运距(米)" prop="transDistance"/> -->
|
||||||
|
<ElTableColumn label="运距" prop="transDistance" width="100">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ `${row.transDistance == null ? '' : (row.transDistance / 1000) + ' 公里'}` }}
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<ElTableColumn label="车次" prop="trainNum" width="70"/>
|
<ElTableColumn label="车次" prop="trainNum" width="70"/>
|
||||||
<ElTableColumn label="车牌号" prop="licensePlate" width="120"/>
|
<ElTableColumn label="司机姓名" prop="driverName" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="司机电话" prop="driverPhone" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.truckLicensePlate ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
<!-- <ElTableColumn label="司机姓名" prop="driverName"/> -->
|
||||||
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
<!-- <ElTableColumn label="司机电话" prop="driverPhone"/> -->
|
||||||
|
|
||||||
<ElTableColumn label="毛重" prop="roughWeight">
|
<ElTableColumn label="毛重" prop="roughWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
{{ `${row.roughWeight == null ? '' : (row.roughWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="皮重" prop="tareWeight">
|
<ElTableColumn label="皮重" prop="tareWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.tareWeight == null ? '' : row.tareWeight + ' 吨'}` }}
|
{{ `${row.tareWeight == null ? '' : (row.tareWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="净重" prop="settleWeight">
|
<ElTableColumn label="净重" prop="settleWeight" width="80">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.settleWeight == null ? '' : row.settleWeight + ' 吨'}` }}
|
{{ `${row.settleWeight == null ? '' : (row.settleWeight / 1000) + ' 吨'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn label="进场时间" prop="inTime" width="175"/>
|
<ElTableColumn label="进场时间" prop="inTime" width="175"/>
|
||||||
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
<!-- <ElTableColumn label="开始运输时间" prop="transTime"/> -->
|
||||||
<ElTableColumn label="出场时间" prop="outTime" width="175"/>
|
<ElTableColumn label="出场时间" prop="outTime" width="175"/>
|
||||||
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
<!-- <ElTableColumn label="完结时间" prop="finishTime"/> -->
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn fixed="right" label="总金额" prop="settleMoney" width="80">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ `${row.settleMoney == null ? '' : row.settleMoney + ' 元'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
|
|
@ -94,7 +117,8 @@
|
||||||
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
|
<!-- <ElTableColumn label="客户备注" prop="customerMemo"/> -->
|
||||||
</template>
|
</template>
|
||||||
<RealtimeDetail ref="realtimeDetail"/>
|
<RealtimeDetail ref="realtimeDetail"/>
|
||||||
<InOutPanel ref="inOutPanel"/>
|
<InOutPanel ref="inOutPanel" @succ="research"/>
|
||||||
|
<CheckPanel ref="checkPanel" @succ="research"/>
|
||||||
</ATablePage>
|
</ATablePage>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -108,21 +132,24 @@ import {
|
||||||
checkStatus,
|
checkStatus,
|
||||||
checkStatusColor,
|
checkStatusColor,
|
||||||
paymentStatusColor,
|
paymentStatusColor,
|
||||||
|
summaryMethod,
|
||||||
transStatus,
|
transStatus,
|
||||||
transStatusColor,
|
transStatusColor,
|
||||||
} from '@/pages/order/constants.ts'
|
} from '@/pages/order/constants.ts'
|
||||||
import InOutPanel from '@/pages/order/realtime/InOutPanel.vue'
|
import InOutPanel from '@/pages/order/realtime/InOutPanel.vue'
|
||||||
import { ElMessage } from 'element-plus'
|
|
||||||
import { useTemplateRef } from 'vue'
|
import { useTemplateRef } from 'vue'
|
||||||
import type { R } from '@/common/utils/http-util.ts'
|
import type { R } from '@/common/utils/http-util.ts'
|
||||||
import RealtimeDetail from '@/pages/order/realtime/RealtimeDetail.vue'
|
import RealtimeDetail from '@/pages/order/realtime/RealtimeDetail.vue'
|
||||||
|
import CheckPanel from '@/pages/order/realtime/CheckPanel.vue'
|
||||||
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
defaultOrderCategory: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
bizType: 'XiaoShou' | 'HuiShou' | 'DuanBo'
|
||||||
}>()
|
}>()
|
||||||
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
const tablePageIns = useTemplateRef<ATablePageInstance>('tablePage')
|
||||||
const realtimeDetailIns = useTemplateRef<InstanceType<typeof RealtimeDetail>>('realtimeDetail')
|
const realtimeDetailIns = useTemplateRef<InstanceType<typeof RealtimeDetail>>('realtimeDetail')
|
||||||
const inOutPanelIns = useTemplateRef<InstanceType<typeof InOutPanel>>('inOutPanel')
|
const inOutPanelIns = useTemplateRef<InstanceType<typeof InOutPanel>>('inOutPanel')
|
||||||
|
const checkPanelIns = useTemplateRef<InstanceType<typeof CheckPanel>>('checkPanel')
|
||||||
|
|
||||||
function research() {
|
function research() {
|
||||||
tablePageIns.value?.doSearch()
|
tablePageIns.value?.doSearch()
|
||||||
|
|
@ -137,112 +164,35 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
},
|
},
|
||||||
searchForm: {
|
searchForm: {
|
||||||
defaultData: {
|
defaultData: {
|
||||||
orderCategory: props.defaultOrderCategory,
|
bizType: props.bizType,
|
||||||
|
orderType: 'ShiShi',
|
||||||
},
|
},
|
||||||
highForm: {
|
highForm: {
|
||||||
contentWidth: 342,
|
contentWidth: 342,
|
||||||
},
|
},
|
||||||
/* paging(param: OrderTypes.SearchOrderParam) {
|
paging(param: OrderTypes.SearchOrderParam) {
|
||||||
return OrderApi.paging(param)
|
return OrderApi.paging(param)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const records = res.data.records
|
const records = res.data.records
|
||||||
const dataList: OrderTypes.TableData[] = []
|
const dataList: OrderTypes.TableData[] = []
|
||||||
res.data.records = dataList
|
res.data.records = dataList
|
||||||
for (const record of records) {
|
for (const record of records) {
|
||||||
const transRecodes = record.transRecodes ?? []
|
const transRecodes = (record.transRecodes ?? []) as TransRecode[]
|
||||||
record.transRecodes = undefined
|
record.transRecodes = undefined
|
||||||
for (let i = 0; i < transRecodes.length; i++) {
|
for (let i = 0; i < transRecodes.length; i++) {
|
||||||
const it = transRecodes[i]
|
const it = transRecodes[i] as TransRecode
|
||||||
|
const settleMoney = it.paymentRecords?.map(it1 => +(it1.settleMoney ?? 0)).reduce((a: number, b: number) => a + b, 0) ?? 0
|
||||||
dataList.push({
|
dataList.push({
|
||||||
...record,
|
...record,
|
||||||
...it,
|
...it,
|
||||||
|
settleMoney,
|
||||||
|
orderId: record.id,
|
||||||
rowCount: i === 0 ? transRecodes.length : 0,
|
rowCount: i === 0 ? transRecodes.length : 0,
|
||||||
} as OrderTypes.TableData)
|
} as OrderTypes.TableData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res as R<G.PageResult<OrderTypes.TableData>>
|
return res as R<G.PageResult<OrderTypes.TableData>>
|
||||||
})
|
})
|
||||||
}, */
|
|
||||||
paging(param: OrderTypes.SearchOrderParam) {
|
|
||||||
return Promise.resolve({
|
|
||||||
code: 200,
|
|
||||||
data: {
|
|
||||||
current: param.current,
|
|
||||||
size: param.size,
|
|
||||||
total: 100,
|
|
||||||
records: [
|
|
||||||
{
|
|
||||||
rowCount: 3,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'YiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '运输中',
|
|
||||||
transStatus: 'YunShuZhong',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rowCount: 0,
|
|
||||||
id: '123',
|
|
||||||
sn: '202308240001',
|
|
||||||
orderTime: '2023-08-24 10:00:00',
|
|
||||||
contacts: '张三',
|
|
||||||
phone: '13800000000',
|
|
||||||
projectName: '项目A',
|
|
||||||
stationName: '站点B',
|
|
||||||
goodsName: '商品X',
|
|
||||||
unit: '吨',
|
|
||||||
customerMemo: '客户备注',
|
|
||||||
estimatedQuantity: 100,
|
|
||||||
estimatedTrainNum: 2,
|
|
||||||
transDistance: 500,
|
|
||||||
orderCategoryTxt: '订单类型A',
|
|
||||||
transStatusTxt: '已进场',
|
|
||||||
transStatus: 'YiJinChang',
|
|
||||||
checkStatus: 'WeiKanLiao',
|
|
||||||
checkStatusTxt: '未勘料',
|
|
||||||
paymentStatusTxt: '未支付',
|
|
||||||
truckLicensePlate: '苏A9B905',
|
|
||||||
},
|
|
||||||
] as OrderTypes.TableData[],
|
|
||||||
},
|
|
||||||
} as R<G.PageResult<OrderTypes.TableData>>)
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
|
|
@ -258,8 +208,9 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
colspan: 1,
|
colspan: 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
summaryMethod,
|
||||||
actionColumn: {
|
actionColumn: {
|
||||||
width: 100,
|
width: 185,
|
||||||
foldLimit: 5,
|
foldLimit: 5,
|
||||||
tableActions: [
|
tableActions: [
|
||||||
{
|
{
|
||||||
|
|
@ -296,14 +247,11 @@ const tablePageProps = buildTablePageProps<OrderTypes.SearchOrderParam, OrderTyp
|
||||||
tooltip: '勘料',
|
tooltip: '勘料',
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
icon: 'chakanliaodan',
|
icon: 'chakanliaodan',
|
||||||
confirm: {
|
|
||||||
title: '是否确认勘料',
|
|
||||||
},
|
|
||||||
show({row}) {
|
show({row}) {
|
||||||
return row.transStatus === transStatus.YiJinChang && row.checkStatus === checkStatus.WeiKanLiao
|
return row.transStatus === transStatus.YiJinChang && row.checkStatus === checkStatus.WeiKanLiao
|
||||||
},
|
},
|
||||||
action({row}) {
|
action({row}) {
|
||||||
ElMessage.success(`${row.truckLicensePlate!}勘料成功`)
|
checkPanelIns.value?.open(row.id!, row.truckLicensePlate!)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,21 @@
|
||||||
<ElDescriptionsItem :span="1">
|
<ElDescriptionsItem :span="1">
|
||||||
<TransRecode :trans-recodes="detailData.transRecodes" v-bind="transRecodeProps">
|
<TransRecode :trans-recodes="detailData.transRecodes" v-bind="transRecodeProps">
|
||||||
<ElTableColumn label="车次" prop="trainNum" width="60"/>
|
<ElTableColumn label="车次" prop="trainNum" width="60"/>
|
||||||
<ElTableColumn label="司机姓名" prop="driverName" width="100"/>
|
<ElTableColumn label="司机姓名" prop="driverName" width="120">
|
||||||
<ElTableColumn label="司机电话" prop="driverPhone" width="120"/>
|
<template #default="{row}">
|
||||||
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120"/>
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="司机电话" prop="driverPhone" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.driverName ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
|
<ElTableColumn label="车牌号" prop="truckLicensePlate" width="120">
|
||||||
|
<template #default="{row}">
|
||||||
|
<span> {{ row.truckLicensePlate ?? '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</ElTableColumn>
|
||||||
<ElTableColumn label="毛重" prop="roughWeight">
|
<ElTableColumn label="毛重" prop="roughWeight">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
{{ `${row.roughWeight == null ? '' : row.roughWeight + ' 吨'}` }}
|
||||||
|
|
@ -72,9 +84,9 @@
|
||||||
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
{{ `${row.settleMoney == null ? '' : '¥:' + row.settleMoney + '元'}` }}
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="支付状态" prop="paymentStatusTxt" width="120">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus)"> {{ row.paymentStatusTxt }}</ElTag>
|
<ElTag :data-cs="paymentStatusColor.cs(row.paymentStatus,'info')"> {{ row.paymentStatusTxt ?? '暂无支付信息' }}</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
<ElTableColumn fixed="right" label="勘料状态" prop="checkStatusTxt" width="90">
|
||||||
|
|
@ -132,14 +144,19 @@ import Strings from '@/common/utils/strings.ts'
|
||||||
import AIcon from '@/components/a-icon/AIcon.vue'
|
import AIcon from '@/components/a-icon/AIcon.vue'
|
||||||
import OrderApi from '@/pages/order/order-api.ts'
|
import OrderApi from '@/pages/order/order-api.ts'
|
||||||
|
|
||||||
const detailPanelIns = useTemplateRef<ADetailPanelInstance<OrderTypes.TableData>>('detailPanel')
|
const detailPanelIns = useTemplateRef<ADetailPanelInstance>('detailPanel')
|
||||||
|
|
||||||
const transRecodeProps = buildTransRecodeProps({})
|
const transRecodeProps = buildTransRecodeProps({
|
||||||
|
enableSummary: true,
|
||||||
|
})
|
||||||
|
|
||||||
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
const detailPanelProps = buildDetailPanelProps<OrderTypes.SearchOrderResult>({
|
||||||
title: '订单详情',
|
title: '订单详情',
|
||||||
width: '80vw',
|
width: '80vw',
|
||||||
detailsLoader: OrderApi.detail,
|
detailsLoader(id) {
|
||||||
|
return OrderApi.detail(id, 'ShiShi')
|
||||||
|
},
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -158,7 +175,7 @@ function kanliao(data: OrderTypes.TransRecode) {
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open(data: OrderTypes.TableData) {
|
open(data: OrderTypes.TableData) {
|
||||||
detailPanelIns.value?.open(data)
|
detailPanelIns.value?.open(data.orderId!)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Realtime from '@/pages/order/realtime/Realtime.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Realtime default-order-category="XiaoShou"/>
|
<Realtime biz-type="XiaoShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import Realtime from '@/pages/order/realtime/Realtime.vue'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Realtime default-order-category="HuiShou"/>
|
<Realtime biz-type="HuiShou"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
|
||||||
|
|
@ -7,24 +7,18 @@ import {
|
||||||
ElTable,
|
ElTable,
|
||||||
ElTableColumn,
|
ElTableColumn,
|
||||||
} from 'element-plus'
|
} from 'element-plus'
|
||||||
|
import { type SummaryMethodProps } from '@/components/a-page/a-table-page/build-summary-method.ts'
|
||||||
|
import { summaryMethod } from '@/pages/order/constants.ts'
|
||||||
interface SummaryMethodProps {
|
|
||||||
columns: TableColumnCtx<OrderTypes.TransRecode>[]
|
|
||||||
data: OrderTypes.TransRecode[]
|
|
||||||
}
|
|
||||||
|
|
||||||
interface TransRecode {
|
interface TransRecode {
|
||||||
transRecodes: OrderTypes.TransRecode[]
|
transRecodes: OrderTypes.TransRecode[]
|
||||||
selectable: boolean
|
selectable: boolean
|
||||||
disabledRowsMethod: (rows?: OrderTypes.TransRecode[]) => string[] | undefined
|
disabledRowsMethod: (rows?: OrderTypes.TransRecode[]) => string[] | undefined
|
||||||
summaries: string[]
|
|
||||||
moduleValue: string[]
|
moduleValue: string[]
|
||||||
'onUpdate:moduleValue': (value: string[]) => void
|
'onUpdate:moduleValue': (value: string[]) => void
|
||||||
summaryMethod: (data: SummaryMethodProps) => (string | VNode)[]
|
summaryMethod?: (data: SummaryMethodProps<OrderTypes.TransRecode>) => (string | VNode)[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const component = defineComponent(
|
const component = defineComponent(
|
||||||
(props: TransRecode, ctx) => {
|
(props: TransRecode, ctx) => {
|
||||||
const transRecodes = computed(() => {
|
const transRecodes = computed(() => {
|
||||||
|
|
@ -67,7 +61,6 @@ const component = defineComponent(
|
||||||
ctx.emit('update:moduleValue', selectRows.$clone())
|
ctx.emit('update:moduleValue', selectRows.$clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return () => (<ElTable
|
return () => (<ElTable
|
||||||
cell-class-name="table-cell"
|
cell-class-name="table-cell"
|
||||||
empty-text="暂无数据"
|
empty-text="暂无数据"
|
||||||
|
|
@ -76,7 +69,7 @@ const component = defineComponent(
|
||||||
data={transRecodes.value}
|
data={transRecodes.value}
|
||||||
class={[ 'data-table', props.selectable ? styles.selectable : '' ]}
|
class={[ 'data-table', props.selectable ? styles.selectable : '' ]}
|
||||||
summary-method={props.summaryMethod}
|
summary-method={props.summaryMethod}
|
||||||
show-summary={props.summaries.length > 0}
|
show-summary={props.summaryMethod != null}
|
||||||
onRow-click={rowClick}>
|
onRow-click={rowClick}>
|
||||||
{{
|
{{
|
||||||
default: () => {
|
default: () => {
|
||||||
|
|
@ -106,29 +99,32 @@ const component = defineComponent(
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'TransRecode',
|
name: 'TransRecode',
|
||||||
props: [ 'transRecodes', 'selectable', 'summaries', 'disabledRowsMethod', 'summaryMethod', 'moduleValue' ],
|
props: [ 'transRecodes', 'selectable', 'disabledRowsMethod', 'summaryMethod', 'moduleValue' ],
|
||||||
emits: [ 'update:moduleValue' ],
|
emits: [ 'update:moduleValue' ],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type BuildTransRecodePropsParam = DeepPartial<Exclude<TransRecode, 'summaryMethod' | 'transRecodes'>> & {
|
||||||
|
enableSummary?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
export function buildTransRecodeProps({
|
export function buildTransRecodeProps({
|
||||||
selectable,
|
selectable,
|
||||||
summaries,
|
|
||||||
moduleValue,
|
moduleValue,
|
||||||
summaryMethod,
|
enableSummary = false,
|
||||||
disabledRowsMethod,
|
disabledRowsMethod,
|
||||||
['onUpdate:moduleValue']: onUpdateModuleValue,
|
['onUpdate:moduleValue']: onUpdateModuleValue,
|
||||||
}: DeepPartial<Exclude<TransRecode, 'transRecodes'>>) {
|
}: BuildTransRecodePropsParam,
|
||||||
|
) {
|
||||||
const props = reactive({
|
const props = reactive({
|
||||||
selectable: selectable ?? false,
|
selectable: selectable ?? false,
|
||||||
summaries: summaries ?? [],
|
|
||||||
moduleValue: moduleValue ?? [],
|
moduleValue: moduleValue ?? [],
|
||||||
'onUpdate:moduleValue': onUpdateModuleValue ?? (value => {
|
'onUpdate:moduleValue': onUpdateModuleValue ?? (value => {
|
||||||
props.moduleValue = value
|
props.moduleValue = value
|
||||||
}),
|
}),
|
||||||
disabledRowsMethod: disabledRowsMethod ?? (() => []),
|
disabledRowsMethod: disabledRowsMethod ?? (() => []),
|
||||||
summaryMethod: summaryMethod ?? (() => []),
|
summaryMethod: enableSummary ? summaryMethod : undefined,
|
||||||
} as Exclude<TransRecode, 'transRecodes'>)
|
})
|
||||||
return props
|
return props
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue