This commit is contained in:
YeMingfei666 2024-08-22 09:34:42 +08:00
commit dba71a0f11
17 changed files with 858 additions and 77 deletions

View File

@ -124,3 +124,50 @@ export function countRecord(data) {
}
});
}
/**
* 广告列表
* @returns
*/
export function adget(params) {
return request({
url: "/api/ad",
method: "get",
params
});
}
/**
* 广告新增单位
* @returns
*/
export function adpost(data) {
return request({
url: `/api/ad`,
method: "post",
data
});
}
/**
* 广告编辑详情
* @returns
*/
export function adput(data) {
return request({
url: '/api/ad',
method: 'put',
data
})
}
/**
* 广告删除商品
* @returns
*/
export function addelete(params) {
return request({
url: "/api/ad/" + params,
method: "DELETE",
});
}

47
src/api/goxcx.js Normal file
View File

@ -0,0 +1,47 @@
import request from "@/utils/request";
/**
* 列表
* @returns
*/
export function miniAppPagesget(params) {
return request({
url: "/api/miniAppPages",
method: "get",
params
});
}
/**
* 新增单位
* @returns
*/
export function miniAppPagespost(data) {
return request({
url: `/api/miniAppPages`,
method: "post",
data
});
}
/**
* 编辑详情
* @returns
*/
export function miniAppPagesput(data) {
return request({
url: '/api/miniAppPages',
method: 'put',
data
})
}
/**
* 删除商品
* @returns
*/
export function miniAppPagesdelete(params) {
return request({
url: "/api/miniAppPages/" + params,
method: "delete",
});
}

View File

@ -607,3 +607,28 @@ export function shopStaffDelete(data) {
data
});
}
//增减余额
export function midfiyAccount(data) {
return request({
url: `/api/tbShopUser/midfiyAccount`,
method: "post",
data
});
}
// 编辑用户
export function tbShopUseredit(data) {
return request({
url: `/api/tbShopUser`,
method: "put",
data
});
}
// 通过活动id获取赠送商品列表
export function activate(id) {
return request({
url: `shop/storage/activate/${id}`,
method: "get"
});
}

View File

@ -0,0 +1,245 @@
<template>
<div style="padding: 20px;">
<el-form ref="query" style="display: flex;" :model="query" label-width="80px">
<el-form-item label="展示位置">
<el-select clearable v-model="query.showPosition" placeholder="请选择">
<el-option label="首页" value="home" />
<el-option label="点餐页" value="make_order" />
</el-select>
</el-form-item>
<el-form-item label="状态">
<el-select clearable v-model="query.status" placeholder="请选择">
<el-option label="可见" value="1" />
<el-option label="不可见" value="2" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList">查询</el-button>
<el-button type="primary" @click="dialogVisible = true;title='新增'">新增</el-button>
</el-form-item>
</el-form>
<!--表格渲染-->
<el-table ref="table" :data="tableData" style="width: 100%;">
<el-table-column label="弹窗广告">
<template v-slot="scope">
<img :src="scope.row.imgUrl" style="width: 100px;height: 100px;">
</template>
</el-table-column>
<el-table-column prop="showPosition" label="弹窗位置">
<template v-slot="scope">
{{ scope.row.showPosition == 'home' ? '首页' : "点餐页" }}
</template>
</el-table-column>
<el-table-column prop="showPosition" label="是否可见">
<template v-slot="scope">
<el-switch v-model="scope.row.status" :active-value="1" :inactive-value="0"
@change="showChange($event, scope.row)"></el-switch>
</template>
</el-table-column>
<el-table-column prop="" label="弹窗频率">
<template v-slot="scope">
{{ scope.row.frequency | frequencyFilter }}
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建日期" />
<el-table-column label="操作" width="200">
<template v-slot="scope">
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="delHandle(scope.row.id)">
<el-button type="text" round slot="reference">
删除
</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<!-- <div class="">
<el-pagination :total="tableData.length" layout="total, prev, pager, next, jumper"></el-pagination>
</div> -->
<!-- 增减余额弹窗 -->
<el-dialog :title="title + '广告'" :visible.sync="dialogVisible" width="60%">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="上传弹窗广告">
<el-upload class="upload-demo" :action="qiNiuUploadApi" :headers="headers" :limit="1"
:on-remove="removeEvent" :on-success="successEvent" :file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">建议尺寸520px*680px</div>
</el-upload>
</el-form-item>
<el-form-item label="圆角设置">
<el-slider v-model="form.borderRadius"></el-slider>
</el-form-item>
<el-form-item label="弹窗位置">
<el-radio-group v-model="form.showPosition">
<el-radio label="home">首页</el-radio>
<el-radio label="make_order">点餐页</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="弹窗频率">
<el-radio-group v-model="form.frequency">
<el-radio label="only_one">仅首次打开显示</el-radio>
<el-radio label="every_show">每次打开显示一次</el-radio>
<el-radio label="thirty_day">每30天显示一次</el-radio>
<el-radio label="seven_day">每7天显示一次</el-radio>
<el-radio label="three_day">每3天显示一次</el-radio>
<el-radio label="every_day">每1天显示一次</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="跳转页面">
<el-select v-model="form.linkPath" placeholder="请选择">
<el-option v-for="item in tourl" :key="item.id" :label="item.name" :value="item.path">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="sumbit"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { miniAppPagesget } from '@/api/goxcx'
import { getToken } from '@/utils/auth'
import { adget, adpost, adput, addelete } from '@/api/application'
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['qiNiuUploadApi'])
},
data() {
return {
headers: {
Authorization: getToken()
},
tourl: [],
query: {
showPosition: "", status: ""
},
form: {
sort: "",
path: "",
status: 1,
shopId: localStorage.getItem("shopId"),
showPosition: 'home',
frequency: "only_one"
},
title: '新增',
dialogVisible: false,
tableData: [],
fileList: [],
}
},
mounted() {
this.getList()
//
this.getto()
},
filters: {
frequencyFilter(key) {
let str = ""
switch (key) {
case 'only_one':
str = '仅首次展示'
break;
case 'every_show':
str = '每次打开都展示'
break;
case 'every_day':
str = '每天展示一次'
break;
case 'three_day':
str = '每三天展示一次'
break;
case 'seven_day':
str = '每七天展示一次'
break;
case 'thirty_day':
str = '每30天展示一次'
break;
}
return str
},
},
methods: {
successEvent(file) {
this.fileList = [{ url: file.data[0], name: '图片' }]
},
removeEvent(file) {
//
let index = this.fileList.findIndex(ele => ele.url == file.response.data[0])
this.fileList.splice(index, 1);
},
async showChange(a, d) {
this.form.imgUrl = this.fileList
await adput({
...d,
...this.form
})
this.$message({
message: '成功',
type: 'success'
})
},
async getto() {
let res = await miniAppPagesget()
this.tourl = res
},
async sumbit() {
this.form.imgUrl = this.fileList[0].url
this.dialogVisible = false
if (this.title == '新增') {
await adpost(this.form)
this.$message({
message: '添加成功',
type: 'success'
})
} else {
await adput(this.form)
this.$message({
message: '编辑成功',
type: 'success'
})
}
this.form = {
sort: "",
path: "",
status: 1,
shopId: localStorage.getItem("shopId"),
showPosition: 'home',
frequency: "only_one"
}
this.fileList = []
this.getList()
},
//
async edit(item) {
this.title = '编辑'
this.dialogVisible = true
this.form = item
console.log(item.imgUrl, '调试1')
this.fileList = [{ url: item.imgUrl, name: '图片' }]
},
//
async delHandle(adId) {
let res = await addelete(adId)
this.$message({
message: '删除成功',
type: 'success'
})
this.getList()
},
async getList() {
let res = await adget({
shopId: localStorage.getItem("shopId"),
...this.query
})
this.tableData = res
},
}
}
</script>
<style></style>

View File

@ -216,7 +216,9 @@ export default {
startTime: this.query.createdAt[0],
endTime: this.query.createdAt[1],
cateId: this.query.cateId,
proName: this.query.proName
proName: this.query.proName,
type: this.orderType,
});
this.payCountList = res;
} catch (error) {

View File

@ -1,12 +1,12 @@
<!-- 耗材列表的新增耗材盘点 -->
<template>
<el-dialog title="耗材盘点" :visible.sync="dialogVisible" width="80%" @open="form.note = ''">
<el-dialog title="耗材盘点" :visible.sync="dialogVisible" width="80%">
<el-form ref="form" :model="form" :rules="rules" label-position="left" inline>
<el-form-item label="账存数量">
<el-input v-model="form.balance" readonly style="width: 180px;"></el-input>
</el-form-item>
<el-form-item label="实际数量">
<el-input-number v-model="form.stocktakinNum" :min="0" :step="1" step-strictly
<el-input-number v-model="form.stockNumber" :min="0" :step="1" step-strictly
style="width: 180px;"></el-input-number>
</el-form-item>
<el-form-item label="盈亏数量">
@ -78,7 +78,8 @@ export default {
productId: '', //
stocktakinNum: '', //
price: '', //
note: "" //
remark: "", //
stockNumber: 0
},
rules: {
stocktakinNum: [
@ -109,20 +110,29 @@ export default {
},
computed: {
profitNumber() {
return this.form.stocktakinNum - this.form.balance
console.log(this.form, '盈亏数量')
if (this.form.balance == undefined) {
return this.form.stockNumber - 0
} else {
return this.form.stockNumber - this.form.balance
}
},
profitPrice() {
return formatDecimal(this.profitNumber * this.form.price && 0)
console.log(this.form, '盈亏金额')
return formatDecimal((this.form.stockNumber - this.form.balance) * this.form.price)
}
},
methods: {
onSubmitHandle() {
this.$refs.form.validate(async valid => {
if (valid) {
try {
this.form.lpNum = this.profitNumber
this.form.balance = this.form.stockNumber
this.loading = true
let res = await tbConCheck(this.form)
console.log(this.form);
this.$emit('success', res)
// this.dialogVisible = false
this.loading = false
@ -140,10 +150,16 @@ export default {
})
},
show(obj) {
this.form.remark = ''
this.form.stocktakinNum = 0
this.form.lpNum = 0
// this.form.stockNumber = 0
this.form = Object.assign(this.form, obj)
this.dialogVisible = true
this.form.conInfoId = obj.consId
this.form.stockNumber = obj.balance
this.form.stockNumber = obj.balance * 1
this.form.price == null ? 0 : this.form.price
this.searhForm.skuId = obj.productId
this.searhForm.productId = obj.consId
@ -166,9 +182,7 @@ export default {
const res = await tbConCheckGet({
page: this.tableData.page,
size: this.tableData.size,
name: this.searhForm.name,
skuId: this.searhForm.category,
productId: this.searhForm.productId,
conInfoId: this.searhForm.productId,
sort: 'id,desc',
})
this.tableData.list = res.content

View File

@ -110,9 +110,11 @@ export default {
},
computed: {
profitNumber() {
//
return this.form.stocktakinNum - this.detail.stockNumber
},
profitPrice() {
//
return formatDecimal((this.form.stocktakinNum - this.detail.stockNumber) * this.detail.salePrice)
}
},

View File

@ -52,70 +52,75 @@
</div>
<div class="head-container" id="table_drag">
<el-table ref="table" :data="tableData.data" v-loading="tableData.loading" row-key="id">
<!-- <el-table-column prop="id" label="ID" width="50px" /> -->
<el-table-column label="耗材名称" prop="conName" align="center" />
<!-- <el-table-column label="耗材代码" prop="conCode" /> -->
<el-table-column label="分类名称" prop="conTypeName" align="center" />
<el-table-column label="单位" prop="conUnit" align="center" />
<el-table-column label="耗材名称" prop="conName" style="width: 100px;">
<template v-slot="scope">
<div v-if="scope.row.editNYD == 1">
<el-input v-model="scope.row.conName" placeholder="请输入内容" @blur="conNameClick(scope.row)"></el-input>
</div>
<span v-else>
{{ scope.row.conName }}
</span>
<i class="el-icon-edit" @click="scope.row.editNYD = 1"></i>
</template>
</el-table-column>
<el-table-column label="分类名称" prop="conTypeName"></el-table-column>
<el-table-column label="单位" prop="conUnit">
<template v-slot="scope">
<div v-if="scope.row.editNYD == 2">
<el-input v-model="scope.row.conUnit" placeholder="请输入内容" @blur="conNameClick(scope.row)"></el-input>
</div>
<span v-else>
{{ scope.row.conUnit }}
</span>
<i class="el-icon-edit" @click="scope.row.editNYD = 2"></i>
</template>
<el-table-column label="现有库存" align="center">
</el-table-column>
<el-table-column label="现有库存">
<template v-slot="scope">
<span :class="[computedClass(scope.row.balance)]"> {{ scope.row.balance }}</span>
</template>
</el-table-column>
<el-table-column label="耗材消耗" prop="conConsume" align="center" />
<el-table-column label="耗材入库" prop="conIn" align="center" />
<el-table-column label="耗材出库" prop="conOut" align="center" />
<el-table-column label="耗材反还" prop="conReturn" align="center" />
<el-table-column label="库存开关" prop="conReturn" align="center">
<el-table-column label="耗材消耗" prop="conConsume" />
<el-table-column label="耗材入库" prop="conIn" />
<el-table-column label="耗材出库" prop="conOut" />
<el-table-column label="耗材反还" prop="conReturn" />
<el-table-column label="库存开关" prop="conReturn">
<template v-slot="scope">
<el-switch v-model="scope.row.isCheck" active-value="1" inactive-value="0"
@change="showChange($event, scope.row)"></el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="业务编码" prop="bizCode" /> -->
<!-- <el-table-column label="业务说明" prop="bizName" /> -->
<!-- <el-table-column label="商品名称" prop="productName" /> -->
<!-- <el-table-column label="正负号标识" prop="bizType" /> -->
<!-- <el-table-column label="耗材id" prop="consId" /> -->
<!-- <el-table-column label="创建时间" prop="createTime"></el-table-column> -->
<!-- <el-table-column label="所属商品" width="320" align="center">
<el-table-column label="所属商品" width="220">
<template v-slot="scope">
<el-button v-for="(item) in scope.row.product" @click="toGoods(item)" :key="item.productId" type="text">{{
item.productName }}</el-button>
{{ scope.row.productId }}
</template>
</el-table-column> -->
<el-table-column label="所属商品" width="320" align="center">
<template v-slot="scope">
<el-button v-for="(item) in scope.row.product" @click="toGoods(item)" :key="item.productId" type="text">{{
item.productName }}</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="最近入库量" prop="lasterInStock" /> -->
<el-table-column label="库存数量" align="center" prop="stockNumber">
<el-table-column label="库存数量" prop="stockNumber">
<template v-slot="scope">
{{ (scope.row.balance).toFixed(2) }}
<!-- {{ (scope.row.stockNumber - scope.row.stockConsume).toFixed(2) }} -->
</template>
</el-table-column>
<el-table-column label="预警值" prop="conWarning">
<template v-slot="scope">
<div v-if="scope.row.editNYD == 3">
<el-input v-model="scope.row.conWarning" placeholder="请输入内容" @blur="conNameClick(scope.row)"></el-input>
</div>
<span v-else>
{{ scope.row.conWarning }}
</span>
<i class="el-icon-edit" @click="scope.row.editNYD = 3"></i>
</template>
</el-table-column>
<el-table-column label="预警值" align="center" prop="conWarning" />
<!-- <el-table-column label="单位耗材值" prop="surplusStock" /> -->
<!-- <el-table-column label="排序" prop="sort" sortable /> -->
<el-table-column label="创建时间" align="center" prop="createTime" width="200">
<el-table-column label="创建时间" prop="createTime" width="200">
<!-- <template v-slot="scope">
{{ dayjs(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> -->
</el-table-column>
<!-- <el-table-column label="更新时间" prop="updateTime" width="200"> -->
<!-- <template v-slot="scope">
{{ dayjs(scope.row.createdAt).format('YYYY-MM-DD HH:mm:ss') }}
</template> -->
<!-- </el-table-column> -->
<el-table-column label="操作" width="250" fixed="right">
<template v-slot="scope">
<el-button type="text" @click="editorHandle(scope.row)">编辑</el-button>
@ -506,7 +511,7 @@ export default {
downloadLoading: false,
uploadLoading: false,
dialogVisible: false,
consRecordItem: ''
consRecordItem: '',
};
},
mounted() {
@ -541,7 +546,7 @@ export default {
}
},
toGoods(data) {
this.$router.push({
path: '/product/product',
query: {
@ -569,6 +574,15 @@ export default {
console.log(error);
}
},
async conNameClick(row) {
await postapitbConsInfo([{
id: row.consId,
...row,
shopId: localStorage.getItem('shopId')
}])
row.editNYD = 0
this.$message.success('修改成功')
},
computedClass(num) {
if (num > 0) {
return 'green'
@ -639,8 +653,9 @@ export default {
this.tableData.data = res.content.map(v => {
const productIds = v.productId ? v.productId.split(',') : []
return {
...v,
product: productIds.map((str, index) => {
...v,
editNYD: 0,
product: productIds.map((str, index) => {
const startIndex = str.indexOf('_')
const productId = str.slice(0, startIndex)
const productName = str.slice(startIndex + 1, str.length)
@ -815,6 +830,7 @@ export default {
},
//
async clicksee(item) {
console.log(item, '耗材记录')
this.consRecordItem = item
this.clickseetypedialogshow = true;
this.getConsRecord()
@ -826,7 +842,7 @@ export default {
const res = await gettbConsInfoFlow({
page: this.clickseetableData.page,
size: this.clickseetableData.size,
consId: this.consRecordItem.id,
consId: this.consRecordItem.consId,
conName: this.consRecordItem.conName,
shopId: localStorage.getItem("shopId")
});

View File

@ -962,10 +962,8 @@ export default {
},
async submitForm(formName) {
if (this.dialogtitle == "编辑") {
let { id, surplusStock } = this.surplusStocks;
await puttbProskuCon({
id,
surplusStock,
...this.surplusStocks
});
this.$message({
message: "修改成功",

View File

@ -18,8 +18,9 @@
</el-select>
</div>
<div style="width: 300px;">
<el-select clearable v-model="query.sort" placeholder="排序">
<el-option label="按数量排序" value="1" />
<el-select v-model="query.sort" placeholder="排序">
<el-option label="默认排序" value="false" />
<el-option label="库存降序" value="true" />
</el-select>
</div>
<el-button type="primary" @click="getTableData">查询</el-button>
@ -160,7 +161,7 @@ export default {
montey: "",
categorys: [],
query: {
sort: "", //
sort: "false", //
name: '',
isStock: '',
num: '',
@ -315,7 +316,7 @@ export default {
isStock: this.query.isStock,
num: this.query.num,
categoryId: this.query.categoryId,
sort:this.query.sort,
sort: this.query.sort,
shopId: localStorage.getItem('shopId')
})
this.tableData.loading = false

View File

@ -163,6 +163,8 @@ export default {
type: 'success'
});
} catch (error) {
this.$emit('success', null)
this.loading = false
console.log(error)
}
}
@ -203,6 +205,8 @@ export default {
this.form.id = null
this.form.productIds = []
this.productIds = []
this.$emit('success', null)
}
}
}

View File

@ -97,7 +97,7 @@
</el-table>
</div>
<div class="head-container">
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
<el-pagination :total="tableData.total" @size-change="handleSizeChange" :current-page="tableData.page + 1" :page-size="tableData.size"
@current-change="paginationChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
</div>
</div>
@ -228,6 +228,10 @@ export default {
console.log(error)
}
},
handleSizeChange(val) {
this.tableData.size = val
this.getTableData()
},
//
async tbShopCategoryGet() {
try {

View File

@ -0,0 +1,123 @@
<template>
<div>
<el-button type="primary" @click="dialogVisible = true">
新增
</el-button>
<!--表格渲染-->
<el-table ref="table" :data="tableData" style="width: 100%;">
<el-table-column prop="name" label="页面名称" />
<el-table-column prop="path" label="页面路径" />
<el-table-column prop="status" label="状态">
<template v-slot="scope">
{{ scope.row.status == 1 ? "可见" : "不可见" }}
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建日期" />
<el-table-column label="操作" width="200">
<template v-slot="scope">
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="delHandle(scope.row.id)">
<el-button type="text" round slot="reference">
删除
</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<!-- <div class="">
<el-pagination :total="tableData.length" layout="total, prev, pager, next, jumper"></el-pagination>
</div> -->
<!-- 增减余额弹窗 -->
<el-dialog :title="title + '页面'" :visible.sync="dialogVisible" width="30%">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="页面名称">
<el-input v-model="form.name"></el-input>
</el-form-item> <el-form-item label="">
<el-input v-model="form.path"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio :label="1">可见</el-radio>
<el-radio :label="2">不可见</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="sumbit"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { miniAppPagesget, miniAppPagespost, miniAppPagesput, miniAppPagesdelete } from '@/api/goxcx'
export default {
data() {
return {
tableData: [],
form: {
name: "",
path: "",
status: 1,
},
title: '新增',
dialogVisible: false
}
},
mounted() {
this.getList()
},
watch: {
'form.type': (n, o) => {
if (n == 'img') {
}
}
},
methods: {
async sumbit() {
this.dialogVisible = false
if (this.title == '新增') {
await miniAppPagespost(this.form)
this.$message({
message: '添加成功',
type: 'success'
})
} else {
await miniAppPagesput(this.form)
this.$message({
message: '编辑成功',
type: 'success'
})
}
this.form = {
status: 1
}
this.getList()
},
//
async edit(item) {
this.title = '编辑'
this.dialogVisible = true
this.form = item
},
//
async delHandle(pagesId) {
let res = await miniAppPagesdelete(pagesId)
this.$message({
message: '删除成功',
type: 'success'
})
this.getList()
},
async getList() {
let res = await miniAppPagesget()
this.tableData = res
},
}
}
</script>
<style></style>

View File

@ -6,6 +6,7 @@
<!-- <el-tab-pane label="通知配置" name="3"></el-tab-pane> -->
<el-tab-pane label="安全设置" name="4"></el-tab-pane>
<el-tab-pane label="扩展参数" name="5"></el-tab-pane>
<el-tab-pane label="跳转小程序" name="6"></el-tab-pane>
</el-tabs>
<shopInfo v-if="activeName == 1" />
@ -13,6 +14,7 @@
<notice v-if="activeName == 3" />
<securitySetting v-if="activeName == 4" />
<extend v-if="activeName == 5" />
<goxcx v-if="activeName == 6" />
</div>
</template>
@ -23,11 +25,12 @@ import shopSetting from './components/shopSetting'
import notice from './components/notice'
import securitySetting from './components/securitySetting'
import extend from './components/extend'
import goxcx from './components/goxcx'
export default {
components: {
shopInfo,
shopSetting,
notice,securitySetting,extend
notice,securitySetting,extend,goxcx
},
data() {
return {

View File

@ -8,8 +8,8 @@
<el-form-item label="最大金额">
<el-input-number v-model="form.maxNum" controls-position="right" :min="1"></el-input-number>
</el-form-item>
<el-form-item label="赠送数量">
<el-input-number v-model="form.handselNum" controls-position="right" :min="1"></el-input-number>
<el-form-item label="赠送金额">
<el-input-number v-model="form.handselNum" controls-position="right" :min="0"></el-input-number>
</el-form-item>
<!-- <el-form-item label="赠送类型">
<el-select v-model="form.handselType">
@ -20,20 +20,45 @@
<el-form-item label="状态">
<el-switch v-model="form.isDel" active-value="0" inactive-value="1"></el-switch>
</el-form-item>
<el-form-item label="是否赠送商品">
<el-switch v-model="form.isGiftPro" active-value="1" inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="赠送商品">
<div>
<el-button type="primary" icon="el-icon-plus" @click="$refs.shopListRef.show([...productIds])">
添加商品
</el-button>
</div>
<div class="shop_list">
<div class="item_wrap" v-for="(item, index) in productIds" :key="item.id">
<div style="display: flex;align-items: center;margin-top: 6px;">
<div class="name">{{ item.name }}</div>
<el-input style="width: 120px;" v-model="item.num" placeholder='请填写数量'
@input="checkIfNum(item)"></el-input>
<el-button type="text" @click="productIds.splice(index, 1)"
style="margin-left: 20px;">删除</el-button>
</div>
</div>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" :loading="loading" @click="onSubmitHandle"> </el-button>
</span>
</el-dialog>
<shopList ref="shopListRef" @success="slectShop" />
</div>
</template>
<script>
import handselTypes from '../handselTypes'
import { modityActivate } from '@/api/shop'
import { modityActivate, activate } from '@/api/shop'
import shopList from '@/components/shopList'
export default {
components: { shopList },
data() {
return {
dialogVisible: false,
@ -48,6 +73,7 @@ export default {
handselType: 'GD',
isDel: '0'
},
productIds: [],
resetForm: '',
rules: {
minNum: [
@ -71,12 +97,44 @@ export default {
this.resetForm = { ...this.form }
},
methods: {
slectShop(res) {
if (this.productIds.length) {
res.map(async item => {
if (!await this.checkShop(item.id)) {
this.productIds.push({ ...item })
}
})
} else {
this.productIds = res
}
},
//
checkShop(id) {
let falg = false
this.productIds.map(item => {
if (item.id == id) {
falg = true
}
})
return falg
},
checkIfNum(item) {
item.num = item.num.toString().replace(/\D/g, '');
},
//
classifySuccess(e) {
this.form.config.categoryList = e
},
onSubmitHandle() {
console.log(this.form)
// console.log(this.form)
let arr = []
this.productIds.forEach(ele => {
arr.push({
productId: ele.id,
num: ele.num
})
})
this.form.products = arr
this.$refs.form.validate(async valid => {
if (valid) {
try {
@ -98,10 +156,13 @@ export default {
}
})
},
show(obj) {
async show(obj) {
this.dialogVisible = true
if (obj && obj.id) {
this.form = { ...obj }
let res = await activate(obj.id)
this.productIds = res
console.log(res, '调试1')
}
},
close() {
@ -112,4 +173,72 @@ export default {
}
}
}
</script>
</script>
<style scoped lang="scss">
.shop_list {
display: flex;
flex-wrap: wrap;
.item_wrap {
$size: 80px;
.item {
$radius: 4px;
width: $size;
height: $size;
border-radius: $radius;
overflow: hidden;
position: relative;
margin-right: 10px;
margin-top: 10px;
&:hover {
cursor: pointer;
}
&::after {
content: attr(data-index);
font-size: 12px;
height: 20px;
display: flex;
padding: 0 10px;
border-radius: 0 0 $radius 0;
align-items: center;
background-color: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(10px);
color: #fff;
position: absolute;
top: 0;
left: 0;
z-index: 10;
}
&::before {
content: '删除';
font-size: 12px;
width: 100%;
height: 20px;
display: flex;
padding: 0 10px;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(10px);
color: #fff;
position: absolute;
bottom: 0;
left: 0;
z-index: 10;
transition: all .1s ease-in-out;
}
}
.name {
width: $size;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
</style>

View File

@ -22,11 +22,11 @@ export default {
}
},
mounted() {
this.getlist()
},
methods: {
show() {
this.isshow = true
this.getlist()
},
async getlist() {
let res = await getwxacode({

View File

@ -88,18 +88,25 @@
{{ scope.row.lastLoginAt | timeFilter }}
</template>
</el-table-column>
<!-- <el-table-column label="操作" width="200"> -->
<!-- <template v-slot="scope">
<el-button type="text" @click="">历史订单</el-button>
<el-button type="text" @click="">充值记录</el-button>
<el-button type="text" @click="">余额</el-button> -->
<el-table-column label="操作" width="200">
<template v-slot="scope">
<el-button type="text" @click="edituser(scope.row)">编辑</el-button>
<el-dropdown size="mini" @command="editPop(scope.row)">
<span class="el-dropdown-link" style="font-size: 12px;"> 更多 </span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>增减余额</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-button type="text" @click="editPop(scope.row)">增减余额</el-button> -->
<!-- <el-button type="text" @click="">历史订单</el-button>
<el-button type="text" @click="">充值记录</el-button> -->
<!-- <el-popconfirm title="确定删除吗?" @confirm="delTableHandle([scope.row.id])">
<el-button type="text" icon="el-icon-delete" style="margin-left: 20px !important;"
slot="reference">删除</el-button>
</el-popconfirm> -->
<!-- </template> -->
<!-- </el-table-column> -->
</template>
</el-table-column>
</el-table>
</div>
<div class="head-container">
@ -107,11 +114,71 @@
@size-change="sizeChange" @current-change="paginationChange"
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
</div>
<!-- 编辑用户 -->
<el-dialog title="编辑" :visible.sync="dialogVisibleedit" width="30%">
<el-form ref="form" :model="userinfos" label-width="80px">
<el-form-item label="生日">
<el-date-picker v-model="userinfos.birthDay" type="date" placeholder="选择日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="会员名称">
<el-input v-model="userinfos.name"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="userinfos.sex">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="状态">
<el-radio-group v-model="userinfos.status">
<el-radio label="1">正常</el-radio>
<el-radio label="0">不可使用</el-radio>
</el-radio-group>
</el-form-item> -->
<el-form-item label="联系电话">
<el-input v-model="userinfos.telephone" @input="checkIfNum"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisibleedit = false"> </el-button>
<el-button type="primary" @click="sumbituser"> </el-button>
</span>
</el-dialog>
<!-- 增减余额弹窗 -->
<el-dialog title="增减余额" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
<el-form ref="form" :model="userinfo" label-width="80px">
<el-form-item label="用户">
{{ userinfo.nickName }}
</el-form-item>
<el-form-item label="增减">
<el-radio-group v-model="userinfo.operationType">
<el-radio label="in">增加</el-radio>
<el-radio label="out">扣除</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="余额">
<el-input v-model="userinfo.amount" @input="checkIfNum"></el-input>
</el-form-item>
<el-form-item label="类型">
<el-radio-group v-model="userinfo.type">
<el-radio label="consume">消费</el-radio>
<el-radio label="inMoney ">充值退款</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="sumbit"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { queryAllShopUser, queryAllShopInfo } from "@/api/shop";
import { queryAllShopUser, queryAllShopInfo, midfiyAccount, tbShopUseredit } from "@/api/shop";
import dayjs from "dayjs";
let cacheData = {};
export default {
@ -132,6 +199,18 @@ export default {
size: 10,
loading: false,
total: 0
},
dialogVisible: false,
dialogVisibleedit: false,
userinfo: {
nickName: '',
operationType: 'in',
type: 'consume'
},
userinfos: {
levelConsume: "0",
sex: '1',
status: '1'
}
};
},
@ -141,11 +220,53 @@ export default {
}
},
mounted() {
cacheData = { ...this.query };
this.getTableData();
this.getShopInfo();
},
methods: {
checkIfNum() {
this.userinfo.amount = this.userinfo.amount.toString().replace(/\D/g, '');
},
handleClose() {
this.userinfo = {}
},
async sumbituser() {
let res = await tbShopUseredit({
...this.userinfos,
levelConsume:'0',
shopId: localStorage.getItem("shopId"),
})
this.$message.success('修改成功')
this.dialogVisibleedit = false
this.getTableData();
},
async sumbit() {
let res = await midfiyAccount(this.userinfo)
this.dialogVisible = false
this.$message.success('修改成功')
this.getTableData();
},
editPop(d) {
this.dialogVisible = true
this.userinfo.nickName = d.nickName
this.userinfo.id = d.id
},
edituser(d) {
let obj = { ...d }
if (d.sex == '男') {
obj.sex = '1'
} else {
obj.sex = '2'
}
// obj.birthday = d.birthDay
obj.name = d.nickName
console.log(obj, '调试1')
this.userinfos = obj
this.dialogVisibleedit = true
},
toPage(type) {
const pages = {
charge: "charge_list",