修改打印机页面,增加叫号管理页面、霸王餐、店铺优惠券

This commit is contained in:
2025-02-22 18:13:19 +08:00
parent 5238df86e5
commit 5a877b550b
32 changed files with 2972 additions and 394 deletions

View File

@@ -0,0 +1 @@
<template></template>

View File

@@ -0,0 +1,93 @@
<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.icon" class="icon" />
<div class="info">
<div class="name">{{ item.name }}</div>
<div class="intro">
{{ item.desc }}
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import bear from "@/assets/images/application/bear.png";
import song from "@/assets/images/application/song.png";
import ad from "@/assets/images/application/ad.png";
import call from "@/assets/images/application/call.png";
const list = ref([
{ name: "存酒", icon: bear, path: "", desc: "用户未喝完的酒可暂存在店里" },
{ name: "点歌", icon: song, path: "", desc: "用户可以付费点歌" },
{ name: "广告", icon: ad, path: "", desc: "添加弹窗广告" },
{ name: "叫号", icon: call, path: "lineUplist", desc: "" },
]);
const router = useRouter();
const to = (item) => {
router.push("/application/" + item.path);
};
</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: #fff;
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

@@ -0,0 +1,413 @@
<template>
<div class="basicStyle">
<div>
<el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left">
<el-form-item label="排队页地址">
<span style="color: #999999">{{ form.pageAddress }}</span>
<span @click="copydata">复制</span>
</el-form-item>
<el-form-item label="线上取号">
<el-switch v-model="form.isOnline" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="背景图片">
<single-image-upload v-model="form.bgCover" @change="uploadChange"></single-image-upload>
</el-form-item>
<el-form-item label="桌型">
<div style="width: 100%">
<div>
<el-button
type="primary"
@click="
showLocation = true;
title = '新增';
"
>
添加
</el-button>
</div>
<el-table :data="formtable.records" border style="width: 60%; margin-top: 20px">
<el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="note" label="描述"></el-table-column>
<el-table-column prop="waitTime" label="等待时间「桌」"></el-table-column>
<el-table-column prop="prefix" label="号码前缀"></el-table-column>
<el-table-column prop="start" label="开始号码"></el-table-column>
<el-table-column prop="name" label="操作">
<template v-slot="scope">
<div style="display: flex; gap: 10px">
<el-button type="text" @click="editPop(scope.row)">编辑</el-button>
<el-button type="text" style="color: #ff4d4f" @click="deleteevnt(scope.row)">
删除
</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
</el-form-item>
</el-form>
<h2>通知模板</h2>
<el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left">
<el-form-item label="排队成功提醒">
<el-input
v-model="form.successMsg"
placeholder="请输入排队成功提醒"
disabled
style="width: 500px"
></el-input>
</el-form-item>
<el-form-item label="排队即将排到通知">
<div>
<el-input
v-model="form.nearMsg"
placeholder="请输入排队成功提醒"
disabled
style="width: 500px"
></el-input>
<div class="duoshaozhuo">
<div>前面等待</div>
<el-input v-model="form.nearNum" placeholder="" disabled></el-input>
<div>桌时提醒</div>
</div>
</div>
</el-form-item>
<el-form-item label="排队到号提醒">
<el-input
v-model="form.callingMsg"
placeholder="请输入排队到号提醒"
disabled
style="width: 500px"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitHandle" :loading="formLoading">
<span v-if="!formLoading">保存</span>
<span v-else>保存中...</span>
</el-button>
</el-form-item>
</el-form>
</div>
<el-dialog :title="title" v-model="showLocation" width="500px">
<el-form :model="forms" label-width="140px" label-position="left">
<el-form-item label="名称">
<el-input v-model="forms.name" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="描述">
<el-input v-model="forms.note" placeholder="如1-2人"></el-input>
</el-form-item>
<el-form-item label="等待时间">
<el-input v-model="forms.waitTime" placeholder="0">
<template #append>分钟/1</template>
</el-input>
</el-form-item>
<el-form-item label="号码前缀">
<el-input v-model="forms.prefix" placeholder="请输入英文字母「不支持中文」"></el-input>
</el-form-item>
<el-form-item label="开始号码">
<el-input v-model="forms.start" placeholder="请输入开始号码"></el-input>
</el-form-item>
<el-form-item label="临近几桌提醒">
<el-input-number
step-strictly
v-model="forms.nearNum"
placeholder="请输入临近几桌提醒"
></el-input-number>
</el-form-item>
<el-form-item label="过号保留">
<el-input
v-model="forms.postponeNum"
:disabled="!forms.isPostpone"
placeholder="请输入名称"
>
<template #prepend>
<div>
<span><el-checkbox v-model="forms.isPostpone">开启顺延</el-checkbox></span>
</div>
</template>
<template #append></template>
</el-input>
</el-form-item>
<el-form-item label="" width="120">
<template v-slot="scope">
<div style="display: flex; gap: 10px">
<el-button
plain
@click="
showLocation = false;
forms = {};
"
>
取消
</el-button>
<el-button type="primary" @click="submitE">确定</el-button>
</div>
</template>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import callTableApi from "@/api/account/callTable";
import { ElMessage, ElMessageBox, ElSubMenu } from "element-plus";
import uploadImg from "@/assets/images/upload.png";
export default {
data() {
return {
uploadImg,
showLocation: false,
showUpload: false,
uploadIndex: 1,
startTime: "",
endTime: "",
formLoading: false,
form: {
nearNum: 1,
},
forms: {},
formtable: "",
rules: {
shopName: [
{
required: true,
message: " ",
trigger: "blur",
},
],
phone: [
{
required: true,
message: " ",
trigger: "blur",
},
],
settleTime: [
{
required: true,
message: " ",
trigger: "blur",
},
],
},
fileList: [],
files: [],
headers: {
Authorization: "",
},
title: "",
};
},
mounted() {
this.init();
},
methods: {
async editPop(item) {
this.forms = item;
this.showLocation = true;
this.title = "编辑";
},
async deleteevnt(item) {
ElMessageBox.confirm("是否要删除" + item.name, {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(async () => {
const res = await callTableApi.deleteTable({
callTableId: item.id,
});
ElSubMenu.success("删除成功");
this.init();
})
.catch(() => {});
},
async submitE() {
if (this.title == "新增") {
const res = await callTableApi.addTable({
...this.forms,
});
if (res) {
ElMessage.success("新增成功");
this.showLocation = false;
this.init();
}
} else {
const res = await callTableApi.editTable({
...this.forms,
callTableId: this.forms.id,
});
if (res) {
ElMessage.success("修改成功");
this.showLocation = false;
this.init();
}
}
this.forms = {};
},
async init() {
try {
const res = await callTableApi.getConfig();
this.form = res;
const data = await callTableApi.getTable({
page: 1,
size: 10,
});
this.formtable = data;
} catch (error) {}
},
// 保存
submitHandle() {
this.$refs.form.validate(async (valid) => {
if (valid) {
this.formLoading = true;
try {
// if (this.startTime && this.endTime) {
// this.form.businessTime = `${this.startTime}-${this.endTime}`;
// }
const res = await callTableApi.editConfig(this.form);
this.formLoading = false;
this.forms = {};
ElMessage({
title: "成功",
message: "提交成功",
type: "success",
});
} catch (error) {}
}
});
},
handleSuccess(response, file, fileList) {
// const uid = file.uid
// const id = response.id
// this.files.push({ uid, id })
console.log("上传成功", response);
this.files = response.data;
this.form.bgCover = response.data[0];
},
handleBeforeRemove(file, fileList) {
for (let i = 0; i < this.files.length; i++) {
if (this.files[i].uid === file.uid) {
crudQiNiu.del([this.files[i].id]).then((res) => {});
return true;
}
}
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// 监听上传失败
handleError(e, file, fileList) {
const msg = JSON.parse(e.message);
this.crud.notify(msg.message, CRUD.NOTIFICATION_TYPE.ERROR);
},
async copydata(content) {
let copyResult = true;
// 设置想要复制的文本内容
const text = this.form.pageAddress || "复制内容为空哦~";
// 判断是否支持clipboard方式
if (!!window.navigator.clipboard) {
// 利用clipboard将文本写入剪贴板这是一个异步promise
await window.navigator.clipboard
.writeText(text)
.then((res) => {
console.log("复制成功");
})
.catch((err) => {
console.log("复制失败--采取第二种复制方案", err);
// clipboard方式复制失败 则采用document.execCommand()方式进行尝试
copyResult = copyContent2(text);
});
} else {
// 不支持clipboard方式 则采用document.execCommand()方式
copyResult = copyContent2(text);
}
// 返回复制操作的最终结果
// return copyResult;
},
// 刷新列表数据
doSubmit() {
this.fileList = [];
this.showUpload = false;
switch (this.uploadIndex) {
case 1:
this.form.bgCover = this.files[0];
break;
case 2:
this.form.coverImg = this.files[0];
break;
case 3:
this.form.shopQrcode = this.files[0];
break;
default:
break;
}
},
},
};
</script>
<style scoped lang="scss">
.basicStyle {
padding: 20px;
}
.map_box {
width: 100%;
position: relative;
.map {
height: 300px;
}
.search_box {
position: absolute;
top: 10px;
left: 10px;
}
.search_wrap {
padding: 6px 0;
.item {
display: flex;
padding: 12px 0;
.left {
flex: 1;
display: flex;
flex-direction: column;
padding-right: 20px;
.location {
color: #999;
padding-top: 4px;
}
}
}
}
}
.duoshaozhuo {
display: flex;
align-items: center;
> input {
width: 120px;
border: none !important;
}
> div {
color: #999;
width: 118px;
height: 33px;
line-height: 33px;
text-align: center;
border: 1px solid #dddfe6;
background-color: #f5f7fa;
margin-top: 9px;
}
}
</style>

View File

@@ -0,0 +1,533 @@
<template>
<div class="lineUpBox">
<div class="lineUpBoxTop">
<ul class="lineUpBoxUl">
<li :class="[[selecttopType == '' ? 'active' : '']]" @click="gettypeevent('')">
<div>全部</div>
<div>{{ tableData.totalCount || 0 }}</div>
<div class="postionStyle" v-if="selecttopType == ''">
<el-icon style="transform: translateY(-4px)" color="#fff"><Check /></el-icon>
</div>
</li>
<li
v-for="item in tableData.records"
:key="item.id"
@click="gettypeevent(item.id)"
:class="[[selecttopType == item.id ? 'active' : '']]"
>
<div>{{ item.name }}</div>
<div>{{ item.totalCount || 0 }}</div>
<div class="postionStyle" v-if="selecttopType == item.id">
<el-icon style="transform: translateY(-4px)" color="#fff"><Check /></el-icon>
</div>
</li>
</ul>
<div class="buttonstyle">
<el-button
type="primary"
@click="
dialogVisibles = true;
phone = '';
"
>
取号
</el-button>
<el-button plain type="primary" @click="toUrl">叫号记录</el-button>
</div>
</div>
<div style="display: flex; align-items: center; flex-wrap: wrap">
<div class="lineUpBoxList" v-for="item in list" style="margin-right: 20px" :key="item.id">
<ul>
<li>
<div>用户</div>
<div>{{ item.phone }}</div>
</li>
<li>
<div>号码</div>
<div>{{ item.callNum }}</div>
</li>
<li>
<div>桌型</div>
<div>{{ item.name }}{{ item.note }}</div>
</li>
<li>
<div>等待</div>
<div>{{ item.waitingCount }}</div>
</li>
</ul>
<div>
<el-button type="primary" @click="dialogConfirm(1, item)">取消</el-button>
<el-button type="primary" @click="profilepicture(item)">播报</el-button>
</div>
</div>
</div>
<!-- 播报弹窗 -->
<el-dialog title="提示" v-model="dialogVisible" center width="30%">
<div style="text-align: center">
<div style="font-size: 16px">正在叫号请稍等</div>
<div
v-if="profilepicturedata.state == 1"
style="color: #52c41a; font-size: 16px; margin-top: 17px"
>
已发送至用户
<i class="el-icon-circle-check" style="color: #52c41a"></i>
</div>
<div v-else style="color: #ff4d4f; font-size: 16px; margin-top: 17px">
用户未订阅消息
<i style="color: #ff4d4f" class="el-icon-circle-close"></i>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button
style="
width: 176px;
height: 48px;
background: #f7f7fa;
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.02);
border-radius: 2px 2px 2px 2px;
border: 1px solid rgba(255, 255, 255, 0);
"
@click="dialogConfirm(2)"
>
完成
</el-button>
<el-button
type="primary"
style="
width: 189px;
height: 45px;
background: #ff4d4f;
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.02);
border-radius: 2px 2px 2px 2px;
border: 1px solid rgba(255, 255, 255, 0.28);
"
@click="dialogConfirm(3)"
>
过号
</el-button>
</span>
</template>
</el-dialog>
<!-- 取号 -->
<el-dialog title="取号" v-model="dialogVisibles" width="30%">
<div>
<div style="color: #000">选择桌型</div>
<ul
class="lineUpBoxUl"
:class="[tableData.records.length > 2 ? 'dfs' : 'dfas']"
style="margin-top: 10px"
>
<li
v-for="item in tableData.records"
:key="item.id"
@click="selectTabletype = item"
:class="[[selectTabletype.id == item.id ? 'active' : '']]"
>
<div>{{ item.name }}</div>
<div>{{ item.totalCount }}</div>
<div class="postionStyle" v-if="selectTabletype.id == item.id">
<el-icon style="transform: translateY(-4px)" color="#fff"><Check /></el-icon>
</div>
</li>
</ul>
<div style="margin-top: 20px; color: #000">手机号码</div>
<div style="margin-top: 10px">
<input v-model="phone" style="height: 30px" type="text" placeholder="填写号码" />
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="callTabletakeNumberEvent">确认取号</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
const synth = window.speechSynthesis;
const msg = new SpeechSynthesisUtterance();
import callTableApi from "@/api/account/callTable";
export default {
data() {
return {
query: {
productId: "",
name: "",
categoryId: "",
typeEnum: "",
},
tableData: {
data: [],
page: 0,
size: 30,
loading: false,
total: 0,
},
selecttopType: "",
list: [],
dialogVisible: false,
dialogVisibles: false,
profilepictureInfo: "",
phone: "",
selectTabletype: "",
// 播报弹窗显示是否订阅
profilepicturedata: "",
};
},
async mounted() {
await this.getlist();
await this.getTableData();
},
methods: {
async callTabletakeNumberEvent() {
const res = await callTableApi.getTakeNumber({
callTableId: this.selectTabletype.id,
phone: this.phone,
note: this.selectTabletype.note,
name: this.selectTabletype.name,
});
if (res.callNum) {
this.getTableData();
this.getlist();
this.dialogVisibles = false;
}
},
handleSpeak(text) {
msg.text = text; // 文字内容: 小朋友,你是否有很多问号
msg.lang = "zh-CN"; // 使用的语言:中文
msg.volume = 3; // 声音音量1
msg.rate = 1; // 语速1
msg.pitch = 1; // 音高1
synth.speak(msg); // 播放
},
// // 语音停止
// handleStop(e) {
// msg.text = e;
// msg.lang = "zh-CN";
// synth.cancel(msg);
// },
async profilepicture(d) {
this.handleSpeak("请" + d.callNum + "用餐");
let res = await callTablecall({
shopId: localStorage.getItem("shopId"),
callQueueId: d.id,
});
if (res) {
this.dialogVisible = true;
this.profilepicturedata = res;
this.profilepictureInfo = d;
}
},
gettypeevent(d) {
this.selecttopType = d;
this.getTableData();
this.getlist();
},
async dialogConfirm(value, item) {
if (value == 1) {
const res = await callTableput({
shopId: localStorage.getItem("shopId"),
state: -1,
callQueueId: item.id,
});
if (res) {
this.getTableData();
this.getlist();
}
} else if (value == 2) {
const res = await callTableput({
shopId: localStorage.getItem("shopId"),
state: 2,
callQueueId: this.profilepictureInfo.id,
});
if (res) {
this.getTableData();
this.getlist();
this.dialogVisible = false;
}
} else if (value == 3) {
const res = await callTableput({
shopId: localStorage.getItem("shopId"),
state: 3,
callQueueId: this.profilepictureInfo.id,
});
if (res) {
this.getTableData();
this.getlist();
this.dialogVisible = false;
}
}
},
toUrl() {
this.$router.push({ path: "/application/lineUpRecord" });
},
// 获取商品列表
async getTableData() {
try {
const res = await callTableApi.getTableNumberList({
page: 1,
size: 10,
});
// this.tableData.loading = false
this.tableData = res;
this.selectTabletype = res.records[0];
// this.tableData.total = res.totalElements
} catch (error) {
console.log(error);
}
},
async getlist() {
const res = await callTableApi.getTableNumberList({
page: 1,
size: 9999,
callTableId: this.selecttopType,
state: 0,
});
this.list = res.records;
},
},
};
</script>
<style scoped lang="scss">
* {
margin: 0;
text-decoration: none;
outline: none;
}
ul,
li {
list-style: none;
}
.show {
display: none !important;
}
.hidden {
display: block !important;
}
.lineUpBox {
}
.lineUpBoxTop {
display: flex;
align-items: center;
justify-content: space-between;
.lineUpBoxUl {
display: flex;
align-items: center;
padding: 0;
> li {
border-radius: 4px 4px 4px 4px;
border: 1px solid #dddfe6;
width: 112px;
text-align: center;
margin-right: 20px;
position: relative;
> div {
margin-top: 8px;
color: #999;
}
> div:first-child {
color: #333333;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-align: center;
}
.postionStyle {
position: absolute;
right: 0px;
top: -9px;
width: 0;
height: 0;
border: 14px solid;
border-color: #318afe #318afe #fff #fff;
}
.postionStyleI {
position: absolute;
right: -13px;
top: -13px;
color: #fff;
font-size: 14px;
width: 0;
height: 0;
}
}
.active {
border: 2px solid #318afe;
> view:first-child {
color: #318afe;
}
}
}
.buttonstyle {
> button {
height: 31px;
padding: 5px 16px;
font-weight: 500;
font-size: 14px;
}
}
}
.lineUpBoxList {
width: 507px;
height: 148px;
background: #ffffff;
border-radius: 6px 6px 6px 6px;
border: 1px solid #dddfe6;
margin-top: 30px;
> ul {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
> li {
> div:nth-child(2) {
margin-top: 15px;
}
}
}
> div {
display: flex;
justify-content: space-around;
> button {
width: 169px;
height: 32px;
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.02);
border-radius: 1px 1px 1px 1px;
border: 1px solid #d9d9d9;
}
> button:first-child {
background: #ffffff;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 14px;
color: #666666;
text-align: center;
}
}
}
.dfs {
justify-content: space-between;
}
.dfas {
> li {
margin-right: 52px;
}
}
.lineUpBoxUl {
display: flex;
align-items: center;
padding: 0;
> li {
border-radius: 4px 4px 4px 4px;
border: 1px solid #dddfe6;
text-align: center;
position: relative;
min-width: 110px;
cursor: pointer;
> div {
margin-top: 8px;
color: #999;
}
> div:first-child {
color: #333333;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-align: center;
}
.postionStyle {
position: absolute;
right: 0px;
top: -9px;
border: 14px solid;
border-color: #318afe #318afe #fff #fff;
display: flex;
justify-content: center;
align-content: center;
flex-direction: column;
width: 0;
height: 0;
}
.postionStyleI {
width: 0;
height: 0;
position: absolute;
right: -13px;
top: -13px;
color: #fff;
font-size: 14px;
display: flex;
flex-direction: column;
justify-content: center;
align-content: center;
}
}
.active {
border: 2px solid #318afe;
> view:first-child {
color: #318afe;
}
}
}
.handle {
font-size: 18px;
color: #999;
&:hover {
cursor: grab;
}
}
.shop_info {
display: flex;
.info {
flex: 1;
padding-left: 8px;
display: flex;
flex-direction: column;
.tag_wrap {
display: flex;
}
}
}
</style>

View File

@@ -0,0 +1,34 @@
<template>
<div class="app-container">
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="排队列表" name="1"></el-tab-pane>
<el-tab-pane label="基本设置" name="2"></el-tab-pane>
</el-tabs>
<index v-if="activeName == 1" />
<basic v-if="activeName == 2" />
</div>
</template>
<script>
import index from "./components/index.vue";
import basic from "./components/basic.vue";
export default {
components: {
index,
basic,
},
data() {
return {
activeName: "1",
};
},
};
</script>
<style lang="scss" scoped>
.app-container {
background-color: #fff;
min-height: 100%;
}
</style>

View File

@@ -0,0 +1,119 @@
<template>
<div class="app-container">
<div class="head-container">叫号记录</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 label="桌号" prop="callNum"></el-table-column>
<el-table-column label="桌型" prop="typeEnum">
<template v-slot="scope">{{ scope.row.name }}({{ scope.row.note }})</template>
</el-table-column>
<el-table-column label="手机号" prop="phone"></el-table-column>
<el-table-column label="状态">
<template v-slot="scope">
<span
style="font-weight: 400; font-size: 14px"
:style="{ color: scope.row.state == 2 ? '#3F9EFF' : '' }"
>
{{ stateFilter(scope.row.state) }}
</span>
</template>
</el-table-column>
<el-table-column label="时间" prop="callTime"></el-table-column>
</el-table>
</div>
<!-- <div class="head-container">
<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>
</template>
<script>
import callTableApi from "@/api/account/callTable";
export default {
data() {
return {
query: {
productId: "",
name: "",
categoryId: "",
typeEnum: "",
},
tableData: {
data: [],
page: 0,
size: 30,
loading: false,
total: 0,
},
};
},
async mounted() {
await this.getTableData();
},
methods: {
stateFilter(i) {
if (i == -1) {
return "已取消";
} else if (i == 0) {
return "排队中";
} else if (i == 1) {
return "叫号中";
} else if (i == 2) {
return "已入座";
} else if (i == 3) {
return "已过号 ";
}
},
// 分页回调
// paginationChange(e) {
// this.tableData.page = e - 1
// this.getTableData()
// },
// 获取商品列表
async getTableData() {
try {
const res = await callTableApi.getCallRecord({
page: 1,
size: 9999,
});
this.tableData.data = res.records;
} catch (error) {
console.log(error);
}
},
// handleSizeChange(val) {
// this.tableData.size = val
// this.getTableData()
// },
},
};
</script>
<style scoped lang="scss">
.handle {
font-size: 18px;
color: #999;
&:hover {
cursor: grab;
}
}
.shop_info {
display: flex;
.info {
flex: 1;
padding-left: 8px;
display: flex;
flex-direction: column;
.tag_wrap {
display: flex;
}
}
}
</style>