优化追溯
This commit is contained in:
60
src/apis/workOrder/workOrder.ts
Normal file
60
src/apis/workOrder/workOrder.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import http from '@/utils/http'
|
||||
|
||||
const BASE_URL = '/weighManage/workOrder'
|
||||
|
||||
export interface WorkOrderResp {
|
||||
id: string
|
||||
title: string
|
||||
materialName: string
|
||||
encoding: string
|
||||
unitWeight: string
|
||||
materialSpec: string
|
||||
photoUrl: string
|
||||
totalWeight: string
|
||||
totalCount: string
|
||||
workOrderInfos: Array<WorkOrderInfoResp>
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
}
|
||||
|
||||
export interface WorkOrderInfoResp {
|
||||
id: string
|
||||
workOrderId: string
|
||||
materialId: string
|
||||
weightTime: string
|
||||
quantity: string
|
||||
weight: string
|
||||
calculatedWeight: string
|
||||
}
|
||||
|
||||
export interface WorkOrderQuery {
|
||||
orderNo: string | undefined
|
||||
materialName: string | undefined
|
||||
encoding: string | undefined
|
||||
userName: string | undefined
|
||||
carNo: string | undefined
|
||||
startDate: string | undefined
|
||||
endDate: string | undefined
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface WorkOrderPageQuery extends WorkOrderQuery, PageQuery {}
|
||||
|
||||
/** @desc 查询工作订单列表 */
|
||||
export function listWorkOrder(query: WorkOrderPageQuery) {
|
||||
return http.get<PageRes<WorkOrderResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询工作订单详情 */
|
||||
export function getWorkOrder(id: string) {
|
||||
return http.get<WorkOrderResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 删除工作订单 */
|
||||
export function deleteWorkOrder(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 导出工作订单 */
|
||||
export function exportWorkOrder(query: WorkOrderQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
4
src/types/components.d.ts
vendored
4
src/types/components.d.ts
vendored
@@ -15,8 +15,10 @@ declare module 'vue' {
|
||||
AButton: typeof import('@arco-design/web-vue')['Button']
|
||||
ACard: typeof import('@arco-design/web-vue')['Card']
|
||||
ACheckbox: typeof import('@arco-design/web-vue')['Checkbox']
|
||||
ACheckboxGroup: typeof import('@arco-design/web-vue')['CheckboxGroup']
|
||||
ACol: typeof import('@arco-design/web-vue')['Col']
|
||||
AConfigProvider: typeof import('@arco-design/web-vue')['ConfigProvider']
|
||||
ADatePicker: typeof import('@arco-design/web-vue')['DatePicker']
|
||||
ADescriptions: typeof import('@arco-design/web-vue')['Descriptions']
|
||||
ADescriptionsItem: typeof import('@arco-design/web-vue')['DescriptionsItem']
|
||||
ADivider: typeof import('@arco-design/web-vue')['Divider']
|
||||
@@ -62,9 +64,11 @@ declare module 'vue' {
|
||||
ATabPane: typeof import('@arco-design/web-vue')['TabPane']
|
||||
ATabs: typeof import('@arco-design/web-vue')['Tabs']
|
||||
ATag: typeof import('@arco-design/web-vue')['Tag']
|
||||
ATextarea: typeof import('@arco-design/web-vue')['Textarea']
|
||||
ATooltip: typeof import('@arco-design/web-vue')['Tooltip']
|
||||
ATree: typeof import('@arco-design/web-vue')['Tree']
|
||||
ATreeSelect: typeof import('@arco-design/web-vue')['TreeSelect']
|
||||
ATrigger: typeof import('@arco-design/web-vue')['Trigger']
|
||||
ATypographyParagraph: typeof import('@arco-design/web-vue')['TypographyParagraph']
|
||||
ATypographyTitle: typeof import('@arco-design/web-vue')['TypographyTitle']
|
||||
AUpload: typeof import('@arco-design/web-vue')['Upload']
|
||||
|
||||
@@ -102,6 +102,7 @@ import { DisEnableStatusList } from '@/constant/common'
|
||||
import { useDownload, useResetReactive, useTable } from '@/hooks'
|
||||
import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
import type {ColumnItem} from "@/components/GiForm";
|
||||
|
||||
defineOptions({ name: 'SystemUser' })
|
||||
|
||||
|
||||
198
src/views/workOrder/index.vue
Normal file
198
src/views/workOrder/index.vue
Normal file
@@ -0,0 +1,198 @@
|
||||
<template>
|
||||
<div class="gi_table_page">
|
||||
<GiTable
|
||||
row-key="id"
|
||||
:data="dataList"
|
||||
:columns="columns"
|
||||
:loading="loading"
|
||||
:scroll="{ x: '100%', y: '100%', minWidth: 1600 }"
|
||||
:pagination="pagination"
|
||||
:disabled-tools="['size']"
|
||||
:disabled-column-keys="['name']"
|
||||
:selected-keys="selectedKeys"
|
||||
:row-selection="{ type: 'checkbox', showCheckedAll: true }"
|
||||
@select-all="selectAll"
|
||||
@select="select"
|
||||
@refresh="search"
|
||||
>
|
||||
<template #toolbar-left>
|
||||
<a-input-search v-model="queryForm.userName" placeholder="请输入姓名" allow-clear @search="search" />
|
||||
<a-input-search v-model="queryForm.carNo" placeholder="请输入人员卡号" allow-clear @search="search" />
|
||||
<a-input-search v-model="queryForm.orderNo" placeholder="请输入订单号" allow-clear @search="search" />
|
||||
<a-input-search v-model="queryForm.materialName" placeholder="请输入物料名称" allow-clear @search="search" />
|
||||
<a-input-search v-model="queryForm.encoding" placeholder="请输入物料编码" allow-clear @search="search" />
|
||||
<a-date-picker
|
||||
v-model="queryForm.startDate"
|
||||
placeholder="请选择开始时间"
|
||||
show-time
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
style="height: 32px"
|
||||
@change="search"
|
||||
/>
|
||||
<a-date-picker
|
||||
v-model="queryForm.endDate"
|
||||
placeholder="请选择结束时间"
|
||||
show-time
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
style="height: 32px"
|
||||
@change="search"
|
||||
/>
|
||||
|
||||
<a-button @click="reset">
|
||||
<template #icon><icon-refresh /></template>
|
||||
<template #default>重置</template>
|
||||
</a-button>
|
||||
</template>
|
||||
<template #toolbar-right>
|
||||
<a-button v-permission="['workOrder:record:delete']" type="outline" status="danger" @click="onDelete">
|
||||
<template #icon><icon-delete /></template>
|
||||
<template #default>删除</template>
|
||||
</a-button>
|
||||
<a-button v-permission="['workOrder:record:export']" @click="onExport">
|
||||
<template #icon><icon-download /></template>
|
||||
<template #default>导出</template>
|
||||
</a-button>
|
||||
</template>
|
||||
|
||||
<template #photoUrl="{ record }">
|
||||
<a-image :src="record.photoUrl" width="55" />
|
||||
</template>
|
||||
<template #unitWeight="{ record }">
|
||||
{{ record.unitWeight + 'g' }}
|
||||
</template>
|
||||
<template #totalWeight="{ record }">
|
||||
{{ record.totalWeight + 'g' }}
|
||||
</template>
|
||||
|
||||
<template #action="{ record }">
|
||||
<a-space>
|
||||
<a-link v-permission="['workOrder:record:detail']" title="详情" @click="onDetail(record)">详情</a-link>
|
||||
<a-link v-permission="['workOrder:record:delete']" status="danger" :title="'删除'" @click="onDeleteOne(record.id)">删除</a-link>
|
||||
</a-space>
|
||||
</template>
|
||||
</GiTable>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { TableInstanceColumns } from '@/components/GiTable/type'
|
||||
import { useDownload, useTable } from '@/hooks'
|
||||
import { isMobile } from '@/utils'
|
||||
import has from '@/utils/has'
|
||||
import type GiTable from "@/components/GiTable/index.vue";
|
||||
import {ref} from "vue";
|
||||
import {Message} from "@arco-design/web-vue";
|
||||
import {
|
||||
deleteWorkOrder,
|
||||
exportWorkOrder,
|
||||
listWorkOrder,
|
||||
type WorkOrderQuery,
|
||||
type WorkOrderResp
|
||||
} from "@/apis/workOrder/workOrder";
|
||||
|
||||
defineOptions({ name: 'Record' })
|
||||
|
||||
|
||||
|
||||
const queryForm = reactive<WorkOrderQuery>({
|
||||
orderNo: undefined,
|
||||
materialName: undefined,
|
||||
encoding: undefined,
|
||||
userName: undefined,
|
||||
carNo: undefined,
|
||||
startDate: undefined,
|
||||
endDate: undefined,
|
||||
sort: ['w.id,desc']
|
||||
})
|
||||
|
||||
const {
|
||||
tableData: dataList,
|
||||
loading,
|
||||
pagination,
|
||||
selectedKeys,
|
||||
select,
|
||||
selectAll,
|
||||
search,
|
||||
handleDelete,
|
||||
} = useTable((page) => listWorkOrder({ ...queryForm, ...page }), { immediate: true })
|
||||
|
||||
// 创建工具函数统一处理列配置
|
||||
const processColumns = (columns: TableInstanceColumns[]): TableInstanceColumns[] => {
|
||||
return columns.map(column => {
|
||||
const defaultConfig = {
|
||||
ellipsis: true,
|
||||
tooltip: true
|
||||
};
|
||||
return { ...defaultConfig, ...column };
|
||||
});
|
||||
};
|
||||
|
||||
// 定义列配置,使用工具函数处理
|
||||
const columns = ref<TableInstanceColumns[]>(processColumns([
|
||||
{ title: '创建人', dataIndex: 'createUserString' },
|
||||
{ title: '卡号', dataIndex: 'cardNo' },
|
||||
{ title: '标题', dataIndex: 'title', width: 180 },
|
||||
{ title: '物料图片', dataIndex: 'photoUrl', slotName: 'photoUrl', minWidth: 180, ellipsis: true, tooltip: true },
|
||||
{ title: '物料名称', dataIndex: 'materialName' },
|
||||
{ title: '物料编码', dataIndex: 'encoding' },
|
||||
{ title: '单位克重', dataIndex: 'unitWeight' ,slotName: 'unitWeight'},
|
||||
{ title: '总重量', dataIndex: 'totalWeight' ,slotName: 'totalWeight'},
|
||||
{ title: '称重次数', dataIndex: 'totalCount' },
|
||||
{ title: '创建时间', dataIndex: 'createTime', width: 180 },
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 160,
|
||||
align: 'center',
|
||||
fixed: !isMobile() ? 'right' : undefined,
|
||||
show: has.hasPermOr(['workOrder:record:detail', 'workOrder:record:update', 'workOrder:record:delete'])
|
||||
}
|
||||
]))
|
||||
|
||||
// 重置
|
||||
const reset = () => {
|
||||
queryForm.orderNo = undefined
|
||||
queryForm.materialName = undefined
|
||||
queryForm.encoding = undefined
|
||||
queryForm.userName = undefined
|
||||
queryForm.carNo = undefined
|
||||
queryForm.startDate = undefined
|
||||
queryForm.endDate = undefined
|
||||
search()
|
||||
}
|
||||
|
||||
// 详情
|
||||
const onDetail = (record: WorkOrderResp) => {
|
||||
|
||||
}
|
||||
|
||||
// 删除
|
||||
const onDeleteOne = (id) => {
|
||||
return handleDelete(() => deleteWorkOrder(id), {
|
||||
content: `是否确定删除该条数据?`,
|
||||
showModal: true
|
||||
})
|
||||
}
|
||||
|
||||
// 删除
|
||||
const onDelete = () => {
|
||||
if (!selectedKeys.value.length) {
|
||||
return Message.warning('请选择数据')
|
||||
}
|
||||
return handleDelete(() => deleteWorkOrder(selectedKeys.value), {
|
||||
content: `是否确定删除选中的 ${selectedKeys.value.length} 条数据?`,
|
||||
showModal: true
|
||||
})
|
||||
}
|
||||
|
||||
// 导出
|
||||
const onExport = () => {
|
||||
useDownload(() => exportWorkOrder(queryForm))
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
Reference in New Issue
Block a user