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
}
} 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="[]"
<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,13 +272,14 @@
</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"
<el-image
preview-teleported style="height: 40px;width: 40px;" :src="row.variantImage"
:preview-src-list="[row.variantImage]"></el-image>
</template>
</ElTableColumn>
......@@ -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">
<split-div size="10">
<template #top>
<div class="header-filter">
<div class="header-filter-form">
<ElForm :model="searchForm" size="default" inline>
......@@ -8,7 +10,7 @@
v-model="searchForm.mainSku"
placeholder=" SKU"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.mainSku = searchForm.mainSku.trim()"
></ElInput>
</ElFormItem>
......@@ -17,7 +19,7 @@
v-model="searchForm.endProductId"
placeholder="请输入成品ID"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.endProductId = searchForm.endProductId.trim()"
></ElInput>
</ElFormItem>
......@@ -26,7 +28,7 @@
v-model="searchForm.subOrderNumber"
placeholder="生产单号"
clearable
style="width: 160px"
style="width: 130px"
@blur="
searchForm.subOrderNumber = searchForm.subOrderNumber.trim()
"
......@@ -37,7 +39,7 @@
v-model="searchForm.orderNumber"
placeholder="订单号"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.orderNumber = searchForm.orderNumber.trim()"
></ElInput>
</ElFormItem>
......@@ -46,7 +48,7 @@
v-model="searchForm.shopNumber"
placeholder="店铺单号"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.shopNumber = searchForm.shopNumber.trim()"
></ElInput>
</ElFormItem>
......@@ -55,7 +57,7 @@
v-model="searchForm.internalMemo"
placeholder="内部标签"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.internalMemo = searchForm.internalMemo.trim()"
></ElInput>
</ElFormItem>
......@@ -64,7 +66,7 @@
v-model="searchForm.logisticsTracking"
placeholder="物流跟踪号"
clearable
style="width: 160px"
style="width: 130px"
@blur="
searchForm.logisticsTracking =
searchForm.logisticsTracking.trim()
......@@ -76,7 +78,7 @@
v-model="searchForm.billNumber"
placeholder="发货单号"
clearable
style="width: 160px"
style="width: 130px"
@blur="searchForm.billNumber = searchForm.billNumber.trim()"
></ElInput>
</ElFormItem>
......@@ -85,7 +87,7 @@
v-model="searchForm.lanshouName"
placeholder="收货人"
clearable
style="width: 160px"
style="width: 130px"
></ElInput>
</ElFormItem>
<ElFormItem>
......@@ -111,6 +113,8 @@
</div>
</div>
</div>
</template>
<template #bottom>
<div class="order-content flex-1 flex-column overflow-hidden">
<!-- 操作按钮 -->
<div class="order-operate-btn">
......@@ -597,11 +601,13 @@
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0; text-align: right"
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