This commit is contained in:
parent
f63ab97d0f
commit
d17a0db056
|
@ -27,3 +27,15 @@ export function apiWarehouseProductStoregeDelete(params: any) {
|
||||||
export function apiWarehouseProductStoregeDetail(params: any) {
|
export function apiWarehouseProductStoregeDetail(params: any) {
|
||||||
return request.get({ url: '/warehouse_product_storege/warehouseproductstorege/detail', params })
|
return request.get({ url: '/warehouse_product_storege/warehouseproductstorege/detail', params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否强制校验
|
||||||
|
* @param params
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function apiWarehouseProductStoregeVerify(params: any) {
|
||||||
|
return request.post({
|
||||||
|
url: '/warehouse_product_storege/warehouseproductstorege/verify',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -108,7 +108,9 @@
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button @click="dialogBuyer = false">取消</el-button>
|
<el-button @click="dialogBuyer = false">取消</el-button>
|
||||||
<el-button type="primary" @click="oneClickStorage" :disabled="disableClick"> 确认 </el-button>
|
<el-button type="primary" @click="oneClickStorage" :disabled="disableClick">
|
||||||
|
确认
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
@ -219,19 +221,22 @@ const resetWarehouseData = ref({
|
||||||
|
|
||||||
const disableClick = ref(false)
|
const disableClick = ref(false)
|
||||||
const oneClickStorage = () => {
|
const oneClickStorage = () => {
|
||||||
disableClick.value = true
|
disableClick.value = true
|
||||||
try {
|
// try {
|
||||||
apiBeforehandOrderCreateOutboundOrder(one_click_storage.value).then((res) => {
|
apiBeforehandOrderCreateOutboundOrder(one_click_storage.value).then((res) => {
|
||||||
ElMessage.success('出库成功')
|
ElMessage.success('出库成功')
|
||||||
dialogBuyer.value = false
|
dialogBuyer.value = false
|
||||||
disableClick.value = false
|
disableClick.value = false
|
||||||
getLists()
|
getLists()
|
||||||
})
|
})
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
setTimeout(() => {
|
// setTimeout(() => {
|
||||||
disableClick.value = false
|
// disableClick.value = false
|
||||||
}, 2000)
|
// }, 2000)
|
||||||
}
|
// }
|
||||||
|
setTimeout(() => {
|
||||||
|
disableClick.value = false
|
||||||
|
}, 4000)
|
||||||
}
|
}
|
||||||
const OclickDialogBuyer = () => {
|
const OclickDialogBuyer = () => {
|
||||||
dialogBuyer.value = true
|
dialogBuyer.value = true
|
||||||
|
|
|
@ -1,16 +1,29 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-card class="!border-none mb-4" shadow="never">
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
<el-form-item label="商品名称" prop="store_name">
|
<el-form-item label="商品名称" prop="store_name">
|
||||||
<el-input class="w-[280px]" @keydown.enter="resetPage" v-model="queryParams.store_name" clearable
|
<el-input
|
||||||
placeholder="请输入商品名称" />
|
class="w-[280px]"
|
||||||
</el-form-item>
|
@keydown.enter="resetPage"
|
||||||
<el-form-item label="商品分类" prop="store_name">
|
v-model="queryParams.store_name"
|
||||||
<el-cascader class="w-[280px]" v-model="queryParams.class_all" filterable clearable
|
clearable
|
||||||
:before-filter="beforeFilter" :props="props" placeholder="请选择商品分类" @change="resetPage" />
|
placeholder="请输入商品名称"
|
||||||
</el-form-item>
|
/>
|
||||||
<!-- <el-form-item label="商品条码" prop="bar_code">
|
</el-form-item>
|
||||||
|
<el-form-item label="商品分类" prop="store_name">
|
||||||
|
<el-cascader
|
||||||
|
class="w-[280px]"
|
||||||
|
v-model="queryParams.class_all"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
:before-filter="beforeFilter"
|
||||||
|
:props="props"
|
||||||
|
placeholder="请选择商品分类"
|
||||||
|
@change="resetPage"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="商品条码" prop="bar_code">
|
||||||
<el-input
|
<el-input
|
||||||
class="w-[280px]"
|
class="w-[280px]"
|
||||||
v-model="queryParams.bar_code"
|
v-model="queryParams.bar_code"
|
||||||
|
@ -18,209 +31,302 @@
|
||||||
placeholder="请输入商品条码"
|
placeholder="请输入商品条码"
|
||||||
/>
|
/>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="排序" prop="order_by">
|
<el-form-item label="排序" prop="order_by">
|
||||||
<el-select v-model="queryParams.order_by" placeholder="请选择排序" style="width: 240px"
|
<el-select
|
||||||
@change="resetPage">
|
v-model="queryParams.order_by"
|
||||||
<el-option v-for="item in [
|
placeholder="请选择排序"
|
||||||
|
style="width: 240px"
|
||||||
|
@change="resetPage"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in [
|
||||||
{ id: 'asc', name: '升序' },
|
{ id: 'asc', name: '升序' },
|
||||||
{ id: 'desc', name: '降序' }
|
{ id: 'desc', name: '降序' }
|
||||||
]" :key="item.id" :label="item.name" :value="item.id" />
|
]"
|
||||||
</el-select>
|
:key="item.id"
|
||||||
</el-form-item>
|
:label="item.name"
|
||||||
<el-form-item>
|
:value="item.id"
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
/>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
</el-select>
|
||||||
<export-data class="ml-2.5" :fetch-fun="apiWarehouseProductStoregeLists" :params="queryParams"
|
</el-form-item>
|
||||||
:page-size="pager.size" />
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
</el-form>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
</el-card>
|
<export-data
|
||||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
class="ml-2.5"
|
||||||
<router-link :to="{
|
:fetch-fun="apiWarehouseProductStoregeLists"
|
||||||
|
:params="queryParams"
|
||||||
|
:page-size="pager.size"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<router-link
|
||||||
|
:to="{
|
||||||
path: 'import',
|
path: 'import',
|
||||||
query: { warehouse_id: queryParams.warehouse_id }
|
query: { warehouse_id: queryParams.warehouse_id }
|
||||||
}" class="ml-4">
|
}"
|
||||||
<el-button type="primary"> 出库 </el-button>
|
class="ml-4"
|
||||||
</router-link>
|
>
|
||||||
<div class="mt-4">
|
<el-button type="primary"> 出库 </el-button>
|
||||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
</router-link>
|
||||||
<el-table-column type="selection" width="55" />
|
<div class="mt-4">
|
||||||
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
<el-table-column label="商品图片" prop="image" min-width="80">
|
<el-table-column type="selection" width="55" />
|
||||||
<template #default="{ row }">
|
<el-table-column label="id" prop="id" show-overflow-tooltip />
|
||||||
<el-image style="width: 50px; height: 50px" :src="row.image" :preview-teleported="true" />
|
<el-table-column label="商品图片" prop="image" min-width="80">
|
||||||
</template>
|
<template #default="{ row }">
|
||||||
</el-table-column>
|
<el-image
|
||||||
<el-table-column label="商品名称" prop="store_name" min-width="200" show-overflow-tooltip />
|
style="width: 50px; height: 50px"
|
||||||
<el-table-column label="分类" prop="cate_name" min-width="120" show-overflow-tooltip />
|
:src="row.image"
|
||||||
<el-table-column label="单位" prop="unit_name" min-width="80" show-overflow-tooltip />
|
:preview-teleported="true"
|
||||||
<el-table-column label="供货价" prop="purchase" min-width="100" show-overflow-tooltip />
|
/>
|
||||||
<el-table-column label="商户价" prop="cost" min-width="120" show-overflow-tooltip />
|
</template>
|
||||||
<el-table-column label="终端零售价" prop="price" min-width="120" show-overflow-tooltip />
|
</el-table-column>
|
||||||
<el-table-column label="规格" prop="store_info" min-width="100" show-overflow-tooltip />
|
<el-table-column
|
||||||
<el-table-column label="毛利率" prop="rose" min-width="100" show-overflow-tooltip />
|
label="商品名称"
|
||||||
<el-table-column label="库存" prop="nums" min-width="100" show-overflow-tooltip />
|
prop="store_name"
|
||||||
<el-table-column label="价值" prop="total_price" min-width="200" show-overflow-tooltip />
|
min-width="200"
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
show-overflow-tooltip
|
||||||
<template #default="{ row }">
|
/>
|
||||||
<el-button link @click="resetProductStoregeClick(row)" v-perms="[
|
<el-table-column
|
||||||
|
label="分类"
|
||||||
|
prop="cate_name"
|
||||||
|
min-width="120"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="单位"
|
||||||
|
prop="unit_name"
|
||||||
|
min-width="80"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="价格" prop="price" min-width="80" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<p>商户价{{ row.cost }}</p>
|
||||||
|
<p>供货价{{ row.purchase }}</p>
|
||||||
|
<p>零售{{ row.price }}</p>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="规格"
|
||||||
|
prop="store_info"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="毛利率"
|
||||||
|
prop="rose"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="库存"
|
||||||
|
prop="nums"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="价值"
|
||||||
|
prop="total_price"
|
||||||
|
min-width="200"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column label="强制校验" prop="is_verify">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-switch
|
||||||
|
size="large"
|
||||||
|
@change="verifyChange(row)"
|
||||||
|
v-model="row.is_verify"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
active-text="校验"
|
||||||
|
inactive-text="不校验"
|
||||||
|
inline-prompt
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
@click="resetProductStoregeClick(row)"
|
||||||
|
v-perms="[
|
||||||
'warehouse_product_storege.warehouse_product_storege/edit'
|
'warehouse_product_storege.warehouse_product_storege/edit'
|
||||||
]">
|
]"
|
||||||
重置数量
|
>
|
||||||
</el-button>
|
重置数量
|
||||||
</template>
|
</el-button>
|
||||||
</el-table-column>
|
</template>
|
||||||
</el-table>
|
</el-table-column>
|
||||||
</div>
|
</el-table>
|
||||||
<div class="flex mt-4 justify-end">
|
</div>
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<div class="flex mt-4 justify-end">
|
||||||
</div>
|
<pagination v-model="pager" @change="getLists" />
|
||||||
</el-card>
|
</div>
|
||||||
<!-- <Details ref="detailsRef"></Details> -->
|
</el-card>
|
||||||
</div>
|
<!-- <Details ref="detailsRef"></Details> -->
|
||||||
<el-dialog v-model="resetProductStoregeShow" title="重置数量" width="600">
|
</div>
|
||||||
<el-form :model="formData" label-width="90px">
|
<el-dialog v-model="resetProductStoregeShow" title="重置数量" width="600">
|
||||||
<el-form-item label="商品名称" prop="store_name">
|
<el-form :model="formData" label-width="90px">
|
||||||
<el-input v-model="formData.store_name" clearable :readonly="false" disabled />
|
<el-form-item label="商品名称" prop="store_name">
|
||||||
</el-form-item>
|
<el-input v-model="formData.store_name" clearable :readonly="false" disabled />
|
||||||
<el-form-item label="数量" prop="nums">
|
</el-form-item>
|
||||||
<el-input v-model="formData.nums" clearable :readonly="false" placeholder="请输入数量" />
|
<el-form-item label="数量" prop="nums">
|
||||||
</el-form-item>
|
<el-input
|
||||||
<el-form-item label="备注" prop="remark">
|
v-model="formData.nums"
|
||||||
<el-input v-model="formData.remark" clearable :readonly="false" placeholder="请输入数量" />
|
clearable
|
||||||
</el-form-item>
|
:readonly="false"
|
||||||
</el-form>
|
placeholder="请输入数量"
|
||||||
<template #footer>
|
/>
|
||||||
<div class="dialog-footer">
|
</el-form-item>
|
||||||
<el-button @click="resetProductStoregeShow = false">取消</el-button>
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-button type="primary" @click="resetProductStorege"> 确认 </el-button>
|
<el-input
|
||||||
</div>
|
v-model="formData.remark"
|
||||||
</template>
|
clearable
|
||||||
</el-dialog>
|
:readonly="false"
|
||||||
|
placeholder="请输入数量"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="resetProductStoregeShow = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="resetProductStorege"> 确认 </el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="storeProductLists">
|
<script lang="ts" setup name="storeProductLists">
|
||||||
import { usePaging } from '@/hooks/usePaging'
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
import { useDictData } from '@/hooks/useDictOptions'
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
import {
|
import {
|
||||||
apiWarehouseProductStoregeLists,
|
apiWarehouseProductStoregeLists,
|
||||||
apiWarehouseProductStoregeEdit
|
apiWarehouseProductStoregeEdit,
|
||||||
} from '@/api/warehouse_product_storege'
|
apiWarehouseProductStoregeVerify
|
||||||
import { timeFormat } from '@/utils/util'
|
} from '@/api/warehouse_product_storege'
|
||||||
import feedback from '@/utils/feedback'
|
import { timeFormat } from '@/utils/util'
|
||||||
// import Details from './details.vue'
|
import feedback from '@/utils/feedback'
|
||||||
import { apiStoreCategoryLists } from '@/api/store_category'
|
// import Details from './details.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { apiStoreCategoryLists } from '@/api/store_category'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const resetProductStoregeShow = ref(false)
|
const resetProductStoregeShow = ref(false)
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: '',
|
id: '',
|
||||||
store_name: '',
|
store_name: '',
|
||||||
nums: '',
|
nums: '',
|
||||||
remark: ''
|
remark: ''
|
||||||
})
|
})
|
||||||
// 查询条件
|
// 查询条件
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
store_name: '',
|
store_name: '',
|
||||||
class_all: '',
|
class_all: '',
|
||||||
warehouse_id: '',
|
warehouse_id: '',
|
||||||
bar_code: '',
|
bar_code: '',
|
||||||
order_by: '',
|
order_by: '',
|
||||||
field: 'nums'
|
field: 'nums'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 选中数据
|
// 选中数据
|
||||||
const selectData = ref<any[]>([])
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
// 表格选择后回调事件
|
// 表格选择后回调事件
|
||||||
const handleSelectionChange = (val : any[]) => {
|
const handleSelectionChange = (val: any[]) => {
|
||||||
selectData.value = val.map(({ id }) => id)
|
selectData.value = val.map(({ id }) => id)
|
||||||
}
|
}
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
const { dictData } = useDictData('')
|
const { dictData } = useDictData('')
|
||||||
// 分页相关
|
// 分页相关
|
||||||
let page_no = 1
|
let page_no = 1
|
||||||
if (route.query.page_no) {
|
if (route.query.page_no) {
|
||||||
page_no = parseInt(route.query.page_no)
|
page_no = parseInt(route.query.page_no)
|
||||||
}
|
}
|
||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
queryParams.warehouse_id = parseInt(route.query.id)
|
queryParams.warehouse_id = parseInt(route.query.id)
|
||||||
}
|
}
|
||||||
console.log(route.query.id)
|
console.log(route.query.id)
|
||||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
page: page_no,
|
page: page_no,
|
||||||
fetchFun: apiWarehouseProductStoregeLists,
|
fetchFun: apiWarehouseProductStoregeLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
const resetProductStoregeClick = (data : any) => {
|
const resetProductStoregeClick = (data: any) => {
|
||||||
resetProductStoregeShow.value = true
|
resetProductStoregeShow.value = true
|
||||||
formData.value.id = data.id
|
formData.value.id = data.id
|
||||||
formData.value.store_name = data.store_name
|
formData.value.store_name = data.store_name
|
||||||
formData.value.nums = data.nums
|
formData.value.nums = data.nums
|
||||||
}
|
}
|
||||||
const resetProductStorege = (data : any) => {
|
const resetProductStorege = (data: any) => {
|
||||||
resetProductStoregeShow.value = false
|
resetProductStoregeShow.value = false
|
||||||
if (formData.value.id <= 0) {
|
if (formData.value.id <= 0) {
|
||||||
ElMessage.error('id不能为空')
|
ElMessage.error('id不能为空')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
apiWarehouseProductStoregeEdit(formData.value).then((res) => {
|
apiWarehouseProductStoregeEdit(formData.value).then((res) => {
|
||||||
getLists()
|
getLists()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let resolves
|
let resolves
|
||||||
let nodes
|
let nodes
|
||||||
const flag = ref(false)
|
const flag = ref(false)
|
||||||
let name
|
let name
|
||||||
const beforeFilter = (value) => {
|
const beforeFilter = (value) => {
|
||||||
name = value
|
name = value
|
||||||
flag.value = true
|
flag.value = true
|
||||||
props.lazyLoad(nodes, resolves)
|
props.lazyLoad(nodes, resolves)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const props = {
|
const props = {
|
||||||
value: 'id',
|
value: 'id',
|
||||||
label: 'name',
|
label: 'name',
|
||||||
emitPath: false,
|
emitPath: false,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
lazyLoad(node, resolve) {
|
lazyLoad(node, resolve) {
|
||||||
if (!resolves) resolves = resolve
|
if (!resolves) resolves = resolve
|
||||||
if (!nodes) nodes = node
|
if (!nodes) nodes = node
|
||||||
const pid = node.value || 0
|
const pid = node.value || 0
|
||||||
let data = {}
|
let data = {}
|
||||||
if (flag.value) {
|
if (flag.value) {
|
||||||
data = { name: name }
|
data = { name: name }
|
||||||
if (!name) {
|
if (!name) {
|
||||||
data = {
|
data = {
|
||||||
pid: pid,
|
pid: pid,
|
||||||
page_size: 10000
|
page_size: 10000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data = {
|
data = {
|
||||||
pid: pid,
|
pid: pid,
|
||||||
page_size: 10000
|
page_size: 10000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apiStoreCategoryLists({
|
apiStoreCategoryLists({
|
||||||
...data
|
...data
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
resolve(
|
resolve(
|
||||||
res.lists.map((item : any) => {
|
res.lists.map((item: any) => {
|
||||||
// item.leaf = item.is_children == 0;
|
// item.leaf = item.is_children == 0;
|
||||||
item.leaf = true
|
item.leaf = true
|
||||||
flag.value = false
|
flag.value = false
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const verifyChange = (row: any) => {
|
||||||
onMounted(() => {
|
apiWarehouseProductStoregeVerify({
|
||||||
getLists()
|
id: row.id,
|
||||||
})
|
is_verify: row.is_verify
|
||||||
|
})
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
getLists()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
Loading…
Reference in New Issue