Merge pull request 'yyw提交' (#22) from yyw into master

Reviewed-on: #22
This commit is contained in:
vivanlina 2025-12-06 12:05:47 +00:00
commit 5acb4dd70e
5 changed files with 60 additions and 15 deletions

View File

@ -16,5 +16,5 @@ createApp(App)
.use(ElementPlus, { locale: zhCn, zIndex: 3000, size: 'default' }) .use(ElementPlus, { locale: zhCn, zIndex: 3000, size: 'default' })
.mount('#app') .mount('#app')
document.title = 'ERP-管理系统'; document.title = '妙选ERP';
document.execCommand("BackgroundImageCache", false, true); document.execCommand("BackgroundImageCache", false, true);

View File

@ -105,12 +105,12 @@
<div v-for="(item, i) in goodsSkus" :key="i" class="skuBox"> <div v-for="(item, i) in goodsSkus" :key="i" class="skuBox">
<el-form label-width="110px" :inline="true"> <el-form label-width="110px" :inline="true">
<el-form-item label="规格:"> <el-form-item label="规格:">
<el-select v-model="item.sku_id" placeholder="请选择" clearable filterable style="width: 160px;"> <el-select v-model="item.sku_id" placeholder="请选择" clearable filterable style="width: 160px;" @change="computeCost()">
<el-option v-for="it in skusList" :key="it.id" :label="it.goods && it.goods.title + '' + it.title + ''" :value="it.id" /> <el-option v-for="it in skusList" :key="it.id" :label="it.goods && it.goods.title + '' + it.title + ''" :value="it.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数量:"> <el-form-item label="数量:">
<el-input-number v-model="item.num" :min="0" /> <el-input-number v-model="item.num" :min="0" @change="computeCost()" />
</el-form-item> </el-form-item>
<el-form-item label=" "> <el-form-item label=" ">
<el-button type="danger" @click="handleSkuDelete(i)" size="small"><el-icon><Delete /></el-icon>&nbsp;删除</el-button> <el-button type="danger" @click="handleSkuDelete(i)" size="small"><el-icon><Delete /></el-icon>&nbsp;删除</el-button>
@ -252,6 +252,7 @@ export default {
function handleSkuDelete(index) { function handleSkuDelete(index) {
data.goodsSkus.splice(index, 1) data.goodsSkus.splice(index, 1)
computeCost()
} }
function toAddSku() { function toAddSku() {
@ -265,6 +266,10 @@ export default {
function getSkusList() { function getSkusList() {
get(`/api/all/goods-skus`).then((res) => { get(`/api/all/goods-skus`).then((res) => {
data.skusList = res.data data.skusList = res.data
data.skuObj = {}
res.data.forEach(item => {
data.skuObj[item.id] = item
})
}) })
} }
@ -280,6 +285,20 @@ export default {
}) })
} }
function computeCost() {
let val = 0
data.goodsSkus.forEach(item => {
if(item.sku_id) {
let goods_cost = data.skuObj[item.sku_id].goods_cost || 0
let other_cost = data.skuObj[item.sku_id].other_cost || 0
let cost_factor = data.skuObj[item.sku_id].cost_factor || 0
let cost = (goods_cost * 100 + other_cost * 100) * cost_factor
val += cost * item.num
}
})
data.itemInfo.goods_cost = (val / 100).toFixed(2)
}
onMounted(() => { onMounted(() => {
fetchData() fetchData()
getSkusList() getSkusList()
@ -297,8 +316,8 @@ export default {
handleSkuDelete, handleSkuDelete,
toAddSku, toAddSku,
getSkusList, getSkusList,
handleUpload handleUpload,
computeCost
} }
} }
} }

View File

@ -159,14 +159,24 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="运费类型:"> <el-form-item label="运费类型:">
<el-radio-group v-model="item.freight_type"> <el-radio-group v-model="item.freight_type" style="width: 250px;">
<el-radio :label="1">有运费</el-radio> <el-radio :label="1">有运费</el-radio>
<el-radio :label="3">无运费</el-radio> <el-radio :label="3">无运费</el-radio>
<el-radio :label="2">后补</el-radio> <el-radio :label="2">后补</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="商品成本:"> <el-form-item label="成本系数:">
<el-input placeholder="商品成本" v-model="item.goods_cost" clearable style="width: 250px;"></el-input> <el-select v-model="item.cost_factor" placeholder="请选择" clearable style="width: 250px;">
<el-option label="1" :value="1" />
<el-option label="1.02" :value="1.02" />
<el-option label="1.05" :value="1.05" />
</el-select>
</el-form-item>
<el-form-item label="采购成本:">
<el-input placeholder="采购成本" v-model="item.goods_cost" clearable style="width: 250px;"></el-input>
</el-form-item>
<el-form-item label="其他成本:">
<el-input placeholder="其他成本" v-model="item.other_cost" clearable style="width: 250px;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="运费成本:"> <el-form-item label="运费成本:">
<el-input placeholder="运费成本" v-model="item.freight_cost" clearable style="width: 250px;"></el-input> <el-input placeholder="运费成本" v-model="item.freight_cost" clearable style="width: 250px;"></el-input>
@ -317,7 +327,7 @@ export default {
let item = data.skusList[index] let item = data.skusList[index]
item.freight_cost = item.freight_cost || 0 item.freight_cost = item.freight_cost || 0
if(!item.goods_cost || item.goods_cost * 1 == 0) { if(!item.goods_cost || item.goods_cost * 1 == 0) {
return ElMessage({ type: 'info', message: '商品成本必填' }) // return ElMessage({ type: 'info', message: '' })
} }
} }
data.opa_loading = true data.opa_loading = true
@ -395,8 +405,10 @@ export default {
sort: 0, sort: 0,
gift: 0, gift: 0,
goods_cost: '', goods_cost: '',
other_cost: '',
freight_cost: '', freight_cost: '',
freight_type: 1 freight_type: 1,
cost_factor: ''
} }
data.skusList.push(sku) data.skusList.push(sku)
} }

View File

@ -95,7 +95,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="created_at" label="添加时间" align="center" /> <el-table-column prop="created_at" label="添加时间" align="center" />
<el-table-column label="操作" align="center" width="150"> <el-table-column label="操作" align="center" width="150" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button type="primary" circle @click="handleEdit(scope.row)"><el-icon><Edit /></el-icon></el-button> <el-button type="primary" circle @click="handleEdit(scope.row)"><el-icon><Edit /></el-icon></el-button>
@ -195,9 +195,19 @@
<el-radio :label="2">后补</el-radio> <el-radio :label="2">后补</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="商品成本:"> <el-form-item label="成本系数:">
<el-input v-model="itemInfo.goods_cost" clearable></el-input> <el-select v-model="itemInfo.cost_factor" placeholder="请选择" clearable style="width: 200px;">
</el-form-item> <el-option label="1" :value="1" />
<el-option label="1.02" :value="1.02" />
<el-option label="1.05" :value="1.05" />
</el-select>
</el-form-item>
<el-form-item label="采购成本:">
<el-input placeholder="采购成本" v-model="itemInfo.goods_cost" clearable></el-input>
</el-form-item>
<el-form-item label="其他成本:">
<el-input placeholder="其他成本" v-model="itemInfo.other_cost" clearable></el-input>
</el-form-item>
<el-form-item label="运费成本:"> <el-form-item label="运费成本:">
<el-input v-model="itemInfo.freight_cost" clearable></el-input> <el-input v-model="itemInfo.freight_cost" clearable></el-input>
</el-form-item> </el-form-item>
@ -363,7 +373,8 @@ export default {
status: 1, status: 1,
sort: 0, sort: 0,
gift: 0, gift: 0,
freight_type: 1 freight_type: 1,
cost_factor: ''
} }
data.showDialog = true data.showDialog = true
} }

View File

@ -148,6 +148,9 @@
<el-table-column prop="total_profit" label="利润" align="center" /> <el-table-column prop="total_profit" label="利润" align="center" />
<el-table-column prop="order_rate" label="订单占比" align="center" /> <el-table-column prop="order_rate" label="订单占比" align="center" />
<el-table-column prop="number_rate" label="销量占比" align="center" /> <el-table-column prop="number_rate" label="销量占比" align="center" />
<el-table-column prop="goods_cost" label="采购成本" align="center" />
<el-table-column prop="other_cost" label="其他成本" align="center" />
<el-table-column prop="freight_cost" label="运费(退款后)" align="center" />
<el-table-column label="趋势图" align="center" width="80"> <el-table-column label="趋势图" align="center" width="80">
<template #default="scope"> <template #default="scope">
<el-button type="primary" circle @click="getDataLine(scope.row)" :loading="scope.row.loading"><el-icon><TrendCharts /></el-icon></el-button> <el-button type="primary" circle @click="getDataLine(scope.row)" :loading="scope.row.loading"><el-icon><TrendCharts /></el-icon></el-button>