订单列表中取消订单金额显示支付方式,耗材列表调整

This commit is contained in:
魏啾 2024-09-26 17:29:48 +08:00
parent 41b5156605
commit 9215757381
5 changed files with 355 additions and 116 deletions

View File

@ -38,16 +38,16 @@ export function puttbConsType(data) {
* 查询耗材信息 * 查询耗材信息
* @returns * @returns
*/ */
export function gettbConsInfo(params) { export function gettbConsInfo(data) {
// return request({ // return request({
// url: '/api/tbConsInfo', // url: '/api/tbConsInfo',
// method: "get", // method: "get",
// params // params
// }); // });
return request({ return request({
url: "/api/viewConInfoFlow", url: "/api/viewConInfoFlow/get",
method: "get", method: "post",
params data
}); });
} }
@ -163,27 +163,15 @@ export function deletetbProskuCon(data) {
* 查询耗材流水信息 * 查询耗材流水信息
* @returns * @returns
*/ */
export function gettbConsInfoFlow(params) { export function gettbConsInfoFlow(data) {
return request({ return request({
url: "/api/tbConsInfoFlow", url: "/api/viewConInfoFlow/get",
method: "get", method: "post",
params data
});
}
/**
* 分组查询获取耗材流水信息
*/
export function viewConInfoFlow(data) {
return request({
url: "/api/viewConInfoFlow",
method: "get",
params: {
shopId: localStorage.getItem("shopId"),
...data
}
}); });
} }
/** /**
* 查询耗材单位列表 * 查询耗材单位列表
*/ */
@ -236,3 +224,23 @@ export function tbProskuConV2(data) {
data data
}); });
} }
/**
* 耗材库存统计
*/
export function tbConsInfoFlowcount(data) {
return request({
url: "/api/tbConsInfoFlow/count",
method: "post",
data
});
}
/**
* 耗材库存记录列表
*/
export function tbConsInfoFlowstock(data) {
return request({
url: "/api/tbConsInfoFlow/stock",
method: "post",
data
});
}

View File

@ -96,7 +96,7 @@
</template> </template>
<script> <script>
import { gettbConsInfoFlow, viewConInfoFlow } from "@/api/consumable"; import { gettbConsInfoFlow, gettbConsInfo } from "@/api/consumable";
export default { export default {
data() { data() {
return { return {
@ -206,7 +206,7 @@ export default {
async getTableData() { async getTableData() {
try { try {
this.clickseetableData.loading = true; this.clickseetableData.loading = true;
const res = await viewConInfoFlow({ const res = await gettbConsInfo({
page: this.clickseetableData.page, page: this.clickseetableData.page,
size: this.clickseetableData.size, size: this.clickseetableData.size,
consId: "", consId: "",

View File

@ -11,71 +11,6 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<template>
<div class="box">
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">现有数量</div>
<div class="s" style="color: #333333;">3,333</div>
</div>
</div>
</div>
</div>
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">增加数量:</div>
<div class="s">3,333</div>
</div>
</div>
<div class="boxitem_ses">
<div class="es">
<div class="e">手动增加:</div>
<div class="s">23</div>
</div>
<div class="es">
<div class="e">入库:</div>
<div class="s">1111</div>
</div>
</div>
</div>
</div>
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">减少数量:</div>
<div class="s">1111</div>
</div>
</div>
<div class="boxitem_ses">
<div class="es">
<div class="e">手动减少:</div>
<div class="s">1111</div>
</div>
<div class="es">
<div class="e">消耗:</div>
<div class="s">1111</div>
</div>
<div class="es">
<div class="e">报损:</div>
<div class="s">1111</div>
</div>
<div class="es">
<div class="e">出库:</div>
<div class="s">1111</div>
</div>
</div>
</div>
</div>
</div>
</template>
<div class="head-container"> <div class="head-container">
<el-table ref="table" :data="clickseetableData.data" v-loading="clickseetableData.loading" row-key="id"> <el-table ref="table" :data="clickseetableData.data" v-loading="clickseetableData.loading" row-key="id">
<el-table-column label="耗材名称" prop="conName" /> <el-table-column label="耗材名称" prop="conName" />
@ -130,7 +65,7 @@
</template> </template>
<script> <script>
import { gettbConsInfoFlow, viewConInfoFlow } from "@/api/consumable"; import { gettbConsInfoFlow, gettbConsInfo } from "@/api/consumable";
import consRecordDetail from "../components/cons_record_detail"; import consRecordDetail from "../components/cons_record_detail";
export default { export default {
@ -194,11 +129,12 @@ export default {
async getTableData() { async getTableData() {
try { try {
this.clickseetableData.loading = true; this.clickseetableData.loading = true;
const res = await viewConInfoFlow({ const res = await gettbConsInfo({
page: this.clickseetableData.page, page: this.clickseetableData.page,
size: this.clickseetableData.size, size: this.clickseetableData.size,
...this.query, ...this.query,
shopId: localStorage.getItem("shopId") shopId: localStorage.getItem("shopId"),
sort:'createTime,desc'
}); });
this.clickseetableData.loading = false; this.clickseetableData.loading = false;
this.clickseetableData.data = res.content.map(v => { this.clickseetableData.data = res.content.map(v => {

View File

@ -12,49 +12,174 @@
style="width: 150px" style="width: 150px"
@keyup.enter.native="getTableData" @keyup.enter.native="getTableData"
/> --> /> -->
<!-- <div style="width: 150px"> <div style="width: 150px">
<el-select v-model="query.conTypeId" placeholder="请选择耗材分类" style="width: 100%"> <el-select v-model="query.conTypeId" placeholder="请选择耗材分类" style="width: 100%">
<el-option :label="item.conTypeName" :value="item.id" v-for="item in consTypeList" <el-option :label="item.conTypeName" :value="item.id" v-for="item in consTypeList"
:key="item.conTypeId" /> :key="item.conTypeId" />
</el-select> </el-select>
</div> </div>
<el-input v-model="query.conTypeName" size="small" clearable placeholder="请输入类型名称" style="width: 150px" <!--<el-input v-model="query.conTypeName" size="small" clearable placeholder="请输入类型名称" style="width: 150px"
@keyup.enter.native="getTableData" /> @keyup.enter.native="getTableData" />
<el-input v-model="query.conCode" size="small" clearable placeholder="请输入耗材代码" style="width: 150px" <el-input v-model="query.conCode" size="small" clearable placeholder="请输入耗材代码" style="width: 150px"
@keyup.enter.native="getTableData" /> --> @keyup.enter.native="getTableData" />
<el-select v-model="query.status" placeholder="请选择商品规格">
<el-option :label="item.label" :value="item.value" v-for="item in typeEnums" :key="item.label" />
</el-select>-->
<el-input v-model="query.conName" size="small" clearable placeholder="请输入耗材名称" style="width: 150px" <el-input v-model="query.conName" size="small" clearable placeholder="请输入耗材名称" style="width: 150px"
@keyup.enter.native="getTableData" /> @keyup.enter.native="getTableData" />
<div style="width: 150px"> <el-date-picker v-model="query.createdAt" type="daterange" range-separator="" start-placeholder="开始日期"
<el-select v-model="query.status" placeholder="请选择商品规格" style="width: 100%"> end-placeholder="结束日期" value-format="yyyy-MM-dd">
<el-option :label="item.label" :value="item.value" v-for="item in typeEnums" :key="item.label" /> </el-date-picker>
</el-select>
</div>
<div style="width: 300px;">
<el-select clearable v-model="query.sort" placeholder="排序">
<el-option label="按数量排序" value="balance,desc" />
</el-select>
</div>
<el-button type="primary" @click="getTableData">查询</el-button> <el-button type="primary" @click="getTableData">查询</el-button>
<el-button @click="resetHandle">重置</el-button> <el-button @click="resetHandle">重置</el-button>
</div> </div>
<div class="row"> <div class="row">
<el-button @click="$router.push({ name: 'operation_in' })">入库</el-button>
<el-button @click="$router.push({ name: 'operation_out' })">出库</el-button>
<el-button @click="$router.push({ name: 'cons_record' })">库存记录</el-button>
<el-button @click="$router.push({ name: 'type' })">分类管理</el-button>
<el-button @click="$router.push({ name: 'supplier_manage' })">供应商管理</el-button>
<el-button icon="el-icon-download" :loading="downloadLoading" @click="protHandle">导出耗材</el-button> <el-button icon="el-icon-download" :loading="downloadLoading" @click="protHandle">导出耗材</el-button>
<el-button icon="el-icon-upload2" :loading="uploadLoading" @click="dialogVisible = true">导入耗材</el-button> <el-button icon="el-icon-upload2" :loading="uploadLoading" @click="dialogVisible = true">导入耗材</el-button>
</div> </div>
</div> </div>
<div class="row_wrap" style="margin-top: 12px">
<div class="row">
<el-button type="primary" icon="el-icon-plus" @click="clickdialogframe('add')">添加</el-button>
<el-button @click="$router.push({ name: 'operation_in' })">入库</el-button>
<el-button @click="$router.push({ name: 'operation_out' })">出库</el-button>
<el-button @click="$router.push({ name: 'cons_record' })">耗材记录</el-button>
<el-button @click="$router.push({ name: 'type' })">分类管理</el-button>
<el-button @click="$router.push({ name: 'supplier_manage' })">供应商管理</el-button>
</div>
<div class="row">
<el-select clearable v-model="query.sort" @change="getTableData" placeholder="排序">
<el-option label="创建时间" value="balance,desc" />
<el-option label="数量由低到高" value="createTime,desc" />
</el-select>
</div>
</div>
</div> </div>
<div class="head-container"> <template>
<div class="box">
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">耗材种数</div>
<div
class="s" style="color: #333333;">{{ tableData.total }}</div>
</div>
</div>
</div>
</div>
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">增加数量:</div>
<div class="s"
@click="stockData.column = 'addCountNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{
tongji.addCountNumber }}</div>
</div>
</div>
<div class="boxitem_ses">
<div class="es">
<div class="e">手动增加:</div>
<div class="s"
@click="stockData.column = 'addNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{ tongji.addNumber }}
</div>
</div>
<div class="es">
<div class="e">入库:</div>
<div class="s"
@click="stockData.column = 'stockInNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{
tongji.stockInNumber }}</div>
</div>
</div>
</div>
</div>
<div class="boxitem">
<img src="@/assets/images/data_home_item1_icon.png" />
<div class="boxitem_s">
<div class="boxitem_ses">
<div class="es">
<div class="e">减少数量:</div>
<div class="s"
@click="stockData.column = 'subCountNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{
tongji.subCountNumber }}</div>
</div>
</div>
<div class="boxitem_ses">
<div class="es">
<div class="e">手动减少:</div>
<div class="s"
@click="stockData.column = 'subNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{ tongji.subNumber }}
</div>
</div>
<div class="es">
<div class="e">消耗:</div>
<div class="s"
@click="stockData.column = 'saleNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{ tongji.saleNumber
}}
</div>
</div>
<div class="es">
<div class="e">报损:</div>
<div class="s"
@click="stockData.column = 'lossNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{ tongji.lossNumber
}}
</div>
</div>
<div class="es">
<div class="e">出库:</div>
<div class="s"
@click="stockData.column = 'stockOutNumber', stockData.size = 10, stockData.page = 0, gettbConsInfoFlowstock()">
{{
tongji.stockOutNumber }}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<!-- 动态信息 出库 报损 消耗 手动减少 减少数量 入库 手动增加 增加数量 现有数量-->
<el-dialog :title="variabilitytitle" :visible.sync="variabilityshow">
<div class="head-container">
<el-table ref="table" :data="stockData.data" v-loading="stockData.loading" row-key="id" height="450">
<el-table-column label="耗材名称" prop="conName" />
<el-table-column label="变动库存" prop="amount">
<template v-slot="scope">
<span :class="{ red: scope.row.bizType == '-' }">{{ scope.row.bizType }}{{ scope.row.amount }}</span>
</template>
</el-table-column>
<el-table-column label="现有库存" prop="balance" />
<el-table-column label="业务说明" prop="bizName" />
<!-- <el-table-column label="商品信息" prop="productName"></el-table-column> -->
<el-table-column label="创建时间" prop="createTime"></el-table-column>
</el-table>
</div>
<div class="head-container">
<el-pagination :total="stockData.total" :current-page="stockData.page + 1" :page-size="stockData.size"
layout="total, sizes, prev, pager, next, jumper" @current-change="wstockChange" @size-change="(e) => {
stockData.size = e;
stockData.page = 0;
gettbConsInfoFlowstock();
}" />
</div>
</el-dialog>
<!-- <div class="head-container">
<el-row> <el-row>
<el-col> <el-col>
<el-button type="primary" icon="el-icon-plus" @click="clickdialogframe('add')">添加</el-button> <el-button type="primary" icon="el-icon-plus" @click="clickdialogframe('add')">添加</el-button>
</el-col> </el-col>
</el-row> </el-row>
</div> </div> -->
<div class="head-container" id="table_drag"> <div class="head-container" id="table_drag">
<el-table ref="table" :data="tableData.data" v-loading="tableData.loading" row-key="id"> <el-table ref="table" :data="tableData.data" v-loading="tableData.loading" row-key="id">
<el-table-column label="耗材名称" prop="conName" style="width: 100px;"> <el-table-column label="耗材名称" prop="conName" style="width: 100px;">
@ -370,6 +495,7 @@
" /> " />
</div> </div>
</el-dialog> </el-dialog>
<!-- 耗材盘点 --> <!-- 耗材盘点 -->
<AddConsTakin ref="AddConsTakin" @success="resetHandle" /> <AddConsTakin ref="AddConsTakin" @success="resetHandle" />
<!-- 查看详情 --> <!-- 查看详情 -->
@ -403,7 +529,9 @@ import {
posttbConsInfo, posttbConsInfo,
gettbConsInfoFlow, gettbConsInfoFlow,
posttbConsInfostockIn, posttbConsInfostockIn,
postapitbConsInfo postapitbConsInfo,
tbConsInfoFlowcount,
tbConsInfoFlowstock
} from "@/api/consumable"; } from "@/api/consumable";
import AddConsTakin from "../components/addConsTakin"; import AddConsTakin from "../components/addConsTakin";
import { tbConsInfodownload, tbConsInfoinputStock } from '@/api/invoicing' import { tbConsInfodownload, tbConsInfoinputStock } from '@/api/invoicing'
@ -415,6 +543,7 @@ export default {
components: { AddConsTakin, UploadExcel, consRecordDetail }, components: { AddConsTakin, UploadExcel, consRecordDetail },
data() { data() {
return { return {
tongji: {},//
dayjs, dayjs,
consTypeList: [], consTypeList: [],
query: { query: {
@ -422,7 +551,9 @@ export default {
conTypeName: "", conTypeName: "",
conCode: "", conCode: "",
conName: "", conName: "",
status: '' status: '',
createdAt: [],
sort: 'createTime,desc'
}, },
resetQuery: '', resetQuery: '',
libraryshow: false, // libraryshow: false, //
@ -468,6 +599,7 @@ export default {
loading: false, loading: false,
total: 0 total: 0
}, },
clickseetypedialogshow: false, clickseetypedialogshow: false,
clickseetableData: { clickseetableData: {
data: [], data: [],
@ -476,6 +608,15 @@ export default {
loading: false, loading: false,
total: 0 total: 0
}, },
variabilityshow: false,
variabilitytitle: '',
stockData: {
data: [],
page: 0,
size: 10,
loading: false,
total: 0
},
ruleFormLoading: false, ruleFormLoading: false,
ruleForms: [], ruleForms: [],
ruleForm: { ruleForm: {
@ -640,6 +781,8 @@ export default {
// //
resetHandle() { resetHandle() {
this.query = { ...this.resetQuery } this.query = { ...this.resetQuery }
this.query.sort = 'createTime,desc'
this.query.createdAt = []
this.tableData.page = 0; this.tableData.page = 0;
this.getTableData(); this.getTableData();
}, },
@ -655,17 +798,24 @@ export default {
// //
async getTableData() { async getTableData() {
this.tableData.loading = true; this.tableData.loading = true;
let arr = []
if (this.query.createdAt.length) {
arr = [this.query.createdAt[0] + ' 00:00:00', this.query.createdAt[1] + ' 23:59:59']
} else {
arr = []
}
try { try {
const res = await gettbConsInfo({ const res = await gettbConsInfo({
...this.query, ...this.query,
page: this.tableData.page, page: this.tableData.page,
size: this.tableData.size, size: this.tableData.size,
shopId: localStorage.getItem("shopId") shopId: localStorage.getItem("shopId"),
createTime: arr
}); });
this.tableData.loading = false; this.tableData.loading = false;
// this.tableData.data = res.content; // this.tableData.data = res.content;
this.tableData.total = res.totalElements; this.tableData.total = res.totalElements;
this.gettbConsInfoFlowcount()//
this.tableData.data = res.content.map(v => { this.tableData.data = res.content.map(v => {
const productIds = v.productId ? v.productId.split(',') : [] const productIds = v.productId ? v.productId.split(',') : []
return { return {
@ -686,6 +836,87 @@ export default {
console.log(error); console.log(error);
} }
}, },
//
async gettbConsInfoFlowcount() {
let arr = []
if (this.query.createdAt.length) {
arr = [this.query.createdAt[0] + ' 00:00:00', this.query.createdAt[1] + ' 23:59:59']
} else {
arr = []
}
try {
const res = await tbConsInfoFlowcount({
...this.query,
page: this.tableData.page,
size: this.tableData.size,
shopId: localStorage.getItem("shopId"),
startTime: arr[0],
endTime: arr[1]
});
this.tongji = res;
} catch (error) {
console.log(error);
}
},
//
async gettbConsInfoFlowstock() {
this.variabilityshow = true
switch (this.stockData.column) {
case 'stockNumber':
this.variabilitytitle = '现有数量'
break;
case 'addCountNumber':
this.variabilitytitle = '增加数量'
break;
case 'addNumber':
this.variabilitytitle = '手动增加'
break;
case 'stockInNumber':
this.variabilitytitle = '入库'
break;
case 'refundNumber':
this.variabilitytitle = '退货'
break;
case 'subCountNumber':
this.variabilitytitle = '减少数量'
break;
case 'subNumber':
this.variabilitytitle = '手动减少'
break;
case 'saleNumber':
this.variabilitytitle = '消耗'
break;
case 'lossNumber':
this.variabilitytitle = '报损'
break;
case 'stockOutNumber':
this.variabilitytitle = '出库'
break;
}
this.stockData.loading = true;
let arr = []
if (this.query.createdAt.length) {
arr = [this.query.createdAt[0] + ' 00:00:00', this.query.createdAt[1] + ' 23:59:59']
} else {
arr = []
}
let res = await tbConsInfoFlowstock({
page: this.stockData.page,
size: this.stockData.size,
shopId: localStorage.getItem("shopId"),
productId: '',//id
column: this.stockData.column,//
createdAt: arr//id
})
this.stockData.loading = false;
this.stockData.data = res.content;
this.stockData.total = res.totalElements;
},
//
wstockChange(e) {
this.stockData.page = e - 1;
this.gettbConsInfoFlowstock();
},
// //
async gettbConsType() { async gettbConsType() {
try { try {
@ -933,4 +1164,68 @@ export default {
.red { .red {
color: rgb(219, 32, 32); color: rgb(219, 32, 32);
} }
.box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0px 90px 20px 90px;
.boxitem {
min-width: max-content;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 24px;
background: rgba(244, 249, 255, 0.5);
border-radius: 10px;
.boxitem_s {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
.boxitem_ses {
margin-top: 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.es {
border-left: 2px solid #DDDFE6;
padding: 0 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.e {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 12px;
color: #666666;
}
.s {
margin-left: 10px;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 15px;
color: #3F9EFF;
}
}
.es:nth-child(1) {
margin-top: 0;
border-left: none;
}
}
.boxitem_ses:nth-child(1) {
margin-top: 0;
}
}
}
}
</style> </style>

View File

@ -114,7 +114,7 @@
<el-table-column label="台桌号" prop="tableName"></el-table-column> <el-table-column label="台桌号" prop="tableName"></el-table-column>
<el-table-column label="订单金额"> <el-table-column label="订单金额">
<template v-slot="scope"> <template v-slot="scope">
<div>{{ scope.row.orderType | orderTypeFilter }}</div> <!-- <div>{{ scope.row.orderType | orderTypeFilter }}</div> -->
<div class="refund" v-if=" <div class="refund" v-if="
scope.row.orderType == 'return' scope.row.orderType == 'return'
"> ">