Commit 0c9aa467 by qinjianhui

fix: Table组件、产品详情优化

parent 9b747eca
...@@ -173,7 +173,7 @@ export function backEndCommentsApi(id: number, remark: string) { ...@@ -173,7 +173,7 @@ export function backEndCommentsApi(id: number, remark: string) {
) )
} }
//重新生成 //重新生成
export function regenerateSingle(subNumber: string) { export function regenerateSingle(subNumber: string | number) {
return axios.get<never, BaseRespData<SendOrderData[]>>( return axios.get<never, BaseRespData<SendOrderData[]>>(
'productionFile/regenerateSingle', 'productionFile/regenerateSingle',
{ {
......
...@@ -9,11 +9,25 @@ ...@@ -9,11 +9,25 @@
header-align="center" header-align="center"
height="100%" height="100%"
> >
<ElTableColumn
v-if="selectionable"
type="selection"
width="50"
header-align="center"
align="center"
></ElTableColumn>
<ElTableColumn
v-if="serialNumberable"
label="序号"
type="index"
width="50"
header-align="center"
align="center"
></ElTableColumn>
<template v-for="column in columns" :key="column.key"> <template v-for="column in columns" :key="column.key">
<ElTableColumn <ElTableColumn
v-if=" v-if="
column.type === 'index' ||
column.type === 'selection' ||
column.type === 'expand' column.type === 'expand'
" "
v-bind="column" v-bind="column"
...@@ -70,6 +84,14 @@ defineProps({ ...@@ -70,6 +84,14 @@ defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
serialNumberable: {
type: Boolean,
default: false,
},
selectionable: {
type: Boolean,
default: false,
}
}) })
const attrs = useAttrs() const attrs = useAttrs()
const slots = useSlots() as Record<string, Slot> const slots = useSlots() as Record<string, Slot>
......
...@@ -293,9 +293,60 @@ ...@@ -293,9 +293,60 @@
:row="row" :row="row"
:is-pod="false" :is-pod="false"
:status="statusCode" :status="statusCode"
@update-remark="handleUpdateRemark" >
@again-generated="handleAgainGenerated" <template #operation="{ productItem }">
/> <div class="operation-item" title="添加备注">
<el-icon
class="icon"
style="color: #e6a23c"
@click="handleUpdateRemark(productItem)"
><EditPen
/></el-icon>
</div>
<div
v-if="
(statusCode === 3 ||
statusCode === 4 ||
statusCode === 2) &&
(productItem.shipmentNum === 0 ||
productItem.num !==
(productItem.shipmentNum || 0) -
(productItem.notPassNum || 0))
"
class="operation-item"
>
<el-button
type="primary"
size="small"
@click="
handleAgainGenerated(
productItem.subOrderNumber || '',
)
"
>重新生成</el-button
>
</div>
<div
v-if="
(statusCode === 3 ||
statusCode === 4 ||
statusCode === 2) &&
(productItem.shipmentNum === 0 ||
productItem.num !==
(productItem.shipmentNum || 0) -
(productItem.notPassNum || 0))
"
class="operation-item"
>
<el-button
type="success"
size="small"
@click="downloadManuscriptBySubOrder(productItem)"
>下载稿件</el-button
>
</div></template
></ProductInfo
>
<template v-if="row.productList.length > 2"> <template v-if="row.productList.length > 2">
<div class="order-list-expand_more"> <div class="order-list-expand_more">
<span @click="openAll(row)"> <span @click="openAll(row)">
...@@ -608,16 +659,6 @@ ...@@ -608,16 +659,6 @@
<DocumentCopy /> <DocumentCopy />
</el-icon> </el-icon>
</div> </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 class="order-list-expand_item_label"
>发货方式:</span >发货方式:</span
...@@ -884,10 +925,11 @@ ...@@ -884,10 +925,11 @@
<div class="header-search"> <div class="header-search">
<el-input <el-input
v-model="shipmentUid" v-model="shipmentUid"
style="width: 300px;" style="width: 300px"
placeholder="请输入提货码" placeholder="请输入提货码"
size="large" size="large"
clearable /> clearable
/>
<el-input <el-input
ref="qaInputRef" ref="qaInputRef"
v-model="qaCode" v-model="qaCode"
...@@ -948,7 +990,7 @@ import type { ...@@ -948,7 +990,7 @@ import type {
} from '@/types/api/order' } from '@/types/api/order'
import { nextTick, onMounted, reactive, ref } from 'vue' import { nextTick, onMounted, reactive, ref } from 'vue'
import useElTableColumnWidth from '@/utils/hooks/useElTableColumnWidth' import useElTableColumnWidth from '@/utils/hooks/useElTableColumnWidth'
import { ArrowDown, ArrowUp, DocumentCopy } from '@element-plus/icons-vue' import { ArrowDown, ArrowUp, DocumentCopy, EditPen } from '@element-plus/icons-vue'
import usePageList from '@/utils/hooks/usePageList' import usePageList from '@/utils/hooks/usePageList'
import { import {
getOrderList, getOrderList,
...@@ -966,6 +1008,7 @@ import { ...@@ -966,6 +1008,7 @@ import {
reGenerateScriptUrlApi, reGenerateScriptUrlApi,
refreshProductInfo, refreshProductInfo,
reCreateScriptUrlApi, reCreateScriptUrlApi,
downloadOrder,
} from '@/api/order' } from '@/api/order'
import { showConfirm } from '@/utils/ui' import { showConfirm } from '@/utils/ui'
import { useValue } from '@/utils/hooks/useValue' import { useValue } from '@/utils/hooks/useValue'
...@@ -1164,7 +1207,10 @@ const { ...@@ -1164,7 +1207,10 @@ const {
{ {
...searchForm.value, ...searchForm.value,
status: statusCode.value, status: statusCode.value,
timeType: timeRange.value && timeRange.value.length > 0 ? searchForm.value.timeType : null, timeType:
timeRange.value && timeRange.value.length > 0
? searchForm.value.timeType
: null,
startTime: startTime:
searchForm.value.timeType === '' searchForm.value.timeType === ''
? null ? null
...@@ -1235,6 +1281,14 @@ const getLogisticsList = async () => { ...@@ -1235,6 +1281,14 @@ const getLogisticsList = async () => {
//showError(error) //showError(error)
} }
} }
const downloadManuscriptBySubOrder = async (item: ProductList) => {
try {
const res = await downloadOrder(item.id)
window.open(filePath + res.message)
} catch (e) {
//showError(e)
}
}
const sendOrderList = ref<SendOrderData[]>([]) const sendOrderList = ref<SendOrderData[]>([])
const sendOrderVisible = ref(false) const sendOrderVisible = ref(false)
// 获取发货单列表 // 获取发货单列表
...@@ -1262,15 +1316,15 @@ const changeTab = (item: Tab) => { ...@@ -1262,15 +1316,15 @@ const changeTab = (item: Tab) => {
splitRef.value!.domResize() splitRef.value!.domResize()
}) })
} }
const handleUpdateRemark = (payload: { id: number; remark: string }) => { const handleUpdateRemark = (data: ProductList) => {
dialogVisible.value = true dialogVisible.value = true
inputValue.value = payload.remark inputValue.value = data.remark || ''
remarkId.value = payload.id remarkId.value = data.id
} }
// 重新生成 // 重新生成
const handleAgainGenerated = async (payload: { id: string }) => { const handleAgainGenerated = async (id: number | string) => {
try { try {
const res = await regenerateSingle(payload.id) const res = await regenerateSingle(id)
search() search()
ElMessage({ ElMessage({
message: res.message, message: res.message,
......
...@@ -460,6 +460,7 @@ ...@@ -460,6 +460,7 @@
<TableView <TableView
:paginated-data="tableData" :paginated-data="tableData"
:columns="tableColumns" :columns="tableColumns"
:selectionable="true"
default-expand-all default-expand-all
:span-method="arraySpanMethod" :span-method="arraySpanMethod"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
...@@ -471,12 +472,37 @@ ...@@ -471,12 +472,37 @@
class="order-list-expand" class="order-list-expand"
:style="{ width: `${thOrderDetailWidth + 50}px` }" :style="{ width: `${thOrderDetailWidth + 50}px` }"
> >
<ProductInfo <ProductInfo :row="row" :status="status" :is-pod="true">
:row="row" <template #operation="{ productItem }">
:status="status" <div class="operation-item" title="添加备注">
:is-pod="true" <el-icon
@update-remark="handleUpdateRemark" class="icon"
/> style="color: #e6a23c"
@click="
handleUpdateRemark(
productItem.id,
productItem.remark || '',
)
"
><EditPen
/></el-icon>
</div>
<div
v-if="status === 'TO_BE_RECEIPT'"
class="operation-item"
>
<el-button size="small" type="warning"
>申请补胚</el-button
>
</div>
<div
v-if="status === 'TO_BE_RECEIPT'"
class="operation-item"
>
<el-button size="small" type="danger">作废</el-button>
</div>
</template>
</ProductInfo>
<template v-if="row.productList.length > 2"> <template v-if="row.productList.length > 2">
<div class="order-list-expand_more"> <div class="order-list-expand_more">
<span @click="openAll(row)"> <span @click="openAll(row)">
...@@ -785,7 +811,9 @@ ...@@ -785,7 +811,9 @@
width="400px" width="400px"
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<p>基版 <b>{{cardItem?.baseSku}}</b> 的统计数量为:<b> {{count}}</b></p> <p>
基版 <b>{{ cardItem?.baseSku }}</b> 的统计数量为:<b> {{ count }}</b>
</p>
</el-dialog> </el-dialog>
<right-menu <right-menu
ref="rightMenuRef" ref="rightMenuRef"
...@@ -853,7 +881,7 @@ import { ...@@ -853,7 +881,7 @@ import {
imageAryInter, imageAryInter,
CardOrderData, CardOrderData,
} from '@/types/api/podOrder' } from '@/types/api/podOrder'
import { ArrowUp, ArrowDown } from '@element-plus/icons-vue' import { ArrowUp, ArrowDown, EditPen } from '@element-plus/icons-vue'
import { getLogisticsCompanyList } from '@/api/common' import { getLogisticsCompanyList } from '@/api/common'
import { ElButton, type FormRules } from 'element-plus' import { ElButton, type FormRules } from 'element-plus'
import { showConfirm } from '@/utils/ui' import { showConfirm } from '@/utils/ui'
...@@ -1174,11 +1202,6 @@ const [searchForm] = useValue<SearchForm>({ ...@@ -1174,11 +1202,6 @@ const [searchForm] = useValue<SearchForm>({
const tableColumns = computed<CustomColumn<CardOrderData[]>>(() => { const tableColumns = computed<CustomColumn<CardOrderData[]>>(() => {
return [ return [
{ {
type: 'selection',
width: 50,
align: 'center',
},
{
type: 'expand', type: 'expand',
align: 'center', align: 'center',
slot: 'expand', slot: 'expand',
...@@ -1661,8 +1684,7 @@ const openLog = async (id?: number) => { ...@@ -1661,8 +1684,7 @@ const openLog = async (id?: number) => {
console.error(e) console.error(e)
} }
} }
const handleUpdateRemark = (payload: { id: number; remark: string }) => { const handleUpdateRemark = (id: number, remark: string) => {
const { id, remark } = payload
ElMessageBox.prompt('备注', '备注', { ElMessageBox.prompt('备注', '备注', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
...@@ -1672,7 +1694,7 @@ const handleUpdateRemark = (payload: { id: number; remark: string }) => { ...@@ -1672,7 +1694,7 @@ const handleUpdateRemark = (payload: { id: number; remark: string }) => {
inputPlaceholder: '备注', inputPlaceholder: '备注',
}).then(async ({ value = remark }) => { }).then(async ({ value = remark }) => {
try { try {
await updateRemarkApi(id, value) await updateRemarkApi(id, value as string)
ElMessage.success('操作成功') ElMessage.success('操作成功')
loadDiffList() loadDiffList()
} catch (e) { } catch (e) {
......
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