This commit is contained in:
YeMingfei666 2024-11-23 17:52:04 +08:00
commit adfdee835b
9 changed files with 222 additions and 24 deletions

View File

@ -3,13 +3,13 @@ ENV = 'production'
# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇Nginx 配置 # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇Nginx 配置
# 接口地址,注意协议,如果你没有配置 ssl需要将 https 改为 http # 接口地址,注意协议,如果你没有配置 ssl需要将 https 改为 http
# 测试 # 测试
# VUE_APP_BASE_API = 'https://admintestpapi.sxczgkj.cn' VUE_APP_BASE_API = 'https://admintestpapi.sxczgkj.cn'
# 生产 # 生产
# VUE_APP_BASE_API = 'https://cashieradmin.sxczgkj.cn' # VUE_APP_BASE_API = 'https://cashieradmin.sxczgkj.cn'
# 预发布接口 # 预发布接口
VUE_APP_BASE_API = 'https://pre-cashieradmin.sxczgkj.cn' # VUE_APP_BASE_API = 'https://pre-cashieradmin.sxczgkj.cn'
# VUE_APP_BASE_API = 'http://192.168.2.98:8000' # VUE_APP_BASE_API = 'http://192.168.2.98:8000'
# 如果接口是 http 形式, wss 需要改为 ws # 如果接口是 http 形式, wss 需要改为 ws

View File

@ -15,14 +15,26 @@ export function tbPrintMachine(data, method = "post") {
}); });
} }
// 开票
export function getbinding(data) {
return request({
url: "/api/tbShopInfo/binding",
method: "post",
data: {
shopId: localStorage.getItem("shopId"),
...data
}
});
}
/** /**
* 获取应用中心列表 * 获取应用中心列表
* @returns * @returns
*/ */
export function appCenterGet() { export function appCenterGet(params) {
return request({ return request({
url: "/api/appCenter", url: "/api/appCenter",
method: "get" method: "get",
params
}); });
} }

View File

@ -2,6 +2,15 @@
<div class="app-container"> <div class="app-container">
<div class="title">应用中心</div> <div class="title">应用中心</div>
<div class="list"> <div class="list">
<div class="item" @click="upPop">
<img src="./kp.png" class="icon">
<div class="info">
<div class="name">开票</div>
<div class="intro">
</div>
</div>
</div>
<div class="item" v-for="item in list" :key="item.id" @click="to(item)"> <div class="item" v-for="item in list" :key="item.id" @click="to(item)">
<img :src="item.coverImg" class="icon"> <img :src="item.coverImg" class="icon">
<div class="info"> <div class="info">
@ -12,21 +21,64 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 弹窗 -->
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" >
<el-form :model="forms">
<el-form-item label="账号:" label-width="60px">
<el-input v-model="forms.account" :disabled="title != '绑定数点票账号'" autocomplete="off"></el-input>
</el-form-item>
<!-- <el-form-item label="密码/验证码" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="开票项目:" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="开票类型:" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item> -->
<div style="text-align: right;" v-if="title == '绑定数点票账号'">联系区域经理开通</div>
<div style="text-align: center;" v-else @click="title = '绑定数点票账号'">更换绑定</div>
<!-- <el-form-item label="活动区域" label-width="120px">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item> -->
</el-form>
<span slot="footer" class="dialog-footer" v-if="title == '绑定数点票账号'">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="sumbitEvent"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { appCenterGet } from "@/api/application"; import { appCenterGet, getbinding } from "@/api/application";
export default { export default {
data() { data() {
return { return {
list: [] list: [],
dialogVisible: false,
forms: {},
title: '绑定数点票账号',
} }
}, },
mounted() { mounted() {
this.appCenterGet() this.appCenterGet()
this.getbinding()
}, },
methods: { methods: {
upPop() {
this.dialogVisible = true
},
sumbitEvent() {
if (this.forms.account) {
this.dialogVisible = false
this.getbinding(this.forms)
}
},
// //
to(item) { to(item) {
localStorage.setItem('applocation', JSON.stringify(item)) localStorage.setItem('applocation', JSON.stringify(item))
@ -42,7 +94,24 @@ export default {
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
},
//
async getbinding(d = "") {
try {
const res = await getbinding(d)
if (res) {
this.forms = res.store
this.title = '数电票账号已绑定'
} else {
this.title = '绑定数点票账号'
this.forms = {}
} }
} catch (error) {
console.log(error);
}
}
} }
} }
</script> </script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

View File

@ -81,9 +81,9 @@
</el-form-item> </el-form-item>
<el-form-item label="发放数量" prop="number" style="width: 100%;"> <el-form-item label="发放数量" prop="number" style="width: 100%;">
<el-input v-model="form.number" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder="" style="width: 200px;" /> <el-input v-model="form.number" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder="" style="width: 200px;" />
<el-tooltip class="item" effect="dark" content="限用户自行领取,(当库存为 0时集草等活动仍会赠送" placement="top-start"> <!-- <el-tooltip class="item" effect="dark" content="限用户自行领取,(当库存为 0时集草等活动仍会赠送" placement="top-start">
<i class="el-icon-question" /> <i class="el-icon-question" />
</el-tooltip> </el-tooltip> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -97,7 +97,7 @@
<el-input v-model="form.title" placeholder="" style="width: 289px;" /> <el-input v-model="form.title" placeholder="" style="width: 289px;" />
</el-form-item> </el-form-item>
<el-form-item label="使用门槛" prop="fullAmount"> <el-form-item label="使用门槛" prop="fullAmount">
额满<el-input v-model="form.fullAmount" oninput="value= value.replace(/[^\d|\.]/g, '')" placeholder="" style="width: 100px;margin: 0 23px;"><template slot="suffix"></template></el-input>可用 额满<el-input v-model="form.fullAmount" oninput="value= value.replace(/[^\d|\.]/g, '')" placeholder="" style="width: 100px;margin: 0 23px;"><template slot="suffix"></template></el-input>可用
</el-form-item> </el-form-item>
<el-form-item label="有效期类型" style="width: 100%;"> <el-form-item label="有效期类型" style="width: 100%;">
<el-radio-group v-model="form.validityType"> <el-radio-group v-model="form.validityType">
@ -158,9 +158,9 @@
</el-form-item> </el-form-item>
<el-form-item label="发放数量" prop="number" style="width: 100%;"> <el-form-item label="发放数量" prop="number" style="width: 100%;">
<el-input v-model="form.number" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder="" style="width: 200px;" /> <el-input v-model="form.number" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder="" style="width: 200px;" />
<el-tooltip class="item" effect="dark" content="限用户自行领取,(当库存为 0时集草等活动仍会赠送" placement="top-start"> <!-- <el-tooltip class="item" effect="dark" content="限用户自行领取,(当库存为 0时集草等活动仍会赠送" placement="top-start">
<i class="el-icon-question" /> <i class="el-icon-question" />
</el-tooltip> </el-tooltip> -->
</el-form-item> </el-form-item>
<el-form-item label="赠送商品" prop="products"> <el-form-item label="赠送商品" prop="products">
<div> <div>

View File

@ -91,7 +91,7 @@
<div class="head-container"> <div class="head-container">
<el-pagination <el-pagination
:total="tableData.total" :total="tableData.total"
:current-page="tableData.page + 1" :current-page="tableData.page"
:page-size="tableData.size" :page-size="tableData.size"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@current-change="paginationChange" @current-change="paginationChange"
@ -130,7 +130,7 @@ export default {
resetQuery: null, resetQuery: null,
tableData: { tableData: {
data: [], data: [],
page: 0, page: 1,
size: 10, size: 10,
loading: false, loading: false,
total: 0 total: 0
@ -146,7 +146,7 @@ export default {
*/ */
async getTableData() { async getTableData() {
// eslint-disable-next-line no-unused-vars, prefer-const // eslint-disable-next-line no-unused-vars, prefer-const
console.log(this.couponId) // console.log(this.couponId)
// eslint-disable-next-line no-unused-vars, prefer-const // eslint-disable-next-line no-unused-vars, prefer-const
let res = await queryReceive({ let res = await queryReceive({
@ -168,8 +168,13 @@ export default {
* 时间选择监听 * 时间选择监听
*/ */
queryTimeChange(e) { queryTimeChange(e) {
if (e) {
this.query.startTime = e[0] this.query.startTime = e[0]
this.query.endTime = e[1] this.query.endTime = e[1]
} else {
this.query.startTime = ''
this.query.endTime = ''
}
}, },
/** /**
@ -200,7 +205,8 @@ export default {
}, },
// //
paginationChange(e) { paginationChange(e) {
this.tableData.page = e - 1 this.tableData.page = e
this.query.page = e
this.getTableData() this.getTableData()
}, },
/** /**

View File

@ -173,7 +173,7 @@ export default {
async profilepicture(d) { async profilepicture(d) {
this.handleSpeak(d.callNum) this.handleSpeak('请'+d.callNum+'用餐')
let res = await callTablecall({ let res = await callTablecall({
shopId: localStorage.getItem('shopId'), shopId: localStorage.getItem('shopId'),
callQueueId: d.id callQueueId: d.id

View File

@ -0,0 +1,109 @@
<template>
<div class="app-container">
<div class="title">营销中心</div>
<div class="list">
<div class="item" v-for="item in list" :key="item.id" @click="to(item)">
<img :src="item.coverImg" class="icon">
<div class="info">
<div class="name">{{ item.name }}</div>
<div class="intro">
{{ item.value }}
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { appCenterGet } from "@/api/application";
export default {
data() {
return {
list: [],
}
},
mounted() {
this.appCenterGet()
},
methods: {
//
to(item) {
localStorage.setItem('applocation', JSON.stringify(item))
this.$router.push({
name: item.absUrl
})
},
//
async appCenterGet() {
try {
const res = await appCenterGet({
type:'market'
})
this.list = res
} catch (error) {
console.log(error);
}
},
}
}
</script>
<style scoped lang="scss">
.title {
font-size: 24px;
font-weight: bold;
padding-top: 10px;
}
.list {
padding: 20px 0;
display: flex;
flex-wrap: wrap;
gap: 14px;
.item {
width: 400px;
background-color: #f5f5f5;
display: flex;
align-items: center;
padding: 14px;
&:hover {
cursor: pointer;
.info {
.name {
color: #39D47A;
}
.intro {
color: #39D47A;
}
}
}
.icon {
width: 40px;
height: 40px;
object-fit: cover;
}
.info {
flex: 1;
padding-left: 10px;
.name {
font-weight: bold;
}
.intro {
color: #999;
margin-top: 4px;
}
}
}
}
</style>

View File

@ -189,11 +189,13 @@
style="margin-left: 20px !important;"> style="margin-left: 20px !important;">
<el-button type="text" icon="el-icon-edit">编辑</el-button> <el-button type="text" icon="el-icon-edit">编辑</el-button>
</router-link> --> </router-link> -->
<el-button type="text" icon="el-icon-edit" @click="toPath('/product/add_shop', scope.row)">编辑</el-button> <div style="display: flex;gap: 10px;">
<el-button type="text" icon="el-icon-edit" @click="toPath('/product/add_shop', scope.row)"
v-if="scope.row.typeEnum">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="delTableHandle([scope.row.id])"> <el-popconfirm title="确定删除吗?" @confirm="delTableHandle([scope.row.id])">
<el-button type="text" icon="el-icon-delete" style="margin-left: 20px !important;" <el-button type="text" icon="el-icon-delete" slot="reference">删除</el-button>
slot="reference">删除</el-button>
</el-popconfirm> </el-popconfirm>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -244,7 +246,7 @@ import { tbProductListV2, tbShopCategoryGet, tbProductDelete, tbProductIsHot, up
import { hasPermission } from '@/utils/limits.js' import { hasPermission } from '@/utils/limits.js'
export default { export default {
name:'product', name: 'product',
components: { components: {
BindCons, BindCons,
StockHistory StockHistory