Commit a925ab80 by zhuzhequan

ts 报错修改

parent 90b17694
import { BasePaginationData, BaseRespData } from '@/types/api'
import { BasePaginationData, BaseRespData, StatisticsData } from '@/types/api'
import axios from './axios'
import {
LogListData,
......@@ -9,9 +9,11 @@ import {
ShipmentForm,
ShipmentOrderRes,
Tab,
InspectionData,
InspectionData, CountStatus,
} from '@/types/api/order'
import {
AccountStatementNote,
AccountStatementNoteSearchForm,
DeliveryNoteData,
DeliveryNoteSearchForm,
ProductionOrder,
......@@ -187,11 +189,11 @@ export function getDeliveryNoteList(
)
}
export function customJomallReconciliation(
data: any,
data: AccountStatementNoteSearchForm,
currentPage: number,
pageSize: number,
) {
return axios.post<never, BasePaginationData<DeliveryNoteData>>(
return axios.post<never, StatisticsData<AccountStatementNote>>(
'factory/customJomallReconciliation/list_page',
{
...data,
......@@ -238,7 +240,7 @@ export function getOrderByIdApi(id?: number) {
)
}
export function getReconciliationAmount(id?: number) {
return axios.get<never, BaseRespData<OrderData>>(
return axios.get<never, BaseRespData<CountStatus[]>>(
'factory/customJomallReconciliation/getReconciliationAmount',
{
params: {
......@@ -276,7 +278,7 @@ export function updateReconciliation(
data,
)
}
export function getShipmentDetailsById(shipmentId?: number) {
export function getShipmentDetailsById(shipmentId?: string) {
return axios.get<never, BaseRespData<any>>(
'factory/customJomallReconciliation/getShipmentDetailsById',
{
......
......@@ -5,8 +5,8 @@ import 'splitpanes/dist/splitpanes.css'
defineProps({
size: {
default: 15,
type: Number
default: '15',
type: String
}
})
</script>
......
......@@ -10,6 +10,12 @@ export interface DeliveryNoteSearchForm {
namespace?: string
shippingWay?: number
}
export interface AccountStatementNoteSearchForm {
status?: string | null | number
startTime?: string
endTime?: string
}
export interface DeliveryNoteData {
id: number
......@@ -97,6 +103,7 @@ export interface ProductionOrder {
}
export interface AccountStatementNote{
billNumber?:string
shipmentId?:string
shipmentNum?:string
dataVersion?:string
carriageName?:string
......
export interface BaseRespData<D> {
code: number
message?: string
......@@ -5,10 +6,25 @@ export interface BaseRespData<D> {
}
export interface PaginationData<D> {
page?: PaginationData<D>
total: number
size: number
current: number
records: D[]
}
export interface Statistics<D> {
sumNotPassNum: number
sumPassNum: number
sumShipmentNum: number
sumTotalPrice: number
page: {
total: number
size: number
current: number
records: D[]
}
}
export type BasePaginationData<D> = BaseRespData<PaginationData<D>>
export type StatisticsData<D> = BaseRespData<Statistics<D>>
......@@ -12,6 +12,7 @@ export interface SearchForm {
status?: number
subOrderNumber: string
}
export interface Tab {
status: string
statusCode: number
......@@ -19,6 +20,12 @@ export interface Tab {
quantity: number
}
export interface CountStatus {
count?: number
status?: number
totalSum?: number
}
export interface OrderData {
id: number
namespace?: string
......@@ -64,6 +71,7 @@ export interface OrderData {
moreable?: boolean
manuscriptStatus?: number
}
export interface ProductList {
id: number
customOrderId?: number
......@@ -101,6 +109,7 @@ export interface MemoList {
remark?: string
operatorTime?: string
}
export interface SpanMethodProps {
row: OrderData
column: TableColumnCtx<OrderData>
......@@ -216,3 +225,26 @@ export interface InspectionData {
version: number | string
passCount: number | string
}
export interface Reconciliation {
status: string | number | null
startTime: string
endTime: string,
billNumber?:string
shipmentId?:string
shipmentNum?:string
dataVersion?:string
carriageName?:string
lanshouAddress?:string
totalPrice?:string
passNum?:string
lanshouPost?:string
notPassNum?:string
lanshouRegion?:string
orderNumber?:string
lanshouName?:string
lanshouPhone?:string
logisticsTracking?:string
totalAmount?:string
id?:number
}
import { Ref, onMounted, ref, reactive } from 'vue'
import { Ref, onMounted, ref } from 'vue'
import { showError } from '../ui'
import type { PaginationData } from '@/types/api'
......@@ -21,7 +21,7 @@ export default function usePageList<T>(options: UsePageListOptions<T>) {
const total = ref(0)
const data = ref<T[]>([]) as Ref<T[]>
const statistics = ref(options.statistics || false)
const totalData = reactive({
const totalData = ref({
sumShipmentNum: 0,
sumPassNum: 0,
sumTotalPrice: 0,
......@@ -32,19 +32,20 @@ export default function usePageList<T>(options: UsePageListOptions<T>) {
try {
loading.value = true
// Promise 链式调用
let res:any = await query(currentPage.value, pageSize.value)
const res = await query(currentPage.value, pageSize.value)
if (statistics.value) {
totalData.sumNotPassNum = res.sumNotPassNum
totalData.sumPassNum = res.sumPassNum
totalData.sumShipmentNum = res.sumShipmentNum
totalData.sumTotalPrice = res.sumTotalPrice
res = res.page
totalData.value = res as never
total.value = res.page!.total
currentPage.value = res.page!.current
pageSize.value = res.page!.size
data.value = res.page!.records
}else{
total.value = res.total
currentPage.value = res.current
pageSize.value = res.size
data.value = res.records
}
total.value = res.total
currentPage.value = res.current
pageSize.value = res.size
data.value = res.records
} catch (error) {
showError(error)
} finally {
......
<template>
<div class="page">
<div class="left">
<ElTree ref="treeRef" default-expand-all :expand-on-click-node="false" :default-expanded-keys="[]"
:highlight-current="true" node-key="id" :data="treeData" @node-click="nodeClick">
<ElTree
ref="treeRef" default-expand-all :expand-on-click-node="false" :default-expanded-keys="[]"
:highlight-current="true" node-key="id" :data="treeData" @node-click="nodeClick">
</ElTree>
</div>
<div class="right">
<div class="delivery-note-page flex-column card h-100 overflow-hidden">
<splitDiv :size="70">
<splitDiv size="70">
<template #top>
<div class="header-filter-form">
<ElForm :model="searchForm" inline>
......@@ -83,17 +84,17 @@
<div class="delivery-note-content flex-1 flex-column overflow-hidden">
<div class="delivery-note-list flex-1 overflow-hidden">
<ElTable
@current-change="rowClick"
ref="singleTableRef"
highlight-current-row
:data="tableData"
@selection-change="handleSelectionChange"
ref="singleTableRef"
show-summary
:summary-method="getSummaries"
default-expand-all
size="small"
style="width: 100%; height: 100%"
border
@current-change="rowClick"
@selection-change="handleSelectionChange"
>
<ElTableColumn
......@@ -271,14 +272,15 @@
</div>
</template>
<template #bottom>
<el-tabs @tab-change="tabsClick" v-model="tabsValue">
<el-tabs v-model="tabsValue" @tab-change="tabsClick">
<el-tab-pane name="0" label="发货单详情">
<ElTable :data="detailList" height="100%" border>
<ElTableColumn show-overflow-tooltip width="60" align="center" label="序号" type="index" />
<ElTableColumn show-overflow-tooltip align="center" label="图片">
<template #default="{row}">
<el-image preview-teleported style="height: 40px;width: 40px;" :src="row.variantImage"
:preview-src-list="[row.variantImage]"></el-image>
<el-image
preview-teleported style="height: 40px;width: 40px;" :src="row.variantImage"
:preview-src-list="[row.variantImage]"></el-image>
</template>
</ElTableColumn>
<ElTableColumn show-overflow-tooltip align="center" label="商品名称" prop="productName" />
......@@ -300,46 +302,44 @@
{{ item.createTime }}
</span>
<span
v-html="item.description"
style="display: inline-block; width: 80%"></span>
style="display: inline-block; width: 80%"
v-html="item.description"></span>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</template>
</splitDiv>
</div>
</div>
</div>
<ElDialog width="1100px" v-model="dialogVisible" draggable title="编辑">
<el-form style="width: 100%;" inline label-width="120px" v-model="editForm">
<ElDialog v-model="dialogVisible" width="1100px" draggable title="编辑">
<el-form v-model="editForm" style="width: 100%;" inline label-width="120px">
<el-form-item prop="billNumber" label="发货单号">
<el-input disabled v-model="editForm.billNumber"></el-input>
<el-input v-model="editForm.billNumber" disabled></el-input>
</el-form-item>
<el-form-item prop="orderNumber" label="订单号">
<el-input disabled v-model="editForm.orderNumber"></el-input>
<el-input v-model="editForm.orderNumber" disabled></el-input>
</el-form-item>
<el-form-item prop="notPassNum" label="质检未通过数量">
<el-input disabled v-model="editForm.notPassNum"></el-input>
<el-input v-model="editForm.notPassNum" disabled></el-input>
</el-form-item>
<el-form-item prop="lanshouName" label="收货人">
<el-input disabled v-model="editForm.lanshouName"></el-input>
<el-input v-model="editForm.lanshouName" disabled></el-input>
</el-form-item>
<el-form-item prop="lanshouPhone" label="收货人电话">
<el-input disabled v-model="editForm.lanshouPhone"></el-input>
<el-input v-model="editForm.lanshouPhone" disabled></el-input>
</el-form-item>
<el-form-item prop="lanshouRegion" label="揽收区域">
<el-input disabled v-model="editForm.lanshouRegion"></el-input>
<el-input v-model="editForm.lanshouRegion" disabled></el-input>
</el-form-item>
<el-form-item prop="lanshouAddress" label="揽收地址">
<el-input disabled v-model="editForm.lanshouAddress"></el-input>
<el-input v-model="editForm.lanshouAddress" disabled></el-input>
</el-form-item>
<el-form-item prop="lanshouPost" label="揽收邮编">
<el-input disabled v-model="editForm.lanshouPost"></el-input>
<el-input v-model="editForm.lanshouPost" disabled></el-input>
</el-form-item>
<el-form-item prop="passNum" label="质检通过数量">
<el-input v-model="editForm.passNum"></el-input>
......@@ -353,27 +353,32 @@
</el-form>
<template #footer>
<el-button @click="dialogVisible=false">取消</el-button>
<el-button @click="submitData" type="primary">确认</el-button>
<el-button type="primary" @click="submitData">确认</el-button>
</template>
</ElDialog>
</template>
<script setup lang="ts">
import { ElMessage, ElTree } from 'element-plus'
import { ElMessage, ElTree, TableColumnCtx } from 'element-plus'
import splitDiv from '@/components/splitDiv/splitDiv.vue'
interface Tree {
label: string
count?: number
children:any[],
children?: Tree[],
id: number | string
}
interface Log {
createTime: string
description: string
}
import {
AccountStatementNote,
} from '@/types/api/deliveryNote'
import { ElTable } from 'element-plus'
import usePageList from '@/utils/hooks/usePageList'
import { useValue } from '@/utils/hooks/useValue'
import {
......@@ -385,6 +390,12 @@ import { ref, onMounted, watch, nextTick } from 'vue'
import { showError } from '@/utils/ui'
import 'element-plus/dist/index.css'
import { CountStatus } from '@/types/api/order.ts'
interface SummaryMethodProps<T = AccountStatementNote> {
columns: TableColumnCtx<T>[]
data: T[]
}
const treeData = ref<Tree[]>([
{
......@@ -394,25 +405,25 @@ const treeData = ref<Tree[]>([
{
label: '草稿箱',
id: 0,
children:[]
children: [],
},
{
label: '待确认',
id: 1,
children:[]
children: [],
},
{
label: '待付款',
id: 2,
children:[]
children: [],
}, {
label: '已付款',
id: 3,
children:[]
children: [],
}, {
label: '归档',
id: 4,
children:[]
children: [],
},
],
},
......@@ -424,9 +435,9 @@ const dateRange = ref<string[]>([])
const selections = ref<AccountStatementNote[]>([])
const detailList = ref<AccountStatementNote[]>([])
const tabsValue = ref<string>('0')
const singleTableRef = ref<any>(null)
const singleTableRef = ref<InstanceType<typeof ElTable>>()
const currentRow = ref<AccountStatementNote | null>(null)
const logList = ref<any[]>([])
const logList = ref<Log[]>([])
const nodeId = ref<number | string>('-1')
......@@ -436,6 +447,7 @@ const treeRef = ref<InstanceType<typeof ElTree>>()
const editForm = ref<AccountStatementNote>({
billNumber: '',
lanshouAddress: '',
shipmentId: '',
totalPrice: '',
shipmentNum: '',
passNum: '',
......@@ -455,7 +467,7 @@ const {
onPageSizeChange: handleSizeChange,
} = usePageList({
statistics: true,
query: (page, pageSize) => customJomallReconciliation(
query: (page, pageSize) => (customJomallReconciliation(
{
...searchForm.value,
status: nodeId.value === '-1' ? null : nodeId.value,
......@@ -464,20 +476,19 @@ const {
},
page,
pageSize,
).then((res) => res.data),
).then((res) => res.data) as never),
})
onMounted(() => {
(treeRef as any).value.setCurrentKey(nodeId.value, true)
treeRef.value!.setCurrentKey(nodeId.value, true)
})
const dialogVisible = ref<boolean>(false)
const getTreeNum = async () => {
let res = await getReconciliationAmount()
let data:any = res.data
const res = await getReconciliationAmount()
treeData.value = [{
label: '全部',
id: '-1',
......@@ -502,22 +513,20 @@ const getTreeNum = async () => {
},
],
}]
nextTick(() => {
(treeRef as any).value.setCurrentKey(nodeId.value, true)
await nextTick(() => {
treeRef.value!.setCurrentKey(nodeId.value, true)
})
treeData.value.forEach((el) => {
if(!el.children){
if (!el.children) {
el.children = []
}
el.children.forEach((it) => {
it.count = 0
})
})
treeData.value.forEach((el) => {
el.children.forEach((it) => {
data.forEach((item:any) => {
res.data.forEach((item: CountStatus) => {
if (it.id === item.status) {
it['count'] = item.count
}
......@@ -527,9 +536,9 @@ const getTreeNum = async () => {
}
})
})
treeData.value[0].label = ''
treeData.value[0].label = '全部' + (data.find((el:any) => el.totalSum) ? `(${data.find((el:any) => el.totalSum).totalSum})` : '(0)')
console.log(treeData.value)
treeData.value[0].label = '全部' + (res.data.find((el: CountStatus) => el.totalSum) ? `(${res.data.find((el: CountStatus) => el.totalSum)!.totalSum})` : '(0)')
}
const onEditOrder = async (item: AccountStatementNote) => {
try {
......@@ -562,7 +571,7 @@ const submitData = async () => {
showError(e)
}
}
const rowClick = (row:any) => {
const rowClick = (row: AccountStatementNote) => {
currentRow.value = row
tabsValue.value = '0'
tabsClick(tabsValue.value)
......@@ -571,35 +580,35 @@ const rowClick = (row:any) => {
const tabsClick = async (name: string) => {
if (!currentRow.value) return
if (name === '0') {
let { data } = await getShipmentDetailsById((currentRow.value as any).shipmentId)
const { data } = await getShipmentDetailsById(currentRow.value!.shipmentId)
detailList.value = data
} else if (name === '1') {
await logOrder(currentRow.value)
}
}
const handleSelectionChange = (v:any) => {
const handleSelectionChange = (v: AccountStatementNote[]) => {
selections.value = v
}
const getSummaries = (data:any) => {
let columns = data.columns
let sums:any[] = []
columns.forEach((column:any, index:number) => {
const getSummaries = (data: SummaryMethodProps) => {
const columns = data.columns
const sums: string[] = []
columns.forEach((column, index) => {
console.log(column)
if (index === 0) {
sums[index] = '统计'
}
if (index === 4) {
sums[index] = totalData['sumNotPassNum']
sums[index] = String(totalData.value['sumNotPassNum'])
}
if (index === 5) {
sums[index] = totalData['sumShipmentNum']
sums[index] = String(totalData.value['sumShipmentNum'])
}
if (index === 6) {
sums[index] = totalData['sumPassNum']
sums[index] = String(totalData.value['sumPassNum'])
}
if (index === 7) {
sums[index] = totalData['sumTotalPrice']
sums[index] = String(totalData.value['sumTotalPrice'])
}
})
return sums
......@@ -625,7 +634,7 @@ watch(() => tableData.value, () => {
if (tableData.value && tableData.value.length > 0) {
if (singleTableRef.value) {
singleTableRef.value!.setCurrentRow(tableData.value[0])
currentRow.value = tableData.value[0]
currentRow.value = (tableData.value as never)[0]
}
} else {
detailList.value = []
......
<template>
<div class="card flex-column h-100 overflow-hidden">
<div class="header-filter">
<div class="header-filter-form">
<ElForm :model="searchForm" size="default" inline>
<ElFormItem label="SKU">
<ElInput
v-model="searchForm.mainSku"
placeholder=" SKU"
clearable
style="width: 160px"
@blur="searchForm.mainSku = searchForm.mainSku.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="成品ID">
<ElInput
v-model="searchForm.endProductId"
placeholder="请输入成品ID"
clearable
style="width: 160px"
@blur="searchForm.endProductId = searchForm.endProductId.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="生产单号">
<ElInput
v-model="searchForm.subOrderNumber"
placeholder="生产单号"
clearable
style="width: 160px"
@blur="
<split-div size="10">
<template #top>
<div class="header-filter">
<div class="header-filter-form">
<ElForm :model="searchForm" size="default" inline>
<ElFormItem label="SKU">
<ElInput
v-model="searchForm.mainSku"
placeholder=" SKU"
clearable
style="width: 130px"
@blur="searchForm.mainSku = searchForm.mainSku.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="成品ID">
<ElInput
v-model="searchForm.endProductId"
placeholder="请输入成品ID"
clearable
style="width: 130px"
@blur="searchForm.endProductId = searchForm.endProductId.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="生产单号">
<ElInput
v-model="searchForm.subOrderNumber"
placeholder="生产单号"
clearable
style="width: 130px"
@blur="
searchForm.subOrderNumber = searchForm.subOrderNumber.trim()
"
></ElInput>
</ElFormItem>
<ElFormItem label="订单号">
<ElInput
v-model="searchForm.orderNumber"
placeholder="订单号"
clearable
style="width: 160px"
@blur="searchForm.orderNumber = searchForm.orderNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="店铺单号">
<ElInput
v-model="searchForm.shopNumber"
placeholder="店铺单号"
clearable
style="width: 160px"
@blur="searchForm.shopNumber = searchForm.shopNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="内部标签">
<ElInput
v-model="searchForm.internalMemo"
placeholder="内部标签"
clearable
style="width: 160px"
@blur="searchForm.internalMemo = searchForm.internalMemo.trim()"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="物流跟踪号">
<ElInput
v-model="searchForm.logisticsTracking"
placeholder="物流跟踪号"
clearable
style="width: 160px"
@blur="
></ElInput>
</ElFormItem>
<ElFormItem label="订单号">
<ElInput
v-model="searchForm.orderNumber"
placeholder="订单号"
clearable
style="width: 130px"
@blur="searchForm.orderNumber = searchForm.orderNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="店铺单号">
<ElInput
v-model="searchForm.shopNumber"
placeholder="店铺单号"
clearable
style="width: 130px"
@blur="searchForm.shopNumber = searchForm.shopNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem label="内部标签">
<ElInput
v-model="searchForm.internalMemo"
placeholder="内部标签"
clearable
style="width: 130px"
@blur="searchForm.internalMemo = searchForm.internalMemo.trim()"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="物流跟踪号">
<ElInput
v-model="searchForm.logisticsTracking"
placeholder="物流跟踪号"
clearable
style="width: 130px"
@blur="
searchForm.logisticsTracking =
searchForm.logisticsTracking.trim()
"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="发货单号">
<ElInput
v-model="searchForm.billNumber"
placeholder="发货单号"
clearable
style="width: 160px"
@blur="searchForm.billNumber = searchForm.billNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="收货人">
<ElInput
v-model="searchForm.lanshouName"
placeholder="收货人"
clearable
style="width: 160px"
></ElInput>
</ElFormItem>
<ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem>
<ElFormItem>
<ElButton @click="resetSearchForm">重置</ElButton>
</ElFormItem>
</ElForm>
</div>
<div class="header-filter-tab">
<div class="tabs">
<div
v-for="item in tabsNav"
:key="item.statusCode"
class="tabs-node"
:class="item.statusCode === statusCode ? 'tabs-node_active' : ''"
@click="changeTab(item)"
>
<span class="tabs-node_label">{{ item.statusName }}</span>
<span class="tabs-node_count">{{ `(${item.quantity})` }}</span>
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="发货单号">
<ElInput
v-model="searchForm.billNumber"
placeholder="发货单号"
clearable
style="width: 130px"
@blur="searchForm.billNumber = searchForm.billNumber.trim()"
></ElInput>
</ElFormItem>
<ElFormItem v-if="statusCode === 6" label="收货人">
<ElInput
v-model="searchForm.lanshouName"
placeholder="收货人"
clearable
style="width: 130px"
></ElInput>
</ElFormItem>
<ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem>
<ElFormItem>
<ElButton @click="resetSearchForm">重置</ElButton>
</ElFormItem>
</ElForm>
</div>
<div class="header-filter-tab">
<div class="tabs">
<div
v-for="item in tabsNav"
:key="item.statusCode"
class="tabs-node"
:class="item.statusCode === statusCode ? 'tabs-node_active' : ''"
@click="changeTab(item)"
>
<span class="tabs-node_label">{{ item.statusName }}</span>
<span class="tabs-node_count">{{ `(${item.quantity})` }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="order-content flex-1 flex-column overflow-hidden">
<!-- 操作按钮 -->
<div class="order-operate-btn">
</template>
<template #bottom>
<div class="order-content flex-1 flex-column overflow-hidden">
<!-- 操作按钮 -->
<div class="order-operate-btn">
<span v-if="statusCode === 2" class="item">
<ElButton type="success" @click="confirmProduce">确认生产</ElButton>
</span>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<ElButton type="warning" is-dark @click="downloadManuscript"
>下载稿件</ElButton
>下载稿件</ElButton
>
</span>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<ElButton type="success" is-dark @click="reGenerateManuscript"
>更新稿件</ElButton
>更新稿件</ElButton
>
</span>
<span v-if="statusCode === 2 || statusCode === 3" class="item">
<span v-if="statusCode === 2 || statusCode === 3" class="item">
<ElButton :loading="btnLoading" type="primary" dark @click="printManuscript"
>打印生产单</ElButton
>打印生产单</ElButton
>
</span>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 7"
class="item"
>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 7"
class="item"
>
<ElButton type="success" dark @click="exportManuscript"
>导出生产单</ElButton
>导出生产单</ElButton
>
</span>
<span class="item">
<span class="item">
<ElButton type="warning" @click="addInternalTag"
>添加内部标签</ElButton
>添加内部标签</ElButton
>
</span>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<span
v-if="statusCode === 2 || statusCode === 3 || statusCode === 4"
class="item"
>
<ElButton type="primary" @click="refreshProduct"
>刷新商品信息</ElButton
>刷新商品信息</ElButton
>
</span>
<span v-if="statusCode === 3 || statusCode === 4" class="item">
<span v-if="statusCode === 3 || statusCode === 4" class="item">
<ElButton type="success" @click="confirmDelivery">发货</ElButton>
</span>
<span v-if="statusCode === 6" class="item">
<span v-if="statusCode === 6" class="item">
<ElButton type="success" @click="confirmCheck">质检</ElButton>
</span>
</div>
<div
ref="tableWrapperRef"
v-loading="loading"
element-loading-text="加载中..."
class="order-list flex-1 overflow-hidden"
>
<ElTable
v-show="statusCode !== 6"
:data="tableData"
:span-method="arraySpanMethod"
default-expand-all
border
style="width: 100%; height: 100%"
@selection-change="handleSelectionChange"
>
<ElTableColumn type="selection" width="50"></ElTableColumn>
<ElTableColumn type="expand" width="1">
<template #default="{ row }">
<div v-if="row.productList" class="table-expand">
<div
class="order-list-expand"
:style="{ width: `${thOrderDetailWidth + 50}px` }"
>
<ProductInfo :row="row" :status="statusCode" />
<template v-if="row.productList.length > 2">
<div class="order-list-expand_more">
</div>
<div
ref="tableWrapperRef"
v-loading="loading"
element-loading-text="加载中..."
class="order-list flex-1 overflow-hidden"
>
<ElTable
v-show="statusCode !== 6"
:data="tableData"
:span-method="arraySpanMethod"
default-expand-all
border
style="width: 100%; height: 100%"
@selection-change="handleSelectionChange"
>
<ElTableColumn type="selection" width="50"></ElTableColumn>
<ElTableColumn type="expand" width="1">
<template #default="{ row }">
<div v-if="row.productList" class="table-expand">
<div
class="order-list-expand"
:style="{ width: `${thOrderDetailWidth + 50}px` }"
>
<ProductInfo :row="row" :status="statusCode" />
<template v-if="row.productList.length > 2">
<div class="order-list-expand_more">
<span @click="openAll(row)">
<template v-if="!row.moreable">
展开全部<strong style="color: red"
>({{ row.productList.length }})</strong
>条商品信息<el-icon style="vertical-align: middle"
><ArrowDown /></el-icon
>({{ row.productList.length }})</strong
>条商品信息<el-icon style="vertical-align: middle"
><ArrowDown /></el-icon
></template>
<template v-else>
收起商品信息<el-icon style="vertical-align: middle"
><ArrowUp
/></el-icon>
><ArrowUp
/></el-icon>
</template>
</span>
</div>
</template>
</div>
</template>
</div>
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">商品价:</span>
<span class="order-list-expand_item_value">{{
row.productAmount
}}</span>
</div>
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">商品价:</span>
<span class="order-list-expand_item_value">{{
row.productAmount
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">小计:</span>
<span class="order-list-expand_item_value">{{
row.totalAmount || '--'
}}</span>
</div>
<div
v-if="row.totolBuyNumber"
class="order-list-expand_item_info_title"
>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">小计:</span>
<span class="order-list-expand_item_value">{{
row.totalAmount || '--'
}}</span>
</div>
<div
v-if="row.totolBuyNumber"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_value"
>{{ row.totolBuyNumber }}</span
>
</div>
</div>
</div>
<div class="order-memo">
<div class="order-memo-info">
<div
v-for="memo in row.internalMemoList || []"
:key="memo.id"
class="order-memo-item"
>
<div
v-if="memo.operatorEmployeeName"
class="order-memo-item__name"
>
<span>{{ memo.operatorEmployeeName || '' }}</span>
</div>
<div
v-if="memo.operatorTime"
class="order-memo-item__time"
>{{ row.totolBuyNumber }}</span
>
<span>{{ memo.operatorTime || '' }}</span>
</div>
</div>
<div v-if="memo.content" class="order-memo-item__content">
<span>{{ memo.content || '' }}</span>
</div>
<div class="order-memo">
<div class="order-memo-info">
<div
v-for="memo in row.internalMemoList || []"
:key="memo.id"
class="order-memo-item"
>
<div
v-if="memo.operatorEmployeeName"
class="order-memo-item__name"
>
<span>{{ memo.operatorEmployeeName || '' }}</span>
</div>
<div
v-if="memo.operatorTime"
class="order-memo-item__time"
>
<span>{{ memo.operatorTime || '' }}</span>
</div>
<div v-if="memo.content" class="order-memo-item__content">
<span>{{ memo.content || '' }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="order-time">
<div class="order-time_info">
<div class="order-list-expand_item_info_title">
<div class="order-time">
<div class="order-time_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>创建时间:</span
>创建时间:</span
>
<span class="order-list-expand_item_value">{{
row.createTime || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_value">{{
row.createTime || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>确认时间:</span
>确认时间:</span
>
<span class="order-list-expand_item_value">{{
row.startStockingTime || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_value">{{
row.startStockingTime || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>完成时间:</span
>完成时间:</span
>
<span class="order-list-expand_item_value">{{
row.finishTime || '--'
}}</span>
<span class="order-list-expand_item_value">{{
row.finishTime || '--'
}}</span>
</div>
</div>
</div>
<div class="order-operate">
<div class="order-operate_info">
<div class="order-list-expand_item_info_title">
<ElButton text type="primary" @click="openDetail(row.id)"
>查看详情
</ElButton>
</div>
<div
v-if="statusCode !== 2 && statusCode !== 3"
class="order-list-expand_item_info_title"
>
<ElButton
text
type="primary"
@click="openShipment(row.id)"
>查看发货单
</ElButton>
</div>
<div class="order-list-expand_item_info_title">
<ElButton text type="primary" @click="openLog(row.id)"
>操作日志
</ElButton>
</div>
<div
v-if="statusCode === 1 || statusCode === 3"
class="order-list-expand_item_info_title"
>
<ElButton text type="danger" @click="cancelOrder(row.id)"
>取消
</ElButton>
</div>
</div>
</div>
</div>
</div>
<div class="order-operate">
<div class="order-operate_info">
<div class="order-list-expand_item_info_title">
<ElButton text type="primary" @click="openDetail(row.id)"
>查看详情
</ElButton>
</template>
</ElTableColumn>
<ElTableColumn
label="订单详情"
header-align="center"
show-overflow-tooltip
class-name="th-order-detail"
min-width="800"
>
<template #default="scope">
<div class="order-detail">
<div :title="scope.row.orderNumber" class="order-detail_item">
<span class="label">订单号:</span>
<span class="value">{{ scope.row.orderNumber }}</span>
</div>
<div
v-if="statusCode !== 2 && statusCode !== 3"
class="order-list-expand_item_info_title"
:title="scope.row.erpOrderNumber"
class="order-detail_item"
>
<ElButton
text
type="primary"
@click="openShipment(row.id)"
>查看发货单
</ElButton>
<span class="label">第三方订单号:</span>
<span class="value" :title="scope.row.erpOrderNumber">{{
scope.row.erpOrderNumber || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<ElButton text type="primary" @click="openLog(row.id)"
>操作日志
</ElButton>
<div
:title="scope.row.manuscriptStatusStr"
class="order-detail_item"
>
<span class="label">稿件下载状态:</span>
<span class="value" :title="scope.row.manuscriptStatusStr">{{
scope.row.manuscriptStatusStr || '--'
}}</span>
</div>
<div
v-if="statusCode === 1 || statusCode === 3"
class="order-list-expand_item_info_title"
:title="scope.row.productionFileStatus"
class="order-detail_item"
>
<ElButton text type="danger" @click="cancelOrder(row.id)"
>取消
</ElButton>
<span class="label">稿件生成状态:</span>
<span class="value" :title="scope.row.productionFileStatus">{{
scope.row.productionFileStatus || '--'
}}</span>
</div>
<div :title="scope.row.lanshouName" class="order-detail_item">
<span class="label">收货人:</span>
<span class="value">{{ scope.row.lanshouName }}</span>
</div>
<div :title="scope.row.lanshouPhone" class="order-detail_item">
<span class="label">电话:</span>
<span class="value">{{ scope.row.lanshouPhone }}</span>
</div>
<div
:title="scope.row.lanshouAddress"
class="order-detail_item"
>
<span class="label">收货地址:</span>
<span class="value" :title="scope.row.lanshouAddress">{{
scope.row.lanshouAddress
}}</span>
</div>
<div :title="scope.row.lanshouPost" class="order-detail_item">
<span class="label">邮编:</span>
<span class="value">{{ scope.row.lanshouPost }}</span>
</div>
</div>
</div>
</div>
</template>
</ElTableColumn>
<ElTableColumn
label="订单详情"
header-align="center"
show-overflow-tooltip
class-name="th-order-detail"
min-width="800"
>
<template #default="scope">
<div class="order-detail">
<div :title="scope.row.orderNumber" class="order-detail_item">
<span class="label">订单号:</span>
<span class="value">{{ scope.row.orderNumber }}</span>
</div>
<div
:title="scope.row.erpOrderNumber"
class="order-detail_item"
>
<span class="label">第三方订单号:</span>
<span class="value" :title="scope.row.erpOrderNumber">{{
scope.row.erpOrderNumber || '--'
}}</span>
</div>
<div
:title="scope.row.manuscriptStatusStr"
class="order-detail_item"
>
<span class="label">稿件下载状态:</span>
<span class="value" :title="scope.row.manuscriptStatusStr">{{
scope.row.manuscriptStatusStr || '--'
}}</span>
</div>
<div
:title="scope.row.productionFileStatus"
class="order-detail_item"
>
<span class="label">稿件生成状态:</span>
<span class="value" :title="scope.row.productionFileStatus">{{
scope.row.productionFileStatus || '--'
}}</span>
</div>
<div :title="scope.row.lanshouName" class="order-detail_item">
<span class="label">收货人:</span>
<span class="value">{{ scope.row.lanshouName }}</span>
</div>
<div :title="scope.row.lanshouPhone" class="order-detail_item">
<span class="label">电话:</span>
<span class="value">{{ scope.row.lanshouPhone }}</span>
</div>
<div
:title="scope.row.lanshouAddress"
class="order-detail_item"
>
<span class="label">收货地址:</span>
<span class="value" :title="scope.row.lanshouAddress">{{
scope.row.lanshouAddress
}}</span>
</div>
<div :title="scope.row.lanshouPost" class="order-detail_item">
<span class="label">邮编:</span>
<span class="value">{{ scope.row.lanshouPost }}</span>
</div>
</div>
</template>
</ElTableColumn>
<ElTableColumn
label="实付款"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn
label="内部标签"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn
label="时间"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn label="操作" width="100" header-align="center">
</ElTableColumn>
</ElTable>
<ElTable
v-show="statusCode === 6"
:data="tableData"
:span-method="arraySpanMethod"
default-expand-all
border
style="width: 100%; height: 100%"
@selection-change="handleSelectionChange"
>
<ElTableColumn type="selection" width="50"></ElTableColumn>
<ElTableColumn
label="发货单号"
width="280"
show-overflow-tooltip
prop="billNumber"
header-align="center"
></ElTableColumn>
<ElTableColumn label="发货单信息" header-align="center">
<template #default="{ row }">
<div
v-if="row.detailList"
class="table-expand"
style="margin-right: -14px"
>
<div
style="flex: 1; flex-shrink: 0; overflow: hidden"
class="order-list-expand"
>
<ProductInfoInspected :row="row" :status="statusCode" />
<template v-if="row.detailList.length > 2">
<div class="order-list-expand_more">
</template>
</ElTableColumn>
<ElTableColumn
label="实付款"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn
label="内部标签"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn
label="时间"
show-overflow-tooltip
width="280"
header-align="center"
></ElTableColumn>
<ElTableColumn label="操作" width="100" header-align="center">
</ElTableColumn>
</ElTable>
<ElTable
v-show="statusCode === 6"
:data="tableData"
:span-method="arraySpanMethod"
default-expand-all
border
style="width: 100%; height: 100%"
@selection-change="handleSelectionChange"
>
<ElTableColumn type="selection" width="50"></ElTableColumn>
<ElTableColumn
label="发货单号"
width="280"
show-overflow-tooltip
prop="billNumber"
header-align="center"
></ElTableColumn>
<ElTableColumn label="发货单信息" header-align="center">
<template #default="{ row }">
<div
v-if="row.detailList"
class="table-expand"
style="margin-right: -14px"
>
<div
style="flex: 1; flex-shrink: 0; overflow: hidden"
class="order-list-expand"
>
<ProductInfoInspected :row="row" :status="statusCode" />
<template v-if="row.detailList.length > 2">
<div class="order-list-expand_more">
<span @click="openAll(row)">
<template v-if="!row.moreable">
展开全部<strong style="color: red"
>({{ row.detailList.length }})</strong
>条商品信息<el-icon style="vertical-align: middle"
><ArrowDown /></el-icon
>({{ row.detailList.length }})</strong
>条商品信息<el-icon style="vertical-align: middle"
><ArrowDown /></el-icon
></template>
<template v-else>
收起商品信息<el-icon style="vertical-align: middle"
><ArrowUp
/></el-icon>
><ArrowUp
/></el-icon>
</template>
</span>
</div>
</template>
</div>
</template>
</div>
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">订单号:</span>
<span class="order-list-expand_item_value">{{
row.orderNumber
}}</span>
<el-icon class="icon" @click="copy(row.orderNumber || '')"
><DocumentCopy
/></el-icon>
</div>
<div class="order-actual-payment">
<div class="order-actual-payment_info">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">订单号:</span>
<span class="order-list-expand_item_value">{{
row.orderNumber
}}</span>
<el-icon class="icon" @click="copy(row.orderNumber || '')"
><DocumentCopy
/></el-icon>
</div>
<!-- <div class="order-list-expand_item_info_title">-->
<!-- <span class="order-list-expand_item_label">工厂订单号:</span>-->
<!-- <span class="order-list-expand_item_value">{{-->
<!-- row.factoryOrderNumber || '&#45;&#45;'-->
<!-- }}</span>-->
<!-- <el-icon class="icon" @click="copy(row.factoryOrderNumber || '')"-->
<!-- ><DocumentCopy-->
<!-- /></el-icon>-->
<!-- </div>-->
<div class="order-list-expand_item_info_title">
<!-- <div class="order-list-expand_item_info_title">-->
<!-- <span class="order-list-expand_item_label">工厂订单号:</span>-->
<!-- <span class="order-list-expand_item_value">{{-->
<!-- row.factoryOrderNumber || '&#45;&#45;'-->
<!-- }}</span>-->
<!-- <el-icon class="icon" @click="copy(row.factoryOrderNumber || '')"-->
<!-- ><DocumentCopy-->
<!-- /></el-icon>-->
<!-- </div>-->
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>发货方式:</span
>发货方式:</span
>
<span class="order-list-expand_item_value">{{
row.shippingWay === 1 ? '送货上门' : '快递'
}}</span>
</div>
<div
v-if="row.shippingWay !== 1"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_value">{{
row.shippingWay === 1 ? '送货上门' : '快递'
}}</span>
</div>
<div
v-if="row.shippingWay !== 1"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label"
>物流名称:</span
>物流名称:</span
>
<span class="order-list-expand_item_value">{{
row.carriageName
}}</span>
</div>
<div
v-if="row.shippingWay === 2"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_value">{{
row.carriageName
}}</span>
</div>
<div
v-if="row.shippingWay === 2"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label"
>物流跟踪号:</span
>物流跟踪号:</span
>
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.logisticsTracking }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.logisticsTracking }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>发货时间:</span
>发货时间:</span
>
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.createTime || '--' }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.createTime || '--' }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>确认时间:</span
>
<span
style="color: red"
class="order-list-expand_item_value"
>{{
row.order ? row.order.startStockingTime : ''
}}</span
>确认时间:</span
>
</div>
<span
style="color: red"
class="order-list-expand_item_value"
>{{
row.order ? row.order.startStockingTime : ''
}}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">收货人:</span>
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.lanshouName || '--' }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">收货人:</span>
<span
style="color: red"
class="order-list-expand_item_value"
>{{ row.lanshouName || '--' }}</span
>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>收货人电话:</span
>收货人电话:</span
>
<span class="order-list-expand_item_value">{{
row.lanshouPhone || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">邮编:</span>
<span class="order-list-expand_item_value">{{
row.lanshouPost || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_value">{{
row.lanshouPhone || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">邮编:</span>
<span class="order-list-expand_item_value">{{
row.lanshouPost || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>收货地址:</span
>收货地址:</span
>
<span class="order-list-expand_item_value">{{
row.lanshouRegion + row.lanshouAddress
}}</span>
<span class="order-list-expand_item_value">{{
row.lanshouRegion + row.lanshouAddress
}}</span>
</div>
</div>
</div>
</div>
</div>
<div class="order-operate">
<div class="order-operate_info">
<div class="order-list-expand_item_info_title">
<ElButton
text
type="primary"
@click="openLog(row.orderId)"
>操作日志
</ElButton>
<div class="order-operate">
<div class="order-operate_info">
<div class="order-list-expand_item_info_title">
<ElButton
text
type="primary"
@click="openLog(row.orderId)"
>操作日志
</ElButton>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</ElTableColumn>
<ElTableColumn
show-overflow-tooltip
label="发货单详情"
width="280"
header-align="center"
>
</ElTableColumn>
<ElTableColumn label="操作" width="100" header-align="center">
</ElTableColumn>
</ElTable>
</div>
<el-pagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0; text-align: right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</template>
</ElTableColumn>
<ElTableColumn
show-overflow-tooltip
label="发货单详情"
width="280"
header-align="center"
>
</ElTableColumn>
<ElTableColumn label="操作" width="100" header-align="center">
</ElTableColumn>
</ElTable>
</div>
<el-pagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 10px; text-align: right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</template>
</split-div>
</div>
<el-dialog
v-model="shipmentVisible"
......@@ -721,7 +727,7 @@
<el-dialog
v-model="quarantineVisible"
title="质检"
width="1600px"
width="80%"
:close-on-click-modal="false"
@opened="onQaDialogOpened"
@close="onClose"
......@@ -763,6 +769,7 @@
</template>
<script setup lang="ts">
import Shipment from './Shipment.vue'
import SplitDiv from '@/components/splitDiv/splitDiv.vue'
import type {
SearchForm,
SpanMethodProps,
......@@ -1243,6 +1250,7 @@ const onChangeCurrentRow = (item: ProductList) => {
.order-content {
margin-top: 10px;
height: 100%;
}
.order-list {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment