Merge remote-tracking branch 'origin/main'

This commit is contained in:
齐天大圣 2024-10-30 10:30:27 +08:00
commit a5fc7fbe9a
52 changed files with 916 additions and 730 deletions

View File

@ -11,7 +11,7 @@ VUE_APP_BASE_API = '/dev-api'
VUE_APP_PUBLIC_PATH = '/'
# 后端接口地址
VUE_APP_SERVER_URL = 'http://192.168.31.178:8080/'
VUE_APP_SERVER_URL = 'http://192.168.31.96:8080/'
# http://192.168.0.121:8080/

View File

@ -120,11 +120,11 @@
<div>
<el-button type="text" @click="ifWrite = !ifWrite">编辑</el-button>
</div>
<el-input type="textarea" :disabled="ifWrite" v-model="ruleForm.noticeContent"
<el-input type="textarea" :rows="8" :disabled="ifWrite" v-model="ruleForm.noticeContent"
placeholder="请输入通知内容"></el-input>
</el-form-item>
<el-form-item label="活动详情" prop="activityDetails">
<el-input type="textarea" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
<el-form-item label="活动详情" prop="activityDetails">
<el-input type="textarea" :rows="8" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
</el-form-item>
<el-form-item label="活动奖品" prop="activeGift">
<el-checkbox-group v-model="ruleForm.activeGift" @change="changes">

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="90px" style="margin: 0 auto;width: 70%">
<el-form-item label="活动名称" prop="name">
@ -34,11 +34,11 @@
<div>
<el-button type="text" @click="ifWrite = !ifWrite">编辑</el-button>
</div>
<el-input type="textarea" :disabled="ifWrite" v-model="ruleForm.noticeContent"
<el-input type="textarea" :rows="6" :disabled="ifWrite" v-model="ruleForm.noticeContent"
placeholder="请输入通知内容"></el-input>
</el-form-item>
<el-form-item label="活动详情" prop="activityDetails">
<el-input type="textarea" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
<el-input type="textarea" :rows="6" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
</el-form-item>
<el-form-item label="活动奖品" prop="courtesyReward">
<div style="display: flex">
@ -679,27 +679,7 @@ export default {
});
},
/** 提交按钮 */
// submitForm() {
// // this.form.activeNewlywedsChildList
// this.form.activeNewlywedsChildList = this.form.tableDatas.concat(this.tableDatas);
// this.$refs["form"].validate(valid => {
// if (valid) {
// if (this.form.id != null) {
// updateActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// } else {
// addActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// }
// }
// });
// },
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
@ -721,6 +701,11 @@ export default {
};
</script>
<style scoped lang="scss">
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
.box-bt {
width: 100%;
display: flex;
@ -739,7 +724,7 @@ export default {
.cot-box {
width: 100%;
height: 89vh;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="140px">
<div style="display: flex">
@ -709,8 +709,9 @@ export default {
border-radius: 8px;
background: #fff;
box-sizing: border-box;
padding: 20px;
padding: 15px;
margin: 0 auto;
height: 86vh;
}
.d-s {
@ -731,5 +732,9 @@ export default {
.acvtive {
color: #FF770F !important;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" style="width: 70%;margin: 0 auto">
@ -41,11 +41,11 @@
<div>
<el-button type="text" @click="ifWrite = !ifWrite">编辑</el-button>
</div>
<el-input type="textarea" :disabled="ifWrite" v-model="ruleForm.noticeContent"
<el-input type="textarea" :rows="4" :disabled="ifWrite" v-model="ruleForm.noticeContent"
placeholder="请输入通知内容"></el-input>
</el-form-item>
<el-form-item label="活动详情" prop="activityDetails">
<el-input type="textarea" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
<el-input type="textarea" :rows="4" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
</el-form-item>
<el-form-item label="适用会员等级" prop="userGradeId">
<el-select v-model="ruleForm.userGradeId" clearable multiple placeholder="请选择会员等级(多选)" style="width: 100%">
@ -702,28 +702,7 @@ export default {
});
},
/** 提交按钮 */
// submitForm() {
// // this.form.activeNewlywedsChildList
// this.form.activeNewlywedsChildList = this.form.tableDatas.concat(this.tableDatas);
// this.$refs["form"].validate(valid => {
// if (valid) {
// if (this.form.id != null) {
// updateActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// } else {
// addActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// }
// }
// });
// },
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
@ -763,7 +742,7 @@ export default {
.cot-box {
width: 100%;
height: 89vh;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
@ -789,5 +768,9 @@ export default {
.acvtive {
color: #FF770F !important;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="90px" style="width: 70%;margin: 0 auto">
@ -35,11 +35,11 @@
<div>
<el-button type="text" @click="ifWrite = !ifWrite">编辑</el-button>
</div>
<el-input type="textarea" :disabled="ifWrite" v-model="ruleForm.noticeContent"
<el-input type="textarea" :rows="6" :disabled="ifWrite" v-model="ruleForm.noticeContent"
placeholder="请输入通知内容"></el-input>
</el-form-item>
<el-form-item label="活动详情" prop="activityDetails">
<el-input type="textarea" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
<el-input type="textarea" :rows="6" v-model="ruleForm.activityDetails" placeholder="请输入活动详情"></el-input>
</el-form-item>
<el-form-item label="活动奖品" prop="rewardDisplay">
<div style="display: flex">
@ -683,27 +683,7 @@ export default {
});
},
/** 提交按钮 */
// submitForm() {
// // this.form.activeNewlywedsChildList
// this.form.activeNewlywedsChildList = this.form.tableDatas.concat(this.tableDatas);
// this.$refs["form"].validate(valid => {
// if (valid) {
// if (this.form.id != null) {
// updateActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// } else {
// addActiveNewlyweds(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// }
// }
// });
// },
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
@ -743,7 +723,7 @@ export default {
.cot-box {
width: 100%;
height: 89vh;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
@ -769,5 +749,9 @@ export default {
.acvtive {
color: #FF770F !important;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="135px" style="width: 70%;margin: 0 auto">
@ -840,7 +840,7 @@ export default {
.cot-box {
width: 100%;
height: 89vh;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
@ -866,5 +866,9 @@ export default {
.acvtive {
color: #FF770F !important;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" style="width: 70%;margin: 0 auto">
<el-form-item label="活动名称" prop="name">
@ -846,5 +846,18 @@ export default {
.acvtive {
color: #FF770F !important;
}
.cot-box {
width: 100%;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
padding: 20px;
margin: 0 auto;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div class="app-container">
<div class="app-open">
<div class="cot-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" style="width: 70%;margin: 0 auto">
@ -768,7 +768,7 @@ export default {
.cot-box {
width: 100%;
height: 89vh;
height: 87vh;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
@ -794,5 +794,9 @@ export default {
.acvtive {
color: #FF770F !important;
}
.app-open{
background: #f9f9f9;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -1,227 +1,92 @@
<template>
<div class="app-container">
<el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="" prop="orderNumber">
<el-input v-model="queryParams.orderNumber" placeholder="业务单号" />
</el-form-item>
<el-form-item label="" v-model="queryParams.supplierId" prop="status">
<el-select
v-model="queryParams.supplierId"
placeholder="供应商"
clearable
style="width: 230px"
>
<el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="" v-model="queryParams.approvalStatus" prop="status">
<el-select v-model="queryParams.approvalStatus" placeholder="状态" style="150px" clearable>
<el-option
v-for="dict in dict.type.oilPurchasedStatus"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="日期选择" prop="status">
<el-date-picker
v-model="queryParams.dateRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item> -->
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card style="margin-top: 20px" >
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
@click="detailsAdd"
v-hasPermi="['convenienceStore:purchase:index:add']"
>新增采购订单</el-button>
</el-col>
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
</el-row>
<el-table ref="tables"
v-loading="loading"
:data="purchaseList"
:default-sort="defaultSort">
<el-table-column label="业务单号" align="center" prop="orderNumber"/>
<el-table-column label="供应商" align="center" prop="supplierName"/>
<el-table-column label="商品数量" align="center" prop="productQuantity"/>
<el-table-column label="单据金额" align="center" prop="totalAmount"/>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag v-if ="scope.row.approvalStatus == 'await'" size="medium">待审核</el-tag>
<el-tag v-if ="scope.row.approvalStatus == 'qrts'" type="success" size="medium">已审核入库</el-tag>
<el-tag v-if ="scope.row.approvalStatus == 'yzf'" type="danger" size="medium">已作废</el-tag>
<el-tag v-if ="scope.row.approvalStatus == 'ysh'" type="success" size="medium">已审核</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="制单人" align="center" prop="createByName"/>
<el-table-column label="制单日期" align="center" prop="orderDate" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.orderDate) }}</span>
</template>
</el-table-column>
<el-table-column label="审核人" align="center" prop="approverName"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="dispose(scope.row)"
>
{{ scope.row.approvalStatus == 'qrts'?'查看单据':'处理单据' }}
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<div class="container">
<div class="tab-box">
<div class="f-box" v-for="(item,index) in tabList" :key="index" @click="activeIndex=index" :class="{ 'active' :activeIndex==index}">{{item.name}}</div>
</div>
<purchase v-if="activeIndex == '0'"></purchase>
<returns v-if="activeIndex == '1'"></returns>
</div>
</template>
<script>
import {delInventoryApi, getInventoryApi} from "@/api/oilConfig/oilInventory";
import {getPurchasePageApi} from "@/api/convenienceStore/purchase";
import {listSupplier} from "@/api/convenienceStore/supplier";
import purchase from "@/views/convenienceStore/purchase/purchase.vue";
import returns from "@/views/convenienceStore/returns/index.vue";
export default {
name: "index",
dicts: ['oilPurchasedStatus'],
data() {
return {
purchaseList:[],
//
supplierList:[],
//
title:'',
//
showSearch: true,
disableInput: false, //
//
open: false,
//
total: 0,
//
queryParams: {
orderNumber: "",
approvalStatus: "",
status: '',
supplierId: '',
dateRange: '',
page: null,
pageSize: null,
},
//
loading: false,
//
defaultSort: {prop: 'createTime', order: 'descending'},
radio1: '商品列表',
activeIndex: 0,
tabList: [
{
name: '采购进货',
},
{
name: '采购退货',
},
]
}
},
async created() {
await this.getList();
this.getQueryList();
components: {
purchase,
returns
},
methods: {
//
getList(){
this.loading = true;
getPurchasePageApi(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.purchaseList = response.data.records;
this.total = response.data.total;
})
this.loading = false;
},
//
getQueryList(){
// selectTree().then(response => {
// this.cvsGoodList = response.data.records
// });
listSupplier().then(response => {
this.supplierList = response.data.records
})
},
detailsAdd() {
this.$router.push({
name:'purchase-details',
});
},
//
dispose(data) {
this.$router.push({
name: 'purchase-details',
params: {
PpurchaseId: data.id,
PorderNumber: data.orderNumber,
PorderDate: data.orderDate,
PapprovalStatus: data.approvalStatus
},
});
},
//
resetQuery() {
this.queryParams = {}
this.getList()
},
//
handleDel(data) {
delInventoryApi(data).then(response => {
this.$modal.msgSuccess("删除成功");
this.getList();
})
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
handleClick(tab, event) {
console.log(tab, event);
}
}
}
</script>
<style scoped lang="scss">
.app-container{
.app-center {
width: 100%;
height: 100%;
background: #f6f8f9;
box-sizing: border-box;
padding: 10px;
}
.app-top {
width: 100%;
margin-bottom: 20px;
height: 60px;
box-sizing: border-box;
}
.tab-box {
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;
padding: 0px 50px;
}
.f-box {
height: 40px;
color: #999999;
margin-right: 50px;
display: flex;
align-items: center;
}
.active {
color: #FF9655 !important;
border-bottom: 2px solid #FF9655 !important;
}
.container {
background: #F4F5F9;
box-sizing: border-box;
//padding: 20px;
}
.tabder-box {
width: 85%;
}
</style>

View File

@ -0,0 +1,259 @@
<template>
<div class="app-container">
<div class="card-change">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="" prop="orderNumber">
<el-input v-model="queryParams.orderNumber" placeholder="请输入进货单号"/>
</el-form-item>
<el-form-item label="" v-model="queryParams.supplierId" prop="status">
<el-select
v-model="queryParams.supplierId"
placeholder="请选择供应商"
clearable
style="width: 230px"
>
<el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="" v-model="queryParams.approvalStatus" prop="status">
<el-select v-model="queryParams.approvalStatus" placeholder="请选择状态" clearable>
<el-option
v-for="dict in dict.type.oilPurchasedStatus"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="">
<el-date-picker
v-model="beginTime"
style="width: 160px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime"
style="width: 160px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<el-button
type="primary"
@click="detailsAdd"
v-hasPermi="['convenienceStore:purchase:index:add']"
>新增进货订单
</el-button>
</el-form-item>
</el-form>
<div style="height: 71vh;overflow: auto">
<el-table ref="tables" border
v-loading="loading"
:data="purchaseList"
:default-sort="defaultSort">
<el-table-column label="序号" align="center" type="index" width="60"/>
<el-table-column label="进货单号" align="center" prop="orderNumber"/>
<el-table-column label="供应商" align="center" prop="supplierName"/>
<el-table-column label="商品数量" align="center" prop="productQuantity"/>
<el-table-column label="单据金额" align="center" prop="totalAmount"/>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<div style="color: #FF9655" v-if="scope.row.approvalStatus == 'await'">待审核</div>
<div style="color: #0DC291" v-if="scope.row.approvalStatus == 'qrts'" >已审核入库</div>
<div style="color: #F44522" v-if="scope.row.approvalStatus == 'yzf'" >已作废</div>
<div style="color: #409EFF" v-if="scope.row.approvalStatus == 'ysh'" >已审核</div>
</div>
</template>
</el-table-column>
<el-table-column label="制单人" align="center" prop="createByName"/>
<el-table-column label="审核人" align="center" prop="approverName"/>
<el-table-column label="入库人" align="center" prop="storageName"/>
<el-table-column label="制单日期" align="center" prop="orderDate" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.orderDate) }}</span>
</template>
</el-table-column>
<el-table-column label="审核日期" align="center" prop="examineTime" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.examineTime) }}</span>
</template>
</el-table-column>
<el-table-column label="入库时间" align="center" prop="storageTime" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.storageTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
v-if="scope.row.approvalStatus == 'ysh'"
@click="dispose(scope.row)">
商品入库
</el-button>
<el-button
size="mini"
type="text"
v-else-if="scope.row.approvalStatus == 'await'"
@click="dispose(scope.row)">
采购审核
</el-button>
<el-button
size="mini"
type="text"
v-else
@click="dispose(scope.row)">
查看详情
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</div>
</template>
<script>
import {delInventoryApi, getInventoryApi} from "@/api/oilConfig/oilInventory";
import {getPurchasePageApi} from "@/api/convenienceStore/purchase";
import {listSupplier} from "@/api/convenienceStore/supplier";
export default {
name: "index",
dicts: ['oilPurchasedStatus'],
data() {
return {
purchaseList: [],
//
supplierList: [],
//
title: '',
//
showSearch: true,
disableInput: false, //
//
open: false,
//
total: 0,
//
queryParams: {
orderNumber: "",
approvalStatus: "",
status: '',
supplierId: '',
dateRange: '',
page: null,
pageSize: null,
},
beginTime: "",
endTime: "",
//
loading: false,
//
defaultSort: {prop: 'createTime', order: 'descending'},
}
},
async created() {
await this.getList();
this.getQueryList();
},
methods: {
//
getList() {
this.loading = true;
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getPurchasePageApi(this.addDateRange(this.queryParams, dateRange)).then(response => {
this.purchaseList = response.data.records;
this.total = response.data.total;
})
this.loading = false;
},
//
getQueryList() {
// selectTree().then(response => {
// this.cvsGoodList = response.data.records
// });
listSupplier().then(response => {
this.supplierList = response.data.records
})
},
detailsAdd() {
this.$router.push({
name: 'purchase-details',
});
},
//
dispose(data) {
this.$router.push({
name: 'purchase-details',
params: {
PpurchaseId: data.id,
PorderNumber: data.orderNumber,
PorderDate: data.orderDate,
PapprovalStatus: data.approvalStatus
},
});
},
//
resetQuery() {
this.queryParams = {}
this.beginTime = ''
this.endTime = ''
this.getList()
},
//
handleDel(data) {
delInventoryApi(data).then(response => {
this.$modal.msgSuccess("删除成功");
this.getList();
})
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
}
}
</script>
<style scoped lang="scss">
.app-container {
width: 100%;
height: 100%;
background: #f6f8f9;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<!-- 搜索框-->
<div class="card-change" >
<div class="card-change">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="" prop="name">
<el-input
@ -36,113 +36,115 @@
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="" prop="supplierId">-->
<!-- <el-select-->
<!-- v-model="queryParams.supplierId"-->
<!-- placeholder="供应商"-->
<!-- clearable-->
<!-- style=""-->
<!-- >-->
<!-- <el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="pinyinCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.pinyinCode"-->
<!-- placeholder="拼音码"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="goodsNo">-->
<!-- <el-input-->
<!-- v-model="queryParams.goodsNo"-->
<!-- placeholder="条形码"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="shelfNumber">-->
<!-- <el-input-->
<!-- v-model="queryParams.shelfNumber"-->
<!-- placeholder="货架号"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- placeholder="上架状态"-->
<!-- clearable-->
<!-- style=""-->
<!-- >-->
<!-- <el-option label="上架" value="qy"/>-->
<!-- <el-option label="下架" value="jy"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="supplierId">-->
<!-- <el-select-->
<!-- v-model="queryParams.supplierId"-->
<!-- placeholder="供应商"-->
<!-- clearable-->
<!-- style=""-->
<!-- >-->
<!-- <el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="pinyinCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.pinyinCode"-->
<!-- placeholder="拼音码"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="goodsNo">-->
<!-- <el-input-->
<!-- v-model="queryParams.goodsNo"-->
<!-- placeholder="条形码"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="shelfNumber">-->
<!-- <el-input-->
<!-- v-model="queryParams.shelfNumber"-->
<!-- placeholder="货架号"-->
<!-- clearable-->
<!-- style=""-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- placeholder="上架状态"-->
<!-- clearable-->
<!-- style=""-->
<!-- >-->
<!-- <el-option label="上架" value="qy"/>-->
<!-- <el-option label="下架" value="jy"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item style="float: right;">
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<el-button type="primary" @click="dialogVisible = true"
v-hasPermi="['convenienceStore:stockStatistic:ex']"
>导出</el-button>
>导出
</el-button>
</el-form-item>
</el-form>
<div style="display: flex;justify-content: space-between">
</div>
<el-table ref="tables" v-loading="loading" :data="list"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column type="index" width="80" align="center" label="序号"/>
<el-table-column label="商品名称" align="center" prop="name" width="160" />
<el-table-column label="品类名称" align="center" prop="cvsGoodId" width="160">
<template slot-scope="scope">
<span>{{ getName(cvsGoodList, scope.row.cvsGoodId) }}</span>
</template>
</el-table-column>
<el-table-column label="条形码" align="center" prop="goodsNo" width="160" />
<el-table-column label="供应商" align="center" prop="supplierId">
<template slot-scope="scope">
<span>{{ getName(supplierList, scope.row.supplierId) }}</span>
</template>
</el-table-column>
<el-table-column label="货架号" align="center" prop="shelfNumber" />
<el-table-column label="商品规格" align="center" prop="description" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="零售价" align="center" prop="retailPrice" />
<el-table-column label="当前库存" align="center" prop="stock" />
<el-table-column label="货损量" align="center" prop="stock" />
<el-table-column label="当前成本价" align="center" prop="buyingPrice" />
<el-table-column label="成本总金额" align="center" prop="costAmount" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<div v-if="scope.row.status=='qy'" style="color: #0DC291">已上架</div>
<div v-if="scope.row.status=='jy'" style="color: #F44522">已下架</div>
</template>
</el-table-column>
<el-table-column label="操作人" align="center" prop="updateTime" width="200"></el-table-column>
<el-table-column label="操作时间" align="center" prop="updateTime" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="trace(scope.row)"
>库存跟踪</el-button>
</template>
</el-table-column>
</el-table>
<div style="height: 71vh;overflow: auto">
<el-table ref="tables" v-loading="loading" :data="list" border
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column type="index" width="60" align="center" label="序号"/>
<el-table-column label="商品名称" align="center" prop="name"/>
<el-table-column label="品类名称" align="center" prop="cvsGoodId" >
<template slot-scope="scope">
<span>{{ getName(cvsGoodList, scope.row.cvsGoodId) }}</span>
</template>
</el-table-column>
<el-table-column label="条形码" align="center" prop="goodsNo" />
<el-table-column label="供应商" align="center" prop="supplierId">
<template slot-scope="scope">
<span>{{ getName(supplierList, scope.row.supplierId) }}</span>
</template>
</el-table-column>
<el-table-column label="货架号" align="center" prop="shelfNumber"/>
<el-table-column label="商品规格" align="center" prop="goodsSpecs"/>
<el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="零售价" align="center" prop="retailPrice"/>
<el-table-column label="当前库存" align="center" prop="stock"/>
<el-table-column label="当前成本价" align="center" prop="buyingPrice"/>
<el-table-column label="成本总金额" align="center" prop="costAmount"/>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<div v-if="scope.row.status=='qy'" style="color: #0DC291">已上架</div>
<div v-if="scope.row.status=='jy'" style="color: #F44522">已下架</div>
</template>
</el-table-column>
<el-table-column label="操作人" align="center" prop="realName"></el-table-column>
<el-table-column label="操作时间" align="center" prop="updateTime" width="200">
<template slot-scope="scope">
<span>{{ scope.row.updateTime ? parseTime(scope.row.updateTime) : parseTime(scope.row.createTime)}}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="trace(scope.row)"
>库存跟踪
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
@ -154,54 +156,32 @@
<el-drawer
title="库存跟踪"
title="库存跟踪记录"
:visible.sync="drawer"
direction="rtl"
size="50%"
:before-close="handleClose">
<div style="display: grid; place-items: center;">
<el-card class="box-card" style="background-color: #f5f5f5">
<div slot="header" class="clearfix">
<div style="position: relative;">
<div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">
<h2>{{form.name}}</h2>
</div>
</div>
<br>
<div style="display: flex; justify-content: space-between;">
<span>拼音码</span>
<span>{{ form.pinyinCode }}</span>
</div>
</div>
<div >
<div style="margin-top:-5px;display: flex; justify-content: space-between;">
<h3>库存数量</h3>
<h3>{{form.stock}}{{form.unit}}</h3>
</div>
<div style="display: flex; justify-content: space-between;">
<span>更新时间</span>
<span>{{ form.updateTime }}</span>
</div>
</div>
</el-card>
<el-card class="box-card" style="margin-top: 15px">
<el-table ref="tables"
<div style="width: 96%;margin: 0 auto">
<div style="display: flex;">
<div>商品名称{{ form.name }}</div>
<div style="margin: 0 50px;">品类名称{{ getName(cvsGoodList, form.cvsGoodId) }}</div>
<div>当前库存{{ form.stock }}{{ form.unit }}</div>
<div style="margin: 0 50px;">更新时间{{ form.updateTime }}</div>
</div>
<div style="margin-top: 15px">
<el-table ref="tables" border
v-loading="loading"
:data="trackList"
:default-sort="defaultSort">
<el-table-column
lable="#"
type="index"
>
</el-table-column>
<el-table-column label="序号" align="center" type="index" > </el-table-column>
<el-table-column label="订单号" align="center" prop="oddNumber"/>
<el-table-column label="类型" align="center" prop="document"/>
<el-table-column label="变动数量" align="center" prop="changeNumber"/>
<el-table-column label="库存更新时间" align="center" prop="createTime" width="200">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="单据" align="center" prop="document" />
<el-table-column label="单号" align="center" prop="oddNumber" />
<el-table-column label="变动数量" align="center" prop="changeNumber" />
</el-table>
<pagination
v-show="total1>0"
@ -210,7 +190,7 @@
:limit.sync="queryParam.pageSize"
@pagination="getTrackList"
/>
</el-card>
</div>
</div>
</el-drawer>
@ -225,7 +205,7 @@
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="exportStock">
<!-- <a href="/dev-api/business/convenience/stockStatistic/export"> </a>-->
<!-- <a href="/dev-api/business/convenience/stockStatistic/export"> </a>-->
</el-button>
</span>
</el-dialog>
@ -245,8 +225,8 @@ export default {
data() {
return {
// id
cvsGoodId:"",
cvsGoodOptions:[],
cvsGoodId: "",
cvsGoodOptions: [],
dialogVisible: false,
//
showSearch: true,
@ -270,12 +250,12 @@ export default {
page: 1,
pageSize: 10,
id: '',
stockId:'',
stockId: '',
},
//
cvsGoodList:[],
cvsGoodList: [],
//
supplierList:[],
supplierList: [],
//
list: [],
trackList: [],
@ -288,7 +268,7 @@ export default {
defaultSort: {prop: 'createTime', order: 'descending'},
//
drawer: false,
form:{},
form: {},
}
},
created() {
@ -297,32 +277,32 @@ export default {
this.getTree();
},
methods: {
getName(list,id){
getName(list, id) {
let name = "--"
console.log(list)
list.forEach(item => {
if (item.id==id){
if (item.id == id) {
name = item.name;
}
})
return name;
},
//
getTree(){
getTree() {
cvsGoodsTree().then(response => {
this.cvsGoodOptions = response.data
})
},
//
exportStock(){
exportStock() {
exportStocks(this.queryParams).then(response => {
const blob = new Blob([response], { type: 'application/json' })
this.$download.saveAs(blob,'商品-库存统计.xlsx')
const blob = new Blob([response], {type: 'application/json'})
this.$download.saveAs(blob, '商品-库存统计.xlsx')
})
this.dialogVisible = false
},
//
getTrackList(){
getTrackList() {
this.loading = true;
listTrack(this.queryParam).then(response => {
this.trackList = response.data.records;
@ -332,7 +312,7 @@ export default {
},
//
trace(data) {
this.drawer=true
this.drawer = true
getStock(data.id).then(response => {
this.form = response.data
})
@ -364,7 +344,7 @@ export default {
this.getList();
},
//
getQueryList(){
getQueryList() {
list().then(response => {
this.cvsGoodList = response.data
});
@ -401,25 +381,28 @@ export default {
</script>
<style scoped lang="scss">
.app-container{
width: 100%;
height: 100%;
background: #f6f8f9;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.app-container {
width: 100%;
height: 100%;
background: #f6f8f9;
}
.box-card {
width: 90%;
}
.el-form--inline .el-form-item {
margin-right: 44px;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
.box-card {
width: 90%;
}
.el-form--inline .el-form-item {
margin-right: 44px;
}
</style>

View File

@ -497,7 +497,7 @@ export default {
<template>
<div class="container1">
<div class="card-change" style="margin-top: 10px;">
<div class="card-change" >
<div style="display: flex; justify-content: space-between">
@ -840,7 +840,7 @@ export default {
.container1 {
background: #F4F5F9;
box-sizing: border-box;
padding: 20px;
padding: 10px;
}
.app-container {
@ -848,7 +848,9 @@ export default {
height: 100%;
background: #f6f8f9;
}
.card-change{
height: 91vh;
}
.d-dialog > > > .el-upload--picture-card {
width: 100px;
height: 100px;

View File

@ -34,114 +34,112 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
</el-col>
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
</el-row>
<el-table ref="tables"
v-loading="loading"
:data="dataList"
:default-sort="defaultSort">
<el-table-column label="分类" align="center" prop="categoryName" width="90px">
<template slot-scope="scope">
{{ scope.row.categoryName==null? '不分类': scope.row.categoryName}}
</template>
</el-table-column>
<el-table-column label="礼品信息" align="center">
<el-table-column label="名称" align="center" prop="giftName" width="80px"/>
<el-table-column label="封面图" align="center" prop="coverImage" width="80px">
<div class="table_box">
<el-table ref="tables"
v-loading="loading"
:data="dataList"
:default-sort="defaultSort">
<el-table-column label="分类" align="center" prop="categoryName" width="90px">
<template slot-scope="scope">
<el-image
style="width: 50px; height: 50px"
:src="imagePath+scope.row.coverImage"
:preview-src-list="[imagePath + scope.row.coverImage]"
fit="cover">
</el-image>
{{ scope.row.categoryName==null? '不分类': scope.row.categoryName}}
</template>
</el-table-column>
</el-table-column>
<el-table-column label="兑换信息" align="center">
<el-table-column label="兑换方式" align="center" prop="exchangeMethod">
<el-table-column label="礼品信息" align="center">
<el-table-column label="名称" align="center" prop="giftName" width="80px"/>
<el-table-column label="封面图" align="center" prop="coverImage" width="80px">
<template slot-scope="scope">
<el-image
style="width: 50px; height: 50px"
:src="imagePath+scope.row.coverImage"
:preview-src-list="[imagePath + scope.row.coverImage]"
fit="cover">
</el-image>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="兑换信息" align="center">
<el-table-column label="兑换方式" align="center" prop="exchangeMethod">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag v-if ="scope.row.exchangeMethod == '积分'" effect="plain" size="medium">积分</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '金额'" effect="plain" type="success" size="medium">金额</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '积分+金额'" effect="plain" type="danger" size="medium">积分+金额</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">积分+加钱购</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="兑换价格" align="center" prop="">
<template slot-scope="scope">
<span v-if ="scope.row.exchangeMethod == '积分'" effect="plain" size="medium">{{scope.row.exchangePoints}}积分</span>
<span v-if ="scope.row.exchangeMethod == '金额'" effect="plain" type="success" size="medium">{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+金额'" effect="plain" type="danger" size="medium">{{scope.row.exchangePoints}}积分+{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">{{scope.row.exchangePoints}}积分+加钱购比例{{ scope.row.moneyRatio }}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="配送类型" align="center" >
<el-table-column label="配送方式" align="center" prop="deliveryMethod" width="80px">
<template slot-scope="scope">
<!-- <span v-for="(row, index) in JSON.parse(scope.row.deliveryMethod)" :key="index">-->
<span v-for="(row, index) in scope.row.deliveryMethod" :key="index">
{{row}}<br>
</span>
</template>
</el-table-column>
<el-table-column label="快递费用" align="center" prop="shippingFeeAmount">
<template slot-scope="scope">
<span v-if ="scope.row.expressShippingFee!= '统一运费' && scope.row.deliveryMethod && !scope.row.deliveryMethod.includes('物流配送')">--</span>
<span v-else-if="scope.row.expressShippingFee === '包邮' && scope.row.deliveryMethod && scope.row.deliveryMethod.includes('物流配送')" effect="plain" type="warning" size="medium">包邮</span>
<span v-else effect="plain" type="warning" size="medium">{{scope.row.shippingFeeAmount}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="礼品类型" align="center" prop="giftType" width="80px"/>
<el-table-column label="礼品库存信息" align="center">
<el-table-column label="总库存" align="center" prop="totalInventory" width="80px">
<template slot-scope="scope">
<el-button v-if="scope.row.totalInventory" type="text" @click="clickInventory(scope.row)">{{ scope.row.totalInventory===-1?'无限制': scope.row.totalInventory}}</el-button>
<el-button v-else type="text" @click="clickInventory(scope.row)">--</el-button>
</template>
</el-table-column>
<el-table-column label="已用" align="center" prop="usedInventory" width="80px">
</el-table-column>
<el-table-column label="可用" align="center" prop="remainingInventory" width="80px">
<template slot-scope="scope">
<span>{{ scope.row.totalInventory===-1?'无限制': scope.row.remainingInventory}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="排序" align="center" prop="sort" width="50px"/>
<el-table-column label="状态" align="center" prop="status" width="80px">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag v-if ="scope.row.exchangeMethod == '积分'" effect="plain" size="medium">积分</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '金额'" effect="plain" type="success" size="medium">金额</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '积分+金额'" effect="plain" type="danger" size="medium">积分+金额</el-tag>
<el-tag v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">积分+加钱购</el-tag>
<el-tag v-if ="scope.row.status == '启用'" size="medium">启用</el-tag>
<el-tag v-if ="scope.row.status == '禁用'" type="danger" size="medium">禁用</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="兑换价格" align="center" prop="">
<template slot-scope="scope">
<span v-if ="scope.row.exchangeMethod == '积分'" effect="plain" size="medium">{{scope.row.exchangePoints}}积分</span>
<span v-if ="scope.row.exchangeMethod == '金额'" effect="plain" type="success" size="medium">{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+金额'" effect="plain" type="danger" size="medium">{{scope.row.exchangePoints}}积分+{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">{{scope.row.exchangePoints}}积分+加钱购比例{{ scope.row.moneyRatio }}</span>
</template>
<el-table-column label="创建时间" align="center" prop="createTime">
</el-table-column>
</el-table-column>
<el-table-column label="配送类型" align="center" >
<el-table-column label="配送方式" align="center" prop="deliveryMethod" width="80px">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width = 70px>
<template slot-scope="scope">
<!-- <span v-for="(row, index) in JSON.parse(scope.row.deliveryMethod)" :key="index">-->
<span v-for="(row, index) in scope.row.deliveryMethod" :key="index">
{{row}}<br>
</span>
</template>
</el-table-column>
<el-table-column label="快递费用" align="center" prop="shippingFeeAmount">
<template slot-scope="scope">
<span v-if ="scope.row.expressShippingFee!= '统一运费' && scope.row.deliveryMethod && !scope.row.deliveryMethod.includes('物流配送')">--</span>
<span v-else-if="scope.row.expressShippingFee === '包邮' && scope.row.deliveryMethod && scope.row.deliveryMethod.includes('物流配送')" effect="plain" type="warning" size="medium">包邮</span>
<span v-else effect="plain" type="warning" size="medium">{{scope.row.shippingFeeAmount}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="礼品类型" align="center" prop="giftType" width="80px"/>
<el-table-column label="礼品库存信息" align="center">
<el-table-column label="总库存" align="center" prop="totalInventory" width="80px">
<template slot-scope="scope">
<el-button v-if="scope.row.totalInventory" type="text" @click="clickInventory(scope.row)">{{ scope.row.totalInventory===-1?'无限制': scope.row.totalInventory}}</el-button>
<el-button v-else type="text" @click="clickInventory(scope.row)">--</el-button>
</template>
</el-table-column>
<el-table-column label="已用" align="center" prop="usedInventory" width="80px">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row),getStock(scope.row)"
v-hasPermi="['integral:gift:index:update']"
</el-table-column>
<el-table-column label="可用" align="center" prop="remainingInventory" width="80px">
<template slot-scope="scope">
<span>{{ scope.row.totalInventory===-1?'无限制': scope.row.remainingInventory}}</span>
>修改</el-button>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="排序" align="center" prop="sort" width="50px"/>
<el-table-column label="状态" align="center" prop="status" width="80px">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag v-if ="scope.row.status == '启用'" size="medium">启用</el-tag>
<el-tag v-if ="scope.row.status == '禁用'" type="danger" size="medium">禁用</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime">
</el-table>
</div>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width = 70px>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row),getStock(scope.row)"
v-hasPermi="['integral:gift:index:update']"
>修改</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<pagination
v-show="total>0"
@ -151,7 +149,6 @@
@pagination="getList"
/>
</div>
<el-dialog :title="title" class="d-dialog" :visible.sync="open" width="1000px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="dataForm" :rules="rules" label-width="80px">
<el-row :gutter="24">
@ -213,22 +210,6 @@
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<!-- <el-upload
:action="uploadAction"
list-type="picture-card"
:class="{hide:hideUpload}"
:file-list="uploadFiles"
:auto-upload="true"
:show-file-list="false"
:headers="uploadHeader"
:on-success="handleUploadSuccessGift">
<img
v-if="this.dataForm.giftImages"
:src="imagePath + this.dataForm.giftImages"
class="list-img"
/>
<i v-if="!this.dataForm.giftImages" class="el-icon-plus"></i>
</el-upload> -->
</el-form-item>
</el-col>
</el-row>
@ -429,7 +410,6 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 打开商品界面 -->
<el-dialog title="选择商品" :visible.sync="openCommodity" width="1000px" append-to-body :close-on-click-modal="false">
<el-container>
@ -506,18 +486,9 @@
<el-button @click="cancel"> </el-button>
</div> -->
</el-dialog>
<el-dialog title="库存变更" :visible.sync="openInventory" width="500px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="inventoryForm" :rules="rulesInventory" label-width="100px">
<!-- <el-form-item label="当前总库存" prop="totalInventory" >-->
<!-- <el-input disabled v-model="inventoryForm.totalInventory" placeholder="" maxlength="30" style="width: 270px;">-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="已用库存" prop="usedInventory" >-->
<!-- <el-input disabled v-model="inventoryForm.usedInventory" placeholder="" maxlength="30" style="width: 270px;">-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<el-form-item label="可用库存" prop="remainingInventory" >
<el-input disabled v-model="inventoryForm.remainingInventory" placeholder="" maxlength="30" style="width: 270px;">
@ -546,7 +517,6 @@
<el-button @click="cancelInventory"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
@ -1283,4 +1253,12 @@ export default {
width: 98px;
height: 98px;
}
.card-change{
height: 87vh;
}
.table_box{
height: 70vh;
overflow: auto;
scrollbar-width: none;
}
</style>

View File

@ -89,7 +89,7 @@ export default {
margin-right: 50px;
display: flex;
align-items: center;
cursor: pointer;
}
.active {

View File

@ -85,41 +85,26 @@
@pagination="getList"
/>
</div>
<!-- 新增/修改-->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="dataForm" :rules="rules" label-width="120px">
<el-row :gutter="24">
<el-col :span="20">
<el-dialog :title="title" :visible.sync="open" width="25%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="dataForm" :rules="rules" label-width="80px">
<el-form-item label="分类名称" prop="categoryName">
<el-input v-model="dataForm.categoryName" placeholder="分类名称" maxlength="30"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="10">
<el-form-item label="排序" prop="contactPerson">
<el-input-number v-model="dataForm.sort" :min="1" :max="10" label=""></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-col :span="20">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="dataForm.status">
<el-radio
v-for="dict in dict.type.zhzt"
:key="dict.value"
:label="dict.label"
@change="handleIsopenSelect"
:value="dict.value"/>
</el-radio-group>
<el-radio
v-for="dict in dict.type.zhzt"
:key="dict.value"
:label="dict.label"
@change="handleIsopenSelect"
:value="dict.value"/>
</el-radio-group>
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-form-item label="备注" prop="categoryName">
<el-input type="textarea" :rows="6" v-model="dataForm.remark" placeholder="分类名称" maxlength="30"/>
</el-form-item>
</el-form>
@ -251,5 +236,7 @@ export default {
</script>
<style scoped lang="scss">
.card-change{
height: 84vh;
}
</style>

View File

@ -68,8 +68,8 @@
</div>
<div class="bai-box" v-else>
<el-form :model="dataForm" ref="dataForm" :rules="rules" size="small" :inline="true" label-width="100px">
<el-form-item label="积分说明" prop="desc">
<el-input type="textarea" v-model="dataForm.pointsRules" style="width: 1600px"></el-input>
<el-form-item label="积分说明" prop="desc" style="width: 100%;margin-right: 0px ">
<el-input type="textarea" :rows="8" v-model="dataForm.pointsRules" style="width: 1550px"></el-input>
</el-form-item>
</el-form>
@ -477,6 +477,7 @@ valiNumberPass(rule, value, callback, fieldName)
margin-right: 50px;
display: flex;
align-items: center;
cursor: pointer;
}

View File

@ -26,7 +26,7 @@
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item style="float: right">
<el-form-item style="float: right;margin-right: 0px">
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<el-button type="primary" @click="handleAdd">新增标签</el-button>

View File

@ -774,8 +774,9 @@
}
.table-box{
width: 100%;
height: 70vh;
height: 69vh;
overflow: auto;
scrollbar-width: none;
}
.pagination-box{
width: 100%;

View File

@ -118,17 +118,17 @@ export default {
<el-table-column
prop="deductionRate"
align="center"
label="扣点税率(元">
label="扣点费率(‱">
</el-table-column>
<el-table-column
prop="likelyTransactionVolume"
align="center"
label="易发生交易流量(元)">
label="已发生交易流量(万元)">
</el-table-column>
<el-table-column
prop="serviceFeeStatistics"
align="center"
label="系统服务费统计">
label="系统服务费统计(元)">
</el-table-column>
<el-table-column
prop="serviceFeeLimit"
@ -138,7 +138,7 @@ export default {
<el-table-column
prop="paymentAmount"
align="center"
label="收款金额">
label="已付金额(元)">
</el-table-column>
<el-table-column
prop="status"

View File

@ -143,12 +143,12 @@ export default {
<el-table-column
prop="estimatedTransactionVolume"
align="center"
label="预估交易流量(万">
label="预估交易流量(万">
</el-table-column>
<el-table-column
prop="remainingTransactionVolume"
align="center"
label="剩余交易流量(万">
label="剩余交易流量(万">
</el-table-column>
<el-table-column
prop="status"

View File

@ -68,7 +68,7 @@ export default {
.app-top{
width: 100%;
//margin-bottom: 20px;
height: 50px;
height: 52px;
box-sizing: border-box;
}
@ -77,13 +77,13 @@ export default {
}
.box{
cursor: pointer;
/* margin-top: 10px ; */
margin-top: 10px ;
margin-left: 50px;
height: 68px;
//height: 40px;
display: flex;
background-color: #FFFFFF;
align-items: center;
border: 0px solid #EBEEF5;
//border: 1px solid #EBEEF5;
}
.nbox{
margin-right: 30px;

View File

@ -356,9 +356,8 @@ export default {
.table-box {
width: 100%;
height: 46vh;
height: 56vh;
overflow: auto;
min-height: 100vh;
}
.wrap-boxs {

View File

@ -306,9 +306,8 @@ export default {
.table-box {
width: 100%;
height: 46vh;
height: 56vh;
overflow: auto;
min-height: 100vh;
}
.wrap-boxs {

View File

@ -270,12 +270,9 @@ import {getDuiZhangIntegralListApi} from "@/api/financialStatement/jiaoyiduizhan
.table-box{
width: 100%;
height: 66vh;
min-height: 650px;
overflow: auto;
}
.card-change {
min-height: 100vh;
}
</style>

View File

@ -266,10 +266,8 @@ import {getRunningWaterByTissueApi} from "@/api/allOrder";
.table-box{
width: 100%;
height: 66vh;
min-height: 650px;
overflow: auto;
}
.card-change {
min-height: 100vh;
}
</style>

View File

@ -273,11 +273,8 @@ import {getDuiZhangGoodsListApi} from "@/api/financialStatement/jiaoyiduizhang";
.table-box{
width: 100%;
height: 66vh;
min-height: 650px;
overflow: auto;
}
.card-change {
min-height: 100vh;
}
</style>

View File

@ -275,14 +275,11 @@ import {getRunningWaterByTissueApi} from "@/api/allOrder";
margin-right: 20px;
}
.table-box{
width: 100%;
height: 66vh;
overflow: auto;
}
.card-change {
min-height: 100vh;
}
.table-box{
width: 100%;
height: 66vh;
min-height: 650px;
overflow: auto;
}
</style>

View File

@ -63,24 +63,24 @@
<el-table
:data="orderList"
style="width: 100%">
<el-table-column type="index" width="100" align="center" label="序号"/>
<el-table-column prop="storeName" label="机构名称" width="200" align="center"></el-table-column>
<el-table-column prop="paidInfo" label="累计交易金额 (元)" width="200" align="center">
<el-table-column type="index" width="50" align="center" label="序号"/>
<el-table-column prop="storeName" label="机构名称" width="150" align="center"></el-table-column>
<el-table-column prop="paidInfo" label="累计交易金额 (元)" width="150" align="center">
<template>
{{this.orderStatistics.paidInfo}}
</template>
</el-table-column>
<el-table-column prop="count" label="累计交易笔数" width="160" align="center"></el-table-column>
<el-table-column prop="exchangeQuantity" label="兑换商品数量" width="160" align="center"></el-table-column>
<el-table-column prop="integral" label="累计消费积分" width="160" align="center"></el-table-column>
<el-table-column prop="count" label="累计交易笔数" width="130" align="center"></el-table-column>
<el-table-column prop="exchangeQuantity" label="兑换商品数量" width="130" align="center"></el-table-column>
<el-table-column prop="integral" label="累计消费积分" width="130" align="center"></el-table-column>
<el-table-column label="热门商品信息" align="center">
<el-table-column prop="giftName" label="商品名称" width="160" align="center"></el-table-column>
<el-table-column prop="exchangeQuantityBy" label="兑换数量 (件)" width="160"
<el-table-column prop="giftName" label="商品名称" width="130" align="center"></el-table-column>
<el-table-column prop="exchangeQuantityBy" label="兑换数量 (件)" width="130"
align="center"></el-table-column>
<el-table-column prop="paidInfo" label="销售金额 (元)" width="160" align="center"></el-table-column>
<el-table-column prop="integralBy" label="消费积分" width="160" align="center"></el-table-column>
<el-table-column prop="paidInfo" label="销售金额 (元)" width="130" align="center"></el-table-column>
<el-table-column prop="integralBy" label="消费积分" width="130" align="center"></el-table-column>
</el-table-column>
<el-table-column prop="statDate" label="统计日期" width="400" align="center">
<el-table-column prop="statDate" label="统计日期" align="center">
<template>
{{this.value2[0]}} {{this.value2[1]}}
</template>
@ -303,6 +303,7 @@ export default {
.table-box {
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}

View File

@ -353,6 +353,7 @@ import {parseTime} from "@/utils/fuint";
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{

View File

@ -326,6 +326,7 @@ import {parseTime} from "@/utils/fuint";
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{

View File

@ -60,26 +60,26 @@
border
style="width: 100%">
<el-table-column type="index" width="50" align="center" label="序号"/>
<el-table-column prop="userName" align="center" label="会员名称"> </el-table-column>
<el-table-column prop="mobile" align="center" label="会员手机号码" > </el-table-column>
<el-table-column prop="userName" align="center" label="会员名称" > </el-table-column>
<el-table-column prop="mobile" align="center" label="会员手机号码"> </el-table-column>
<el-table-column prop="physicalCard" align="center" label="会员卡号"></el-table-column>
<el-table-column prop="storeName" align="center" label="所属机构"> </el-table-column>
<el-table-column prop="gradeName" align="center" label="会员等级" > </el-table-column>
<el-table-column prop="amount" align="center" label="累计充值金额(元)" > </el-table-column>
<el-table-column prop="countNum" align="center" label="累计充值次数" > </el-table-column>
<el-table-column prop="leijiMoney" align="center" label="累计消费金额(元)" > </el-table-column>
<el-table-column prop="leijiNum" align="center" label="累计消费笔数" > </el-table-column>
<el-table-column prop="fuelAmount" align="center" label="囤油卡剩余油量L" > </el-table-column>
<el-table-column prop="storeName" align="center" label="所属机构" width="200px"> </el-table-column>
<el-table-column prop="gradeName" align="center" label="会员等级" width="100px" > </el-table-column>
<el-table-column prop="amount" align="center" label="累计充值金额(元)" width="100px"> </el-table-column>
<el-table-column prop="countNum" align="center" label="累计充值次数" width="100px" > </el-table-column>
<el-table-column prop="leijiMoney" align="center" label="累计消费金额(元)" width="100px" > </el-table-column>
<el-table-column prop="leijiNum" align="center" label="累计消费笔数" width="100px" > </el-table-column>
<el-table-column prop="fuelAmount" align="center" label="囤油卡剩余油量L" width="100px"> </el-table-column>
<el-table-column prop="cardBalance" align="center" label="储值卡余额" >
<el-table-column prop="cardBalance" align="center" label="储值卡余额" width="100px" >
<template v-slot="scope">
{{ formatBalance(scope.row.cardBalance) }}
</template>
</el-table-column>
<!-- <el-table-column prop="createTime" align="center" label="累计余额" > </el-table-column>-->
<el-table-column prop="leijiMoneyRef" align="center" label="累计退款金额" > </el-table-column>
<el-table-column prop="leijiNumRef" align="center" label="累计退款笔数" > </el-table-column>
<!-- <el-table-column prop="createTime" align="center" label="累计余额" width="100px" > </el-table-column>-->
<el-table-column prop="leijiMoneyRef" align="center" label="累计退款金额" width="100px"> </el-table-column>
<el-table-column prop="leijiNumRef" align="center" label="累计退款笔数" width="100px"> </el-table-column>
</el-table>
</div>
@ -250,6 +250,7 @@ import {getFenXiUserbalanceDataApi, getFenXiUserbalanceListApi} from "@/api/fina
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{

View File

@ -126,7 +126,7 @@
<el-form-item label="banner名称" prop="bannerName">
<el-input v-model="deviceInfo.bannerName" style="width: 100%" placeholder="请输入banner名称"></el-input>
</el-form-item>
<el-form-item label="图片" prop="uploadAction">
<el-form-item label="图片" prop="productImage">
<el-upload
ref="uploadRef"
@ -141,7 +141,7 @@
:disable-transition="true"
>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<div slot="file" slot-scope="{file}" class="centered-image">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
@ -276,7 +276,7 @@ export default {
bannerName: [
{ required: true, message: '请填写banner名称', trigger: 'blur' }
],
uploadAction: [
productImage: [
{ required: true, message: '请上传banner图', trigger: 'blur' }
],
systemPosition: [
@ -321,9 +321,10 @@ export default {
},
methods: {
handleRemove(file) {
console.log('删除文件', file)
console.log('删除文件', this.uploadFiles)
// uploadFiles
this.uploadFiles = this.uploadFiles.filter(item => item.uid !== file.uid);
// deviceInfo.productImage
this.deviceInfo.productImage = '';
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
@ -502,5 +503,12 @@ export default {
width: 98px;
height: 98px;
}
.centered-image {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
</style>

View File

@ -46,7 +46,7 @@
</el-form-item>
</el-form>
<div style="overflow: auto">
<div style="height: 70vh; overflow: auto;">
<el-table :data="tableData" style="width: 100%" border>
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="name" label="商品名称"></el-table-column>

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="card-change">
<div class="card-change" style="min-height: 80vh;">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="notificationName">
<el-input
@ -48,7 +48,7 @@
<!-- </el-card>-->
<!-- &lt;!&ndash; 列表信息&ndash;&gt;-->
<!-- <el-card style="margin-top: 20px" >-->
<div >
<div >
<el-table :data="tableData" style="width: 100%" border>
<el-table-column align="center" type="index" label="序号"></el-table-column>
@ -99,12 +99,12 @@
<el-form :model="form" ref="form" :rules="rules" label-width="120px">
<!-- 通知名称 -->
<el-form-item label="通知名称" prop="notificationName">
<el-input v-model="form.notificationName" placeholder="请输入通知名称" style="width: 300px" ></el-input>
<el-input v-model="form.notificationName" placeholder="请输入通知名称" style="width: 100%" ></el-input>
</el-form-item>
<!-- 通知类型 -->
<el-form-item label="通知类型" prop="notificationType">
<el-select v-model="form.notificationType" placeholder="请选择通知类型" style="width: 300px">
<el-select v-model="form.notificationType" placeholder="请选择通知类型" style="width: 100%">
<el-option label="到期提醒" value="到期提醒"></el-option>
<el-option label="系统升级" value="系统升级"></el-option>
<!-- 添加其他选项 -->
@ -113,7 +113,8 @@
<!-- 通知模板 -->
<el-form-item label="通知模板" prop="templateContent">
<el-input type="textarea" v-model="form.templateContent" :rows="3" placeholder="请输入通知内容" :maxlength="200" show-word-limit style="width: 300px"></el-input>
<el-input type="textarea" v-model="form.templateContent" :rows="3" placeholder="请输入通知内容" :maxlength="200" show-word-limit
style="width: 100%"></el-input>
<div>
<span @click = "insertText('{系统到期日期}')">{系统到期日期}</span>
<span @click = "insertText('{剩余交易流量}')">{剩余交易流量}</span>
@ -124,7 +125,7 @@
<!-- 接收角色 -->
<el-form-item label="接收角色" prop="recipientRoles">
<el-select v-model="form.recipientRoles" multiple placeholder="请选择角色" style="width: 300px">
<el-select v-model="form.recipientRoles" multiple placeholder="请选择角色" style="width: 100%">
<el-option v-for="item in dutyList1" :label="item.dutyName" :value="item.dutyId" ></el-option>
</el-select>
</el-form-item>
@ -137,7 +138,7 @@
<!-- 发送条件 -->
<el-form-item label="发送条件" style="margin-bottom: 10px" prop="conditions">
<div v-for="(condition, index) in form.conditions" :key="index" class="condition-group" style="margin-bottom: 10px">
<el-select v-model="condition.field" placeholder="请选择条件" style="width: 150px;margin-right: 10px" @change="changeField(index)">
<el-select v-model="condition.field" placeholder="请选择条件" style="width: 45%;margin-right: 10px" @change="changeField(index)">
<el-option label="系统到期日期" value="系统到期日期"></el-option>
<el-option label="剩余交易量" value="剩余交易量"></el-option>
<el-option label="系统服务费统计" value="系统服务费统计"></el-option>
@ -149,10 +150,11 @@
<!-- <el-option label="小于" value="小于"></el-option>-->
<!-- &lt;!&ndash; 添加其他选项 &ndash;&gt;-->
<!-- </el-select>-->
<el-input v-model="condition.value" placeholder="请输入数值" style="width: 200px;margin-right: 10px">
<el-input v-model="condition.value" placeholder="请输入数值" style="width: 45%;margin-right: 10px">
<template slot="append">{{ condition.field === '剩余交易量' || condition.field === '系统服务费统计' ? '万元' : '天' }}</template>
</el-input>
<el-button @click="removeCondition(index)" type="danger" icon="el-icon-delete" circle></el-button>
<!-- <el-button @click="removeCondition(index)" type="danger" icon="el-icon-delete" circle></el-button> -->
<i @click="removeCondition(index)" class="el-icon-delete" circle></i>
</div>
<el-button @click="addCondition" type="primary" icon="el-icon-plus">添加条件</el-button>
</el-form-item>

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="card-change">
<div class="card-change" style="min-height: 80vh;">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="deptName">
<el-input
@ -111,13 +111,13 @@
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="27%" append-to-body>
<el-form ref="form" :model="form" label-width="120px" :rules="rules" >
<!-- 通知名称 -->
<el-form-item label="通知名称" prop="notificationName">
<el-input v-model="form.notificationName" placeholder="请输入通知名称" style="width: 300px;"></el-input>
<el-form-item label="通知名称" prop="notificationName" style="margin-left: -30px;">
<el-input v-model="form.notificationName" placeholder="请输入通知名称" style="width: 100%;"></el-input>
</el-form-item>
<!-- 通知类型 -->
<el-form-item label="通知类型" prop="notificationType" >
<el-select v-model="form.notificationType" placeholder="请选择通知类型" style="width: 300px;">
<el-form-item label="通知类型" prop="notificationType" style="margin-left: -30px;">
<el-select v-model="form.notificationType" placeholder="请选择通知类型" style="width: 100%;">
<el-option label="到期提醒" value="到期提醒"></el-option>
<el-option label="系统升级" value="系统升级"></el-option>
<!-- 添加其他选项 -->
@ -126,21 +126,21 @@
</el-form-item>
<!-- 通知模板 -->
<el-form-item label="通知内容" prop="templateContent">
<el-form-item label="通知内容" prop="templateContent" style="margin-left: -30px;">
<el-input type="textarea" v-model="form.templateContent" placeholder="请输入通知内容" :maxlength="200"
show-word-limit style="width: 300px;"></el-input>
show-word-limit style="width: 100%;"></el-input>
</el-form-item>
<!-- 接收角色 -->
<el-form-item label="接收角色" prop="recipientRoles">
<el-form-item label="接收角色" prop="recipientRoles" style="margin-left: -30px;">
<el-select v-model="form.recipientRoles" multiple placeholder="请选择角色" @change="getUserByRoles"
style="width: 300px;">
style="width: 100%;">
<el-option v-for="item in dutyList1" :key="item.id" :label="item.dutyName" :value="item.dutyId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="接收用户" prop="recipientUser">
<el-form-item label="接收用户" prop="recipientUser" style="margin-left: -30px;">
<div
style="border: 1px solid #DCDFE6;width: 300px;height: 100px; border-radius: 4px; flex-wrap: wrap;overflow-y: scroll;">
style="border: 1px solid #DCDFE6; width: 100%; height: 100px; border-radius: 4px; flex-wrap: wrap;overflow-y :hidden;">
<div style="display: flex;margin: 10px;">
<div @click="clickAdd" style="height: 32px;display: flex;
justify-content: center; /* 水平居中 */
@ -162,8 +162,9 @@
<!-- </el-form-item>-->
</el-form>
<div style="margin-left: 160px;">
<el-button style="margin-right: 20px" type="primary" @click="userEnter1('form')">确定</el-button>
<el-button @click="userCe2">取消</el-button>
<el-button @click="userCe2"> </el-button>
<el-button style="margin-left: 30px;" type="primary" @click="userEnter1('form')"> </el-button>
</div>
</el-dialog>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open1" width="50%" append-to-body>

View File

@ -37,6 +37,10 @@ public class MtPurchase extends BaseEntity {
* 审核人
*/
private String approver;
/**
* 入库人
*/
private String storage;
private String status;
/**
* 总金额
@ -54,6 +58,16 @@ public class MtPurchase extends BaseEntity {
* 店铺ID
*/
private Integer storeId;
/**
* 审核时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
private Date examineTime;
/**
* 入库时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
private Date storageTime;
}

View File

@ -129,8 +129,11 @@
mp.product_quantity productQuantity,
mp.approval_status approvalStatus,
mp.order_date orderDate,
mp.examine_time examineTime,
mp.storage_time storageTime,
ms1.real_name createByName,
ms2.real_name approverName,
ms3.real_name storageName,
mp.create_time createTime
FROM
mt_purchase mp
@ -138,6 +141,7 @@
left join mt_goods mg ON mg.id = mpd.goods_id
LEFT JOIN mt_staff ms1 ON mp.create_by = ms1.id
LEFT JOIN mt_staff ms2 ON mp.approver = ms2.id
LEFT JOIN mt_staff ms3 ON mp.storage = ms3.id
<where>
mp.store_id = #{mtPurchase.storeId}
<if test="mtPurchase.approvalStatus != null and mtPurchase.approvalStatus != ''">
@ -150,6 +154,12 @@
<if test="mtPurchase.supplierId != null">
and mg.supplier_id = #{mtPurchase.supplierId}
</if>
<if test="mtPurchase.params.beginTime != null and mtPurchase.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(mp.order_date,'%y%m%d') &gt;= date_format(#{mtPurchase.params.beginTime},'%y%m%d')
</if>
<if test="mtPurchase.params.endTime != null and mtPurchase.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(mp.order_date,'%y%m%d') &lt;= date_format(#{mtPurchase.params.endTime},'%y%m%d')
</if>
</where>
GROUP BY
mp.id
@ -219,6 +229,9 @@
<if test="approver != null and approver != ''">
approver = #{approver},
</if>
<if test="storage != null and storage != ''">
storage = #{storage},
</if>
<if test="totalAmount != null">
total_amount = #{totalAmount},
</if>
@ -231,6 +244,12 @@
<if test="storeId != null">
store_id = #{storeId},
</if>
<if test="examineTime != null">
examine_time = #{examineTime},
</if>
<if test="storageTime != null">
storage_time = #{storageTime},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.SaleStatisticMapper">
<sql id="selectSale">
select sa.*,mg.name,mg.goods_no,mg.pinyin_code,mg.unit,mg.goods_specs,cg.name pinLeiName from sale_statistic sa
select sa.*,mg.name,mg.goods_no,mg.pinyin_code,mg.unit,mg.goods_specs,mg.cvs_good_id,cg.name pinLeiName from sale_statistic sa
left join mt_goods mg on sa.goods_id = mg.id
left join cvs_goods cg on mg.cvs_good_id = cg.id
</sql>
@ -20,6 +20,9 @@
<if test="sale.goodsNo != null and sale.goodsNo != ''">
and mg.goods_no like concat('%', #{sale.goodsNo}, '%')
</if>
<if test="sale.cvsGoodId != null and sale.cvsGoodId != ''">
and mg.cvs_good_id = #{sale.cvsGoodId}
</if>
</where>
</select>
<select id="selectSales" resultType="com.fuint.business.convenienceSore.vo.SaleStatisticVo"

View File

@ -4,8 +4,9 @@
<sql id="selectStock">
select st.id, mg.supplier_id, mg.cvs_good_id, st.goods_id, st.store_id, st.cost_amount, mg.status,
mg.name,mg.goods_no,mg.pinyin_code,mg.shelf_number,
mg.retail_price,mg.unit,mg.stock,mg.buying_price,mg.update_time
mg.retail_price,mg.unit,mg.stock,mg.buying_price,mg.update_time,mg.goods_specs,ta.real_name
from stock_statistic st left join mt_goods mg on st.goods_id = mg.id
left join t_account ta on st.update_by = ta.acct_id
</sql>
<select id="selectStockList" resultType="com.fuint.business.convenienceSore.vo.StockStatisticVo">

View File

@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import static java.math.RoundingMode.HALF_DOWN;
@ -239,7 +240,7 @@ public class MtPurchaseServiceImpl implements MtPurchaseService {
}
// 2.将数据填充到
String status = "qrts";
boolean edit = edit(id);
boolean edit = edit1(id);
int i = mtPurchaseDao.editStateById(id, status);
return true;
}
@ -253,6 +254,18 @@ public class MtPurchaseServiceImpl implements MtPurchaseService {
MtPurchase mtPurchase = new MtPurchase();
mtPurchase.setApprover(nowAccountInfo.getStaffId().toString());
mtPurchase.setExamineTime(new Date());
mtPurchase.setId(id);
int update = mtPurchaseDao.update(mtPurchase);
return update>0;
}
// 修改入库人
public boolean edit1(Integer id){
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
MtPurchase mtPurchase = new MtPurchase();
mtPurchase.setStorage(nowAccountInfo.getStaffId().toString());
mtPurchase.setStorageTime(new Date());
mtPurchase.setId(id);
int update = mtPurchaseDao.update(mtPurchase);
return update>0;

View File

@ -7,6 +7,7 @@ import lombok.Data;
public class MtPurchaseVO extends MtPurchase {
private String createByName;
private String approverName;
private String storageName;
private String supplierName;
private Integer detailsId;
private Integer supplierId;

View File

@ -21,6 +21,8 @@ public class SaleStatisticVo extends BaseEntity {
private Integer storeId;
// 商品id
private Integer goodsId;
// 品类id
private Integer cvsGoodId;
// 商品名称
@ExcelProperty(value = "商品名称")
private String name;

View File

@ -27,6 +27,9 @@ public class StockStatisticVo extends BaseEntity {
// 拼音码
@ExcelProperty(value = "拼音码")
private String pinyinCode;
// 商品规格
@ExcelProperty(value = "商品规格")
private String goodsSpecs;
// 货架号
@ExcelProperty(value = "货架号")
private String shelfNumber;
@ -47,4 +50,6 @@ public class StockStatisticVo extends BaseEntity {
private Double costAmount;
// 状态
private String status;
// 操作人
private String realName;
}

View File

@ -3,7 +3,7 @@
<mapper namespace="com.fuint.business.userManager.mapper.MtUserFuelMapper">
<select id="selectSumFuelAmountByMtUserId" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(fuel_amount), 0)
SELECT COALESCE(SUM(fuel_amount), 0)
FROM mt_user_fuel
where mt_user_id = #{mtUserId}
</select>
@ -15,6 +15,20 @@
#{item}
</foreach>
</select>
<select id="selectUserFuelAndOilName" resultType="com.fuint.business.userManager.entity.MtUserFuel">
select uf.*, CONCAT(na.oil_type, ' ',na.oil_name) AS oilNumberName
from mt_user_fuel uf
left JOIN oil_name na on na.id = uf.oil_name
<where>
<if test="obj.Id != null and obj.Id != ''">
and uf.mt_user_id = #{obj.id}
</if>
<if test="obj.storeId != null and obj.storeId != ''">
and uf.store_id = #{obj.storeId}
</if>
</where>
</select>
</mapper>

View File

@ -61,9 +61,12 @@ import com.fuint.business.order.service.GrowthValueChangeService;
import com.fuint.business.storeInformation.entity.LJStore;
import com.fuint.business.storeInformation.service.ILJStoreService;
import com.fuint.business.userManager.entity.LJUserGrade;
import com.fuint.business.userManager.entity.MtUserFuel;
import com.fuint.business.userManager.entity.MtUserGradeChild;
import com.fuint.business.userManager.entity.UserBalance;
import com.fuint.business.userManager.mapper.LJUserMapper;
import com.fuint.business.userManager.mapper.MtUserFuelMapper;
import com.fuint.business.userManager.service.IMtUserFuelService;
import com.fuint.business.userManager.service.LJUserGradeService;
import com.fuint.business.userManager.service.MtUserGradeChildService;
import com.fuint.business.userManager.service.UserBalanceService;
@ -152,6 +155,8 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
private CardFuelRecordService fuelRecordService;
@Autowired
private LJUserGradeService userGradeService;
@Autowired
private MtUserFuelMapper mtUserFuelMapper;
/**
* 储值卡充值新增
@ -545,8 +550,32 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
}
res = JSONObject.parseObject(JSONObject.toJSONString(cardValueRecordDTO));
} else if (selectCard.getCardType().equals("1")) {
// 查询囤油卡活动
CardFuelDiesel fuelDiesel = fuelDieselService.getById(selectCard.getSelectCardId());
// 当前用户囤油卡
MtUserFuel mtUserFuel = null;
HashMap<String, Object> m1 = new HashMap<>();
// 根据油号 店铺id 用户id 锁定唯一囤油卡
m1.put("mt_user_id",ljUserVo.getId());
m1.put("store_id",ljUserVo.getStoreId());
m1.put("oil_name",fuelDiesel.getOilNumberId());
List<MtUserFuel> userFuels = mtUserFuelMapper.selectByMap(m1);
// 没有油卡则新建 有则追加囤油升数
if (CollectionUtil.isEmpty(userFuels)){
mtUserFuel = new MtUserFuel();
mtUserFuel.setMtUserId(ljUserVo.getId());
mtUserFuel.setStoreId(nowAccountInfo.getStoreId());
mtUserFuel.setChainStoreId(ljUserVo.getChainStoreId());
mtUserFuel.setOilName(String.valueOf(fuelDiesel.getOilNumberId()));
mtUserFuel.setFuelAmount(0.0);
int insert = mtUserFuelMapper.insert(mtUserFuel);
}else {
mtUserFuel = userFuels.get(0);
}
//囤油卡
CardFuelRecordDTO cardFuelRecordDTO =new CardFuelRecordDTO();
cardFuelRecordDTO.setCardFuelId(selectCard.getSelectCardId());
@ -567,6 +596,8 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
//所得升数
cardFuelRecordDTO.setIncomeLitres(BigDecimal.valueOf(fuelDiesel.getRechargeBalance()/fuelDiesel.getLockPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
mtUserFuel.setFuelAmount(mtUserFuel.getFuelAmount()+cardFuelRecordDTO.getIncomeLitres());
mtUserFuelMapper.updateById(mtUserFuel);
//充值金额
cardFuelRecordDTO.setRechargeBalance(selectCard.getRechargeBalance().doubleValue());

View File

@ -1,10 +1,13 @@
package com.fuint.business.userManager.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -51,16 +54,18 @@ public class MtUserFuel implements Serializable {
private String createBy;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
private Date createTime;
@ApiModelProperty(value = "更新者")
private String updateBy;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
private Date updateTime;
@ApiModelProperty(value = "备注")
private String remark;
// 油号名称 不参与新增 修改编辑
@TableField(exist = false)
private String oilNumberName;
}

View File

@ -1,7 +1,10 @@
package com.fuint.business.userManager.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fuint.business.userManager.entity.MtUserFuel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.userManager.vo.LJUserVo;
import com.fuint.business.userManager.vo.MtUserFuelVo;
import com.fuint.business.userManager.vo.UserBalanceVo;
import org.apache.ibatis.annotations.Param;
@ -21,4 +24,6 @@ public interface MtUserFuelMapper extends BaseMapper<MtUserFuel> {
BigDecimal selectSumFuelAmountByMtUserId(@Param("mtUserId") Integer mtUserId);
BigDecimal selectSumFuelAmountByStoreIds(@Param("storeIds") List<Long> storeIds);
List<MtUserFuel> selectUserFuelAndOilName(@Param("obj")LJUserVo userVo);
}

View File

@ -26,9 +26,11 @@ import com.fuint.business.userGroup.entity.UserGroup;
import com.fuint.business.userManager.entity.*;
import com.fuint.business.userManager.mapper.LJUserMapper;
import com.fuint.business.userManager.mapper.MtInvitationMapper;
import com.fuint.business.userManager.mapper.MtUserFuelMapper;
import com.fuint.business.userManager.mapper.UserBalanceMapper;
import com.fuint.business.userManager.service.*;
import com.fuint.business.userManager.vo.LJUserVo;
import com.fuint.business.userManager.vo.MtUserFuelVo;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.StringUtils;
import com.fuint.common.util.TokenUtil;
@ -72,6 +74,8 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
@Autowired
private IMtUserFuelService userFuelService;
@Autowired
private MtUserFuelMapper mtUserFuelMapper;
@Autowired
private FleetInfoService fleetInfoService;
@Autowired
@Lazy
@ -379,10 +383,8 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
List<LJUserVo> ljUserVos = baseMapper.userListByPhone(mobile, nowAccountInfo.getStoreId());
ljUserVos.forEach(it->{
//在查询囤油卡信息
LambdaQueryWrapper<MtUserFuel> queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.eq(MtUserFuel::getStoreId,nowAccountInfo.getStoreId()).eq(MtUserFuel::getMtUserId,it.getId());
List<MtUserFuel> list = userFuelService.list(queryWrapper);
it.setUserFuels(list);
List<MtUserFuel> userFuels = mtUserFuelMapper.selectUserFuelAndOilName(it);
it.setUserFuels(userFuels);
//判断当前用户是否存在车队
List<FleetInfoUniVo> fleetInfoUniVos = fleetInfoService.queryByStoreId(nowAccountInfo.getStoreId(),it.getId());
if (CollUtil.isNotEmpty(fleetInfoUniVos)) {

View File

@ -0,0 +1,8 @@
package com.fuint.business.userManager.vo;
import com.fuint.business.userManager.entity.MtUserFuel;
public class MtUserFuelVo extends MtUserFuel {
// 油号名称
private String oilNumberName;
}

View File

@ -2,6 +2,7 @@ package com.fuint.pay.util;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.fuint.business.marketingActivity.activeConsumption.entity.ActiveConsumptionRecord;
import com.fuint.business.marketingActivity.activePrice.entity.ActivePriceOil;
@ -249,13 +250,19 @@ public class CheckUtil {
**/
public Boolean checkTimeConsumption(String type, String timeSlots, String startTime, String endTime, Date nowDate) {
String timeSlotsStr = timeSlots;
if ("0".equals(type)) {
if ("0".equals(type) && ObjectUtil.isNotEmpty(timeSlots)) {
//周几汉字转数字
timeSlotsStr = changeWeekNumber(timeSlots);
}
List<String> timeSlotStrList = Arrays.asList(timeSlotsStr.split(StrUtil.COMMA));
List<String> timeSlotStrList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(timeSlotsStr)){
timeSlotStrList = Arrays.asList(timeSlotsStr.split(StrUtil.COMMA));
}
//转换为int类型
List<Integer> timeSlotList = timeSlotStrList.stream().map(Integer::parseInt).collect(Collectors.toList());
List<Integer> timeSlotList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(timeSlotStrList)) {
timeSlotList = timeSlotStrList.stream().map(Integer::parseInt).collect(Collectors.toList());
}
if (timeSlotStrList.isEmpty() && (StringUtils.isNotEmpty(startTime) || StringUtils.isNotEmpty(endTime))) {
//没有设置时间段但是生效时间又设置了代表每天的某个时间范围
return checkDayTime(nowDate, startTime, endTime);
@ -268,7 +275,7 @@ public class CheckUtil {
if (0 == nowWeek) {
nowWeek = 7;
}
if (timeSlotList.contains(nowWeek)) {
if (ObjectUtil.isNotEmpty(timeSlotList) && timeSlotList.contains(nowWeek)) {
//周几是符合的进而判断时间是否符合
return checkDayTime(nowDate, startTime, endTime);
} else {
@ -278,7 +285,7 @@ public class CheckUtil {
//活动设置的适用时间类型是每月
//结算时间是每月几号
int nowDay = DateUtil.dayOfMonth(nowDate);
if (timeSlotList.contains(nowDay)) {
if (ObjectUtil.isNotEmpty(timeSlotList) && timeSlotList.contains(nowDay)) {
//每月几号是符合的进而判断时间是否符合
return checkDayTime(nowDate, startTime, endTime);
} else {

View File

@ -17,12 +17,12 @@
<div> 储值卡{{ chooseVipUser.cardBalance || 0 }}</div>
<div v-if="chooseVipUser.userFuels">
<div v-for="(item,index) in chooseVipUser.userFuels" :key="index">
囤油卡{{item.fuelAmount}}
囤油卡{{item.oilNumberName}} {{item.fuelAmount}}
</div>
</div>
<div v-if="chooseVipUser.fleetMember">
<div>
车队卡{{ chooseVipUser.fleetMember.secondaryCardLimit }}
车队卡{{ chooseVipUser.fleetMember.remainingCreditLimit }}
</div>
</div>
<img slot="reference" src="./imgs/kbao.png" style="width: 24px;height: 24px;margin-right: 10px">
@ -2104,7 +2104,7 @@ export default {
}
this.accountPending = true
}
if (value == 'car_card_value') {
if (value == 'card_value' || value == 'fule_card' || value == 'car_card_value') {
if (!this.userInfo) {
this.$message.error("请先选择会员")
return