Commit 11b50b9b by linjinhong

Merge remote-tracking branch 'origin/lin-task' into dev

parents ce747b90 e2f049d1
import axios from './axios'
import { BaseRespData } from '@/types/api'
//我的下载列表
export function getExportRecordApi(params: {
pageSize?: number
currentPage?: number
}) {
return axios.post<never, BaseRespData<never>>(
'factory/exportRecord/getExportRecord ',
params,
)
}
export function deleteExportRecordByIdsApi(ids: string) {
return axios.get<never, BaseRespData<never>>('factory/exportRecord/delete', {
params: { ids },
})
}
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
</span> </span>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="toDownload">我的下载</el-dropdown-item>
<el-dropdown-item @click="resetPassword" <el-dropdown-item @click="resetPassword"
>修改密码</el-dropdown-item >修改密码</el-dropdown-item
> >
...@@ -455,6 +456,10 @@ onMounted(() => { ...@@ -455,6 +456,10 @@ onMounted(() => {
} }
}) })
const toDownload = () => {
router.push({ name: 'MyDownloads' })
}
onUnmounted(() => { onUnmounted(() => {
// 清理监听器 // 清理监听器
resizeObserver.disconnect() resizeObserver.disconnect()
......
...@@ -187,8 +187,8 @@ export default defineComponent({ ...@@ -187,8 +187,8 @@ export default defineComponent({
searchForm.value[item.prop] = value searchForm.value[item.prop] = value
}, },
...getComponentAttrs(item),
style: { width: `${componentWidth.value}px` }, style: { width: `${componentWidth.value}px` },
...getComponentAttrs(item),
})} })}
</ElFormItem> </ElFormItem>
))} ))}
......
...@@ -165,7 +165,8 @@ const router = createRouter({ ...@@ -165,7 +165,8 @@ const router = createRouter({
title: 'POD(CN)对账单', title: 'POD(CN)对账单',
}, },
component: PodBillOrder, component: PodBillOrder,
},{ },
{
path: '/account/pod-us-bill-order', path: '/account/pod-us-bill-order',
meta: { meta: {
title: 'POD(US)对账单', title: 'POD(US)对账单',
...@@ -284,6 +285,14 @@ const router = createRouter({ ...@@ -284,6 +285,14 @@ const router = createRouter({
}, },
component: () => import('@/views/setting/settingIndex.vue'), component: () => import('@/views/setting/settingIndex.vue'),
}, },
{
path: '/MyDownloads',
meta: {
title: '我的下载',
},
name: 'MyDownloads',
component: () => import('@/views/MyDownloads.vue'),
},
], ],
}, },
// 登录 // 登录
...@@ -295,6 +304,7 @@ const router = createRouter({ ...@@ -295,6 +304,7 @@ const router = createRouter({
path: '/user/reset', path: '/user/reset',
component: Reset, component: Reset,
}, },
// 其他路由 // 其他路由
{ {
path: '/:pathMatch(.*)*', path: '/:pathMatch(.*)*',
......
<template>
<div class="user-page flex-column card h-100 overflow-hidden">
<div class="header-filter-form">
<SearchForm
v-model="searchForm"
:config="searchConfig"
@search="search"
:isAddBtn="false"
@delete="deleteFn"
></SearchForm>
</div>
<div class="user-content flex-1 flex-column overflow-hidden">
<div v-loading="loading" class="user-list flex-1 overflow-hidden">
<CustomizeTable
border
align="center"
v-model="tableData"
:config="tableConfig"
@get-checkbox-records="handleCheckboxRecords"
></CustomizeTable>
</div>
<ElPagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[100, 200, 300, 400, 500]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0; text-align: right"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
></ElPagination>
</div>
</div>
</template>
<script setup lang="tsx">
defineOptions({
name: 'MyDownloads',
})
import {
getExportRecordApi,
deleteExportRecordByIdsApi,
} from '@/api/myDownload'
import { ISeachFormConfig } from '@/types/searchType'
import { TableColumn } from '@/components/VxeTable'
import SearchForm from '@/components/SearchForm.tsx'
import CustomizeTable from '@/components/VxeTable.tsx'
import usePageList from '@/utils/hooks/usePageList'
import { useValue } from '@/utils/hooks/useValue'
import { filePath } from '@/api/axios'
import { Delete, Download } from '@element-plus/icons-vue'
const [searchForm] = useValue({ periodTime: [] })
interface ParamsType {
startTime?: string
endTime?: string
periodTime?: string[]
pageSize: number
currentPage: number
}
const {
loading,
currentPage,
pageSize,
total,
data: tableData,
refresh: search,
onCurrentPageChange: handleCurrentChange,
onPageSizeChange: handleSizeChange,
} = usePageList({
query: (page, pageSize) => {
const params: ParamsType = {
...searchForm.value,
pageSize: pageSize,
currentPage: page,
}
if (searchForm.value?.periodTime.length) {
params.startTime = searchForm.value?.periodTime[0]
params.endTime = searchForm.value?.periodTime[1]
}
params.periodTime && delete params.periodTime
return getExportRecordApi(params).then(({ data }) => {
return data
})
},
})
const selection = ref([])
const searchConfig = ref<ISeachFormConfig[]>([
{
prop: 'periodTime',
type: 'dateRangePicker',
label: '创建时间',
attrs: {
style: { width: '380px' },
clearable: true,
type: 'datetimerange',
'default-time': [
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
],
'start-placeholder': '开始时间',
'end-placeholder': '结束时间',
format: 'YYYY-MM-DD HH:mm:ss',
'value-format': 'YYYY-MM-DD HH:mm:ss',
},
},
{
prop: 'status',
type: 'select',
label: '状态',
attrs: {
clearable: true,
placeholder: '请选择启用状态',
options: [
{ label: '正在生成', value: 1 },
{ label: '生成成功', value: 2 },
{ label: '生成失败', value: 3 },
],
},
},
{
prop: 'fileDescription',
type: 'input',
label: '下载描述',
attrs: {
clearable: true,
placeholder: '请输入下载描述',
},
},
])
const tableConfig = ref<TableColumn[]>([
{
prop: 'fileDescription',
label: '下载文件描述',
attrs: {
'min-width': 200,
},
},
{
prop: 'status',
label: '下载状态',
render: {
default: ({ row }) => (
<div>
{row.status === 1
? '正在生成'
: row.status === 2
? '生成成功'
: '生成失败'}
</div>
),
},
},
{
prop: 'createTime',
label: '创建时间',
},
{
prop: 'finishTime',
label: '完成时间',
},
{
prop: 'errorMsg',
label: '错误信息',
attrs: {
'min-width': 400,
},
},
{
prop: 'operating',
label: '操作',
attrs: {
align: 'center',
},
render: {
default: ({ row }) => (
<div>
<el-icon
size="24"
title="下载"
color={row.status === 2 ? '#8cc34b' : '#ccc'}
style={{
cursor: row.status === 2 ? 'pointer' : 'not-allowed',
verticalAlign: 'middle',
opacity: row.status === 2 ? 1 : 0.6,
}}
onClick={
row.status === 2
? () => downloadFn(row as { fileUrl: string })
: undefined
}
>
<Download />
</el-icon>
<el-icon
size="24"
title="删除"
color="#f56c6c"
style="cursor: pointer; vertical-align: middle"
onclick={() => deleteFn(row.id as string | number)}
>
<Delete />
</el-icon>
</div>
),
},
},
])
/**
* @description: 获取选中数据
*/
function handleCheckboxRecords(value: never[]) {
console.log(351, value)
selection.value = value
}
function downloadFn(data: { fileUrl: string }) {
window.open(filePath + data.fileUrl, '_blank')
console.log(248, data)
}
async function deleteFn(id?: string | number) {
try {
await ElMessageBox.confirm('确定删除该下载文件记录?', '提示', {
cancelButtonText: '取消',
confirmButtonText: '确认',
type: 'warning',
})
let ids
if (id) {
ids = [id].join(',')
} else {
ids = selection.value.map((el: { id: string }) => el.id).join(',')
}
console.log(214, ids)
await deleteExportRecordByIdsApi(ids)
ElMessage.success('操作成功')
search()
} catch (error) {
console.log(error)
}
}
</script>
<style lang="scss" scoped>
.header-filter-form {
margin-bottom: 20px;
:deep(.el-form-item) {
margin-right: 14px;
margin-bottom: 10px;
}
}
.user-operate-btn {
margin-bottom: 10px;
}
.dialog-footer {
text-align: center;
}
</style>
...@@ -424,11 +424,11 @@ const submitExportForm = async () => { ...@@ -424,11 +424,11 @@ const submitExportForm = async () => {
console.error('未知的资源类型:', resourceType) console.error('未知的资源类型:', resourceType)
} }
try { try {
const res = await exportPodUSInfo({ await exportPodUSInfo({
...params, ...params,
...(resourceType === 2 ? searchForm.value : {}), ...(resourceType === 2 ? searchForm.value : {}),
}) })
window.open(filePath + res.message, '_blank') ElMessage.success('请求成功,请稍后到右上角[我的下载]中查看')
exportVisible.value = false exportVisible.value = false
exportLoading.value = false exportLoading.value = false
} catch (e) { } catch (e) {
......
...@@ -2812,11 +2812,11 @@ const submitExportForm = async () => { ...@@ -2812,11 +2812,11 @@ const submitExportForm = async () => {
console.error('未知的资源类型:', resourceType) console.error('未知的资源类型:', resourceType)
} }
try { try {
const res = await exportPodUSInfo({ await exportPodUSInfo({
...params, ...params,
...(resourceType === 2 ? searchForm.value : {}), ...(resourceType === 2 ? searchForm.value : {}),
}) })
window.open(filePath + res.message, '_blank') ElMessage.success('请求成功,请稍后到右上角[我的下载]中查看')
exportVisible.value = false exportVisible.value = false
exportLoading.value = false exportLoading.value = false
} catch (e) { } catch (e) {
......
...@@ -71,21 +71,21 @@ ...@@ -71,21 +71,21 @@
<ElFormItem> <ElFormItem>
<ElButton @click="reset">重置</ElButton> <ElButton @click="reset">重置</ElButton>
</ElFormItem> </ElFormItem>
<!-- <ElFormItem v-if="nodeId === 10">--> <!-- <ElFormItem v-if="nodeId === 10">-->
<!-- <el-button type="warning" @click="rejectOrder">--> <!-- <el-button type="warning" @click="rejectOrder">-->
<!-- 驳回--> <!-- 驳回-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </ElFormItem>--> <!-- </ElFormItem>-->
<ElFormItem> <ElFormItem>
<el-button type="success" @click="exportExcel"> <el-button type="success" @click="exportExcel">
导出 导出
</el-button> </el-button>
</ElFormItem> </ElFormItem>
<!-- <ElFormItem v-if="nodeId === 10">--> <!-- <ElFormItem v-if="nodeId === 10">-->
<!-- <el-button type="danger" @click="auditOrder('archive')">--> <!-- <el-button type="danger" @click="auditOrder('archive')">-->
<!-- 归档--> <!-- 归档-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </ElFormItem>--> <!-- </ElFormItem>-->
</ElForm> </ElForm>
</div> </div>
...@@ -597,7 +597,6 @@ ...@@ -597,7 +597,6 @@
min-width="220" min-width="220"
show-overflow-tooltip show-overflow-tooltip
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="工厂订单号" label="工厂订单号"
...@@ -607,7 +606,6 @@ ...@@ -607,7 +606,6 @@
min-width="220" min-width="220"
show-overflow-tooltip show-overflow-tooltip
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="店铺单号" label="店铺单号"
...@@ -705,8 +703,8 @@ ...@@ -705,8 +703,8 @@
min-width="120" min-width="120"
show-overflow-tooltip show-overflow-tooltip
> >
<template #default="{row}"> <template #default="{ row }">
{{formatPrice(row)}} {{ formatPrice(row) }}
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column <!-- <el-table-column
...@@ -1276,8 +1274,10 @@ const tabsClick = async () => { ...@@ -1276,8 +1274,10 @@ const tabsClick = async () => {
await searchDetail() await searchDetail()
} }
} }
const formatPrice = (row:AccountStatementNote) => { const formatPrice = (row: AccountStatementNote) => {
const price = BigNumber(row.order?.total_amount || 0).plus(BigNumber(row.order?.adjusted_amount || 0)) const price = BigNumber(row.order?.total_amount || 0).plus(
BigNumber(row.order?.adjusted_amount || 0),
)
return price.toString() return price.toString()
} }
// 删除 // 删除
......
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