feat(psi): 添加商品仓储信息管理功能
- 新增商品仓储信息列表页面和相关 API 接口 - 实现商品仓储信息的查询、添加、编辑、删除等功能 - 添加供应商和门店的远程搜索功能 - 集成字典数据和分页组件
This commit is contained in:
parent
b4ac918ded
commit
6e9fb3f33c
43
src/api/psi/psi_product.ts
Normal file
43
src/api/psi/psi_product.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 商品仓储信息列表
|
||||
export function apiWarehouseProductLists(params: any) {
|
||||
return request.get({ url: '/psi_product/psiproduct/lists', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
|
||||
// 添加商品仓储信息
|
||||
export function apiWarehouseProductAdd(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/add', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
|
||||
// 编辑商品仓储信息
|
||||
export function apiWarehouseProductEdit(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/edit', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
|
||||
// 删除商品仓储信息
|
||||
export function apiWarehouseProductDelete(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/delete', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
|
||||
// 商品仓储信息详情
|
||||
export function apiWarehouseProductDetail(params: any) {
|
||||
return request.get({ url: '/psi_product/psiproduct/detail', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
// 商品仓储信息确认
|
||||
export function apiWarehouseProductEnter(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/enter', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
//商品结算
|
||||
export function apiWarehouseProductSettlement(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/settlement', params }, { urlPrefix: 'psi' })
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置出入库
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function apiWarehouseProductSetNums(params: any) {
|
||||
return request.post({ url: '/psi_product/psiproduct/set_nums', params }, { urlPrefix: 'psi' })
|
||||
}
|
237
src/views/psi/purchase_order_info/index.vue
Normal file
237
src/views/psi/purchase_order_info/index.vue
Normal file
@ -0,0 +1,237 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="门店名称" prop="store_id">
|
||||
<div class="flex items-center mr-4">
|
||||
<el-select
|
||||
v-model="queryParams.store_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入门店名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethod"
|
||||
:loading="storeloading"
|
||||
style="width: 240px"
|
||||
@change="resetPage"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库ID" prop="warehouse_id">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.warehouse_id"
|
||||
clearable
|
||||
placeholder="请输入仓库"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商" prop="supplier_id">
|
||||
<el-select
|
||||
v-model="queryParams.supplier_id"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入供应商名称搜索"
|
||||
remote-show-suffix
|
||||
:remote-method="remoteMethodUser"
|
||||
:loading="userloading"
|
||||
style="width: 240px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in userList"
|
||||
:key="item.id"
|
||||
:label="item.mer_name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品" prop="product_name">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.product_name"
|
||||
clearable
|
||||
placeholder="请输入商品"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品条码" prop="bar_code">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
v-model="queryParams.bar_code"
|
||||
clearable
|
||||
placeholder="请输入商品条码"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="日期" prop="create_time">
|
||||
<el-date-picker
|
||||
v-model="startEndTime"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
unlink-panels
|
||||
@change="changeStartEndTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="apiWarehouseProductLists"
|
||||
:params="queryParams"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
||||
<el-table-column label="单号" prop="code" width="180" show-overflow-tooltip />
|
||||
<el-table-column label="操作人员" prop="admin_name" show-overflow-tooltip />
|
||||
<el-table-column label="供应商" prop="supplier_name" show-overflow-tooltip />
|
||||
<el-table-column label="仓库" prop="warehouse_name" show-overflow-tooltip />
|
||||
<el-table-column label="商品" prop="store_name" show-overflow-tooltip />
|
||||
<el-table-column label="图片" prop="image" min-width="80">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px; height: 50px"
|
||||
:src="row.image"
|
||||
:preview-teleported="true"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="出入库"
|
||||
prop="financial_pm_name"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="批次" prop="batch" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="nums" show-overflow-tooltip />
|
||||
<el-table-column label="采购价" prop="purchase" show-overflow-tooltip />
|
||||
<el-table-column label="总价" prop="total_price" show-overflow-tooltip />
|
||||
<el-table-column label="操作时间" prop="create_time" show-overflow-tooltip />
|
||||
<el-table-column label="生产期" prop="manufacture" show-overflow-tooltip />
|
||||
<el-table-column label="保质期" prop="expiration_date" show-overflow-tooltip />
|
||||
<el-table-column label="备注" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<span style="color: red">{{ row.mark }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="warehouseProductLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import {
|
||||
apiWarehouseProductLists,
|
||||
apiWarehouseProductDelete,
|
||||
apiWarehouseProductEnter
|
||||
} from '@/api/psi/psi_product'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
// import EditPopup from './edit.vue'
|
||||
import { apiSystemStoreLists } from '@/api/system_store'
|
||||
import moment from 'moment'
|
||||
import { apiSupplierLists } from '@/api/supplier'
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
warehouse_id: '',
|
||||
product_name: '',
|
||||
financial_pm: 1,
|
||||
store_id: '',
|
||||
bar_code: '',
|
||||
start_time: '',
|
||||
end_time: '',
|
||||
supplier_id: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('warehouse_produc_pm')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiWarehouseProductLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const startEndTime = ref([])
|
||||
|
||||
const changeStartEndTime = () => {
|
||||
if (startEndTime.value[0] && startEndTime.value[1]) {
|
||||
queryParams.start_time = moment(startEndTime.value[0]).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
queryParams.end_time = moment(startEndTime.value[1]).format('YYYY-MM-DD') + ' 23:59:59'
|
||||
} else {
|
||||
queryParams.start_time = ''
|
||||
queryParams.end_time = ''
|
||||
}
|
||||
getLists()
|
||||
}
|
||||
const storeloading = ref(false)
|
||||
const storeList = ref([])
|
||||
const remoteMethod = (e = '') => {
|
||||
storeloading.value = true
|
||||
apiSystemStoreLists({
|
||||
name: e,
|
||||
page_size: 50
|
||||
})
|
||||
.then((res) => {
|
||||
storeList.value = res.lists
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
storeloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
|
||||
const userloading = ref(false)
|
||||
const userList = ref([])
|
||||
const remoteMethodUser = (e = '') => {
|
||||
userloading.value = true
|
||||
apiSupplierLists({ mer_name: e })
|
||||
.then((res) => {
|
||||
userList.value = res.lists
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
.catch((err) => {
|
||||
setTimeout(() => {
|
||||
userloading.value = false
|
||||
}, 300)
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
getLists()
|
||||
})
|
||||
</script>
|
Loading…
x
Reference in New Issue
Block a user