204 lines
5.0 KiB
Vue
204 lines
5.0 KiB
Vue
<template>
|
|
<view class="min-page bg-gray u-p-30">
|
|
<view v-for="(item,index) in pageData.list" :key="index">
|
|
<list-item :data="item"></list-item>
|
|
</view>
|
|
<view class="u-m-t-44" v-if="pageData.totalElements>0">
|
|
<my-pagination :size="pageData.query.size" :totalElements="pageData.totalElements"
|
|
@change="pageChange"></my-pagination>
|
|
<view style="height: 200rpx;"></view>
|
|
</view>
|
|
<template v-if="pageData.hasAjax&&!pageData.list.length">
|
|
<my-img-empty tips="暂无数据"></my-img-empty>
|
|
</template>
|
|
</view>
|
|
|
|
|
|
|
|
<view class="u-fixed fixed-b">
|
|
<my-button shape="circle" @tap="formShow">变动库存</my-button>
|
|
</view>
|
|
|
|
<my-mask ref="refMask">
|
|
<view class="u-p-30 ">
|
|
<view class="bg-fff border-r-18 default-box-padding">
|
|
<uni-forms :label-width="100" ref="refForm" :model="formData">
|
|
<uni-forms-item label="账存数量" required>
|
|
<uni-easyinput disabled v-model="formData.stock" placeholder="请输入账存数量" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="实际数量" required>
|
|
<uni-number-box
|
|
:max="999999999"
|
|
v-model="formData.stocktakinNum" ></uni-number-box>
|
|
<!-- <uni-easyinput v-model="formData.stocktakinNum" placeholder="请输入实际数量" /> -->
|
|
</uni-forms-item>
|
|
<view :class="{red:computedNumber<0}">
|
|
<uni-forms-item label="盈亏数量" required>
|
|
<uni-easyinput disabled v-model="computedNumber" placeholder="请输入盈亏数量" />
|
|
</uni-forms-item>
|
|
</view>
|
|
|
|
<uni-forms-item label="单价" required>
|
|
<uni-easyinput disabled v-model="formData.price" placeholder="请输入单价" />
|
|
</uni-forms-item>
|
|
<view :class="{red:computedMoney<0}">
|
|
<uni-forms-item label="盈亏金额" required>
|
|
<uni-easyinput disabled v-model="computedMoney" placeholder="请输入盈亏金额" />
|
|
</uni-forms-item>
|
|
</view>
|
|
|
|
<uni-forms-item label="备注" required>
|
|
<uni-easyinput type="textarea" v-model="formData.note" placeholder="请输入备注" />
|
|
</uni-forms-item>
|
|
<view class="u-flex u-m-t-30">
|
|
<view class="u-flex-1 u-p-r-16">
|
|
<my-button type="default" shape="circle" @tap="formHide">取消</my-button>
|
|
</view>
|
|
<view class="u-flex-1 u-p-l-16">
|
|
<my-button shape="circle" @tap="addStocktakin">确定</my-button>
|
|
</view>
|
|
|
|
</view>
|
|
</uni-forms>
|
|
</view>
|
|
</view>
|
|
|
|
</my-mask>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
onLoad
|
|
} from '@dcloudio/uni-app'
|
|
import {
|
|
$addStocktakin,
|
|
$getStocktakin
|
|
} from '@/http/yskApi/goods.js'
|
|
import infoBox from "@/commons/utils/infoBox.js"
|
|
import listItem from './components/list-item';
|
|
import {
|
|
$pageData
|
|
} from '@/commons/goodsData.js'
|
|
|
|
import {
|
|
computed,
|
|
reactive,
|
|
ref
|
|
} from 'vue';
|
|
const refForm = ref(null)
|
|
const refMask = ref(null)
|
|
|
|
function formShow() {
|
|
refMask.value.open()
|
|
}
|
|
|
|
function formHide() {
|
|
formData.note=''
|
|
refMask.value.close()
|
|
}
|
|
const formData = reactive({
|
|
stock:0,
|
|
note: '',
|
|
price:'',
|
|
productId:"",
|
|
skuId:'',
|
|
stocktakinNum:0
|
|
})
|
|
const computedMoney=computed(()=>{
|
|
return (formData.stocktakinNum-formData.stock)*formData.price
|
|
})
|
|
|
|
const computedNumber=computed(()=>{
|
|
return formData.stocktakinNum-formData.stock
|
|
})
|
|
|
|
const pageData = reactive({
|
|
...$pageData,
|
|
query: {
|
|
...$pageData.query,
|
|
name: '',
|
|
skuId: '',
|
|
sort: 'id,desc'
|
|
}
|
|
})
|
|
// 页数改变事件
|
|
function pageChange(page) {
|
|
pageData.query.page=page-1
|
|
init()
|
|
}
|
|
async function addStocktakin() {
|
|
const res = await $addStocktakin(formData)
|
|
infoBox.showToast('添加成功')
|
|
formHide()
|
|
init()
|
|
}
|
|
async function init() {
|
|
const res = await $getStocktakin(pageData.query)
|
|
pageData.hasAjax=true
|
|
if(pageData.query.page===0&&res.content.length){
|
|
const zero=res.content[0]
|
|
formData.stock=zero.inventoryStock*1
|
|
formData.stocktakinNum=formData.stock
|
|
formData.price=zero.price
|
|
}else{
|
|
formData.stock=option.stock*1
|
|
formData.stocktakinNum=formData.stock
|
|
formData.price=option.price*1
|
|
}
|
|
pageData.list = res.content
|
|
pageData.totalElements = res.totalElements
|
|
}
|
|
let option={}
|
|
onLoad(opt => {
|
|
console.log(opt);
|
|
if (JSON.stringify(opt) !== '{}') {
|
|
option=opt
|
|
Object.assign(pageData.query, opt)
|
|
formData.skuId=opt.skuId
|
|
formData.productId=opt.productId
|
|
init()
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.form-box {
|
|
margin: auto;
|
|
}
|
|
|
|
::v-deep.uni-forms-item {
|
|
min-height: 100rpx;
|
|
}
|
|
|
|
::v-deep.uni-forms-item .uni-forms-item__label {
|
|
text-indent: 0;
|
|
font-size: 28rpx !important;
|
|
font-weight: bold;
|
|
color: #333;
|
|
text-align: right;
|
|
}
|
|
|
|
::v-deep .none-label .uni-forms-item.is-direction-top {
|
|
padding: 0 !important;
|
|
min-height: initial !important;
|
|
}
|
|
|
|
::v-deep .none-label .uni-forms-item .uni-forms-item__label {
|
|
padding: 0 !important;
|
|
}
|
|
::v-deep.is-disabled .uni-easyinput__placeholder-class{
|
|
color: #333;
|
|
}
|
|
.fixed-b {
|
|
bottom: 80rpx;
|
|
left: 110rpx;
|
|
right: 110rpx;
|
|
}
|
|
|
|
::v-deep.uni-input-input{
|
|
color: #333;
|
|
}
|
|
::v-deep .red .uni-input-input{
|
|
color: $my-red-color;
|
|
}
|
|
</style> |