Commit c3f44acd by wuqian

分拣设备添加

parent 14ddd000
...@@ -15,7 +15,8 @@ export interface Ilogistics { ...@@ -15,7 +15,8 @@ export interface Ilogistics {
} }
export interface IsortingInfo { export interface IsortingInfo {
id?: number id?: number
sortingFacility?: string | null
sortingArea: number | null sortingArea: number | null
sortingAreaName?: string | null sortingAreaName?: string | null
serviceCode: string | null serviceCode: string | null
} }
\ No newline at end of file
<script setup lang="ts"> <script setup lang="ts">
import { Ilogistics, IsortingInfo } from '@/types/api/logistics' import { Ilogistics, IsortingInfo } from '@/types/api/logistics'
import { Edit, Delete } from '@element-plus/icons-vue' import { Edit, Delete, CirclePlus } from '@element-plus/icons-vue'
import { import {
getsortingConfigListApi, getsortingConfigListApi,
usableAllList, usableAllList,
createSortingApi, createSortingApi,
updateSortingApi, updateSortingApi,
deleteSortingApi, deleteSortingApi,
} from '@/api/logistics.ts' } from '@/api/logistics'
import { nextTick, ref } from 'vue' import { nextTick, ref } from 'vue'
import SplitDiv from '@/components/splitDiv/splitDiv.vue' import SplitDiv from '@/components/splitDiv/splitDiv.vue'
import usePageList from '@/utils/hooks/usePageList' import usePageList from '@/utils/hooks/usePageList'
import { ElMessage, ElMessageBox } from 'element-plus'
interface InterForm {
id?: number
sortingFacility?: string | null
sortingArea: number | null
sortingAreaName?: string | null
serviceCode: string[]
}
const searchForm = ref({ const searchForm = ref({
sortingFacility: '',
sortingArea: null, sortingArea: null,
serviceCode: '', serviceCode: [],
}) })
const selections = ref<IsortingInfo[]>([]) const selections = ref<IsortingInfo[]>([])
const formRef = ref() const formRef = ref()
const form = ref<IsortingInfo>({ const form = ref<InterForm>({
sortingFacility: '',
sortingArea: null, sortingArea: null,
sortingAreaName: '', sortingAreaName: '',
serviceCode: '', serviceCode: [],
}) })
const createData = ref({ const createData = ref({
title: '', title: '',
show: false, show: false,
isEdit: false, isEdit: false,
form: { form: {
sortingFacility: '',
sortingArea: null, sortingArea: null,
sortingAreaName: '', sortingAreaName: '',
serviceCode: '', serviceCode: [],
}, },
}) })
const rules = { const rules = {
sortingFacility: [
{ required: true, message: '请输入分拣设备', trigger: 'blur' },
],
sortingArea: [{ required: true, message: '请选择分拣口', trigger: 'change' }], sortingArea: [{ required: true, message: '请选择分拣口', trigger: 'change' }],
serviceCode: [ serviceCode: [
{ required: true, message: '请选择物流方式', trigger: 'change' }, { required: true, message: '请选择物流方式', trigger: 'change' },
...@@ -51,6 +65,7 @@ const { ...@@ -51,6 +65,7 @@ const {
getsortingConfigListApi( getsortingConfigListApi(
{ {
...searchForm.value, ...searchForm.value,
serviceCode: searchForm.value.serviceCode.join(','),
}, },
page, page,
pageSize, pageSize,
...@@ -100,7 +115,7 @@ const sortingList = ref<interSorting[]>([ ...@@ -100,7 +115,7 @@ const sortingList = ref<interSorting[]>([
}, },
{ {
label: 'E0', label: 'E0',
value: 9, value: 99,
}, },
]) ])
const handleSelectionChange = (data: IsortingInfo[]) => { const handleSelectionChange = (data: IsortingInfo[]) => {
...@@ -109,9 +124,15 @@ const handleSelectionChange = (data: IsortingInfo[]) => { ...@@ -109,9 +124,15 @@ const handleSelectionChange = (data: IsortingInfo[]) => {
const handleConfirm = async () => { const handleConfirm = async () => {
await formRef.value?.validate() await formRef.value?.validate()
if (!createData.value.isEdit) { if (!createData.value.isEdit) {
await createSortingApi(form.value) await createSortingApi({
...form.value,
serviceCode: form.value.serviceCode.join(','),
})
} else { } else {
await updateSortingApi(form.value) await updateSortingApi({
...form.value,
serviceCode: form.value.serviceCode.join(','),
})
} }
createData.value.show = false createData.value.show = false
ElMessage.success('操作成功') ElMessage.success('操作成功')
...@@ -134,15 +155,34 @@ const handleBatchDelete = async (row: IsortingInfo | null) => { ...@@ -134,15 +155,34 @@ const handleBatchDelete = async (row: IsortingInfo | null) => {
ElMessage.success('删除成功') ElMessage.success('删除成功')
await search() await search()
} }
const addLogistics = () => {
ElMessageBox.prompt('', '物流方式', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputErrorMessage: '请输入物流方式',
inputPlaceholder: '请输入物流方式',
}).then(({ value }: { value: string }) => {
if (!value.trim()) {
ElMessage.error('物流方式不能为空')
return
}
if (form.value.serviceCode.includes(value)) {
ElMessage.warning('物流方式已存在')
return
}
form.value.serviceCode.push(value)
ElMessage.success('添加成功')
})
}
const createWarehouse = () => { const createWarehouse = () => {
createData.value.show = true createData.value.show = true
createData.value.isEdit = false createData.value.isEdit = false
createData.value.title = '新增' createData.value.title = '新增'
form.value = { form.value = {
sortingFacility: '',
sortingArea: null, sortingArea: null,
sortingAreaName: '', sortingAreaName: '',
serviceCode: '', serviceCode: [],
} }
nextTick(() => { nextTick(() => {
formRef.value?.clearValidate() formRef.value?.clearValidate()
...@@ -153,9 +193,11 @@ const updateSorting = (item: IsortingInfo) => { ...@@ -153,9 +193,11 @@ const updateSorting = (item: IsortingInfo) => {
createData.value.isEdit = true createData.value.isEdit = true
createData.value.title = '修改' createData.value.title = '修改'
form.value = { form.value = {
id: item.id,
sortingFacility: item.sortingFacility,
sortingArea: item.sortingArea, sortingArea: item.sortingArea,
sortingAreaName: item.sortingAreaName, sortingAreaName: item.sortingAreaName,
serviceCode: item.serviceCode, serviceCode: item.serviceCode ? item.serviceCode.split(',') : [],
} }
nextTick(() => { nextTick(() => {
formRef.value?.clearValidate() formRef.value?.clearValidate()
...@@ -173,6 +215,13 @@ const sortingChange = (v: number) => { ...@@ -173,6 +215,13 @@ const sortingChange = (v: number) => {
<template #top> <template #top>
<el-card> <el-card>
<el-form inline :model="searchForm"> <el-form inline :model="searchForm">
<el-form-item label="分拣设备">
<el-input
v-model.trim="searchForm.sortingFacility"
placeholder="分拣设备"
clearable
></el-input>
</el-form-item>
<el-form-item label="分拣口"> <el-form-item label="分拣口">
<el-select <el-select
v-model="searchForm.sortingArea" v-model="searchForm.sortingArea"
...@@ -192,6 +241,7 @@ const sortingChange = (v: number) => { ...@@ -192,6 +241,7 @@ const sortingChange = (v: number) => {
v-model="searchForm.serviceCode" v-model="searchForm.serviceCode"
clearable clearable
filterable filterable
multiple
style="width: 160px" style="width: 160px"
> >
<el-option <el-option
...@@ -225,7 +275,19 @@ const sortingChange = (v: number) => { ...@@ -225,7 +275,19 @@ const sortingChange = (v: number) => {
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" /> <el-table-column type="selection" />
<el-table-column type="index" label="序号" width="60" /> <el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
align="center"
label="分拣设备"
width="540"
show-overflow-tooltip
prop="sortingFacility"
></el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="分拣口名称" label="分拣口名称"
...@@ -234,6 +296,8 @@ const sortingChange = (v: number) => { ...@@ -234,6 +296,8 @@ const sortingChange = (v: number) => {
<el-table-column <el-table-column
align="center" align="center"
label="物流编码" label="物流编码"
width="540"
show-overflow-tooltip
prop="serviceCode" prop="serviceCode"
></el-table-column> ></el-table-column>
<el-table-column label="操作" align="center" width="100"> <el-table-column label="操作" align="center" width="100">
...@@ -261,15 +325,6 @@ const sortingChange = (v: number) => { ...@@ -261,15 +325,6 @@ const sortingChange = (v: number) => {
</el-table> </el-table>
</div> </div>
<div class="pagination"> <div class="pagination">
<!-- <el-pagination
v-model:current-page="pagination.currentPage"
v-model:page-size="pagination.pageSize"
:page-sizes="[50, 100, 150, 200]"
layout="total, sizes, prev, pager, next, jumper"
:total="pagination.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/> -->
<ElPagination <ElPagination
v-model:current-page="currentPage" v-model:current-page="currentPage"
v-model:page-size="pageSize" v-model:page-size="pageSize"
...@@ -295,6 +350,13 @@ const sortingChange = (v: number) => { ...@@ -295,6 +350,13 @@ const sortingChange = (v: number) => {
:rules="rules" :rules="rules"
:model="form" :model="form"
> >
<el-form-item label="分拣设备" prop="sortingFacility">
<el-input
v-model.trim="form.sortingFacility"
placeholder="分拣设备"
clearable
></el-input>
</el-form-item>
<el-form-item label="分拣口" prop="sortingArea"> <el-form-item label="分拣口" prop="sortingArea">
<el-select <el-select
v-model="form.sortingArea" v-model="form.sortingArea"
...@@ -310,14 +372,31 @@ const sortingChange = (v: number) => { ...@@ -310,14 +372,31 @@ const sortingChange = (v: number) => {
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="物流方式" prop="serviceCode"> <el-form-item label="物流方式" prop="serviceCode">
<el-select v-model="form.serviceCode" clearable filterable> <div class="flex">
<el-option <el-select
v-for="item in logisticsMethodsList" v-model="form.serviceCode"
:key="item.serviceCode" style="width: 320px"
:label="item.serviceCode" clearable
:value="item.serviceCode" filterable
></el-option> multiple
</el-select> >
<el-option
v-for="item in logisticsMethodsList"
:key="item.serviceCode"
:label="item.serviceCode"
:value="item.serviceCode"
></el-option>
</el-select>
&ensp;
<el-icon
color="#409eff"
size="30"
title="添加物流方式"
class="add-btn"
@click="addLogistics"
><CirclePlus
/></el-icon>
</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
...@@ -379,4 +458,7 @@ const sortingChange = (v: number) => { ...@@ -379,4 +458,7 @@ const sortingChange = (v: number) => {
} }
} }
} }
.add-btn :hover {
cursor: pointer;
}
</style> </style>
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