新增应用中心
This commit is contained in:
parent
f71e170a02
commit
80b713c3d5
|
|
@ -3,9 +3,9 @@ ENV = 'development'
|
||||||
# 接口地址
|
# 接口地址
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.44:8000'
|
# VUE_APP_BASE_API = 'http://192.168.2.44:8000'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.133:8000'
|
# VUE_APP_BASE_API = 'http://192.168.2.133:8000'
|
||||||
# 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 = 'http://192.168.2.96:8000'
|
# VUE_APP_BASE_API = 'http://192.168.2.96:8000'
|
||||||
VUE_APP_WS_API = 'ws://192.168.2.128:8000'
|
VUE_APP_WS_API = 'ws://192.168.2.128:8000'
|
||||||
|
|
||||||
# 是否启用 babel-plugin-dynamic-import-node插件
|
# 是否启用 babel-plugin-dynamic-import-node插件
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import request from "@/utils/request";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 增加打印机
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function tbPrintMachine(data, method = "post") {
|
||||||
|
return request({
|
||||||
|
url: "/api/tbPrintMachine",
|
||||||
|
method: method,
|
||||||
|
data: {
|
||||||
|
shopId: localStorage.getItem("shopId"),
|
||||||
|
...data
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取应用中心列表
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function appCenterGet() {
|
||||||
|
return request({
|
||||||
|
url: "/api/appCenter",
|
||||||
|
method: "get"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -1,17 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-upload
|
<el-upload :action="uploadUrl" :before-upload="handleBeforeUpload" :on-success="handleUploadSuccess"
|
||||||
:action="uploadUrl"
|
:on-error="handleUploadError" name="file" :show-file-list="false" :headers="headers" style="display: none"
|
||||||
:before-upload="handleBeforeUpload"
|
ref="upload" v-if="this.type == 'url'">
|
||||||
:on-success="handleUploadSuccess"
|
|
||||||
:on-error="handleUploadError"
|
|
||||||
name="file"
|
|
||||||
:show-file-list="false"
|
|
||||||
:headers="headers"
|
|
||||||
style="display: none"
|
|
||||||
ref="upload"
|
|
||||||
v-if="this.type == 'url'"
|
|
||||||
>
|
|
||||||
</el-upload>
|
</el-upload>
|
||||||
<div class="editor" ref="editor" :style="styles"></div>
|
<div class="editor" ref="editor" :style="styles"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -125,6 +116,11 @@ export default {
|
||||||
init() {
|
init() {
|
||||||
const editor = this.$refs.editor;
|
const editor = this.$refs.editor;
|
||||||
this.Quill = new Quill(editor, this.options);
|
this.Quill = new Quill(editor, this.options);
|
||||||
|
this.Quill.enable(false)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.Quill.enable(true)
|
||||||
|
this.Quill.blur()
|
||||||
|
})
|
||||||
// 如果设置了上传地址则自定义图片上传事件
|
// 如果设置了上传地址则自定义图片上传事件
|
||||||
if (this.type == 'url') {
|
if (this.type == 'url') {
|
||||||
let toolbar = this.Quill.getModule("toolbar");
|
let toolbar = this.Quill.getModule("toolbar");
|
||||||
|
|
@ -155,6 +151,7 @@ export default {
|
||||||
this.Quill.on("editor-change", (eventName, ...args) => {
|
this.Quill.on("editor-change", (eventName, ...args) => {
|
||||||
this.$emit("on-editor-change", eventName, ...args);
|
this.$emit("on-editor-change", eventName, ...args);
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
// 上传前校检格式和大小
|
// 上传前校检格式和大小
|
||||||
handleBeforeUpload(file) {
|
handleBeforeUpload(file) {
|
||||||
|
|
@ -172,7 +169,7 @@ export default {
|
||||||
// 获取富文本组件实例
|
// 获取富文本组件实例
|
||||||
let quill = this.Quill;
|
let quill = this.Quill;
|
||||||
// 如果上传成功
|
// 如果上传成功
|
||||||
if (res.id >0) {
|
if (res.id > 0) {
|
||||||
// 获取光标所在位置
|
// 获取光标所在位置
|
||||||
let length = quill.getSelection().index;
|
let length = quill.getSelection().index;
|
||||||
// 插入图片 res.url为服务器返回的图片地址
|
// 插入图片 res.url为服务器返回的图片地址
|
||||||
|
|
@ -191,16 +188,20 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.editor, .ql-toolbar {
|
.editor,
|
||||||
|
.ql-toolbar {
|
||||||
white-space: pre-wrap !important;
|
white-space: pre-wrap !important;
|
||||||
line-height: normal !important;
|
line-height: normal !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quill-img {
|
.quill-img {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-tooltip[data-mode="link"]::before {
|
.ql-snow .ql-tooltip[data-mode="link"]::before {
|
||||||
content: "请输入链接地址:";
|
content: "请输入链接地址:";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
|
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
|
||||||
border-right: 0px;
|
border-right: 0px;
|
||||||
content: "保存";
|
content: "保存";
|
||||||
|
|
@ -215,14 +216,17 @@ export default {
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
|
||||||
content: "14px";
|
content: "14px";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
|
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
|
||||||
content: "10px";
|
content: "10px";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
|
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
|
||||||
content: "18px";
|
content: "18px";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
|
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
|
||||||
content: "32px";
|
content: "32px";
|
||||||
|
|
@ -232,26 +236,32 @@ export default {
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
|
||||||
content: "文本";
|
content: "文本";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
|
||||||
content: "标题1";
|
content: "标题1";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
|
||||||
content: "标题2";
|
content: "标题2";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
|
||||||
content: "标题3";
|
content: "标题3";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
|
||||||
content: "标题4";
|
content: "标题4";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
|
||||||
content: "标题5";
|
content: "标题5";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
|
||||||
content: "标题6";
|
content: "标题6";
|
||||||
|
|
@ -261,10 +271,12 @@ export default {
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
|
||||||
content: "标准字体";
|
content: "标准字体";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
|
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
|
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
|
||||||
content: "衬线字体";
|
content: "衬线字体";
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
|
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
|
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
|
||||||
content: "等宽字体";
|
content: "等宽字体";
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,197 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog :title="form.id ? '编辑酒品' : '添加酒品'" :visible.sync="dialogVisible" @close="reset">
|
||||||
|
<div class="head-container">
|
||||||
|
<div class="tab_wrap">
|
||||||
|
<div class="tab" :style="{ '--index': form.source }">
|
||||||
|
<div class="item" v-for="(item, index) in tabs" :key="item.value"
|
||||||
|
:class="{ active: index == form.source }" @click="tabChange(item)">
|
||||||
|
{{ item.label }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
|
||||||
|
<el-form-item label="酒品名" prop="name">
|
||||||
|
<el-input v-model="form.name" placeholder="请输入酒品名" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="酒品图片" prop="imgUrl">
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位" prop="unit">
|
||||||
|
<el-input v-model="form.name" placeholder="请选择单位,如:瓶" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="有效期">
|
||||||
|
<el-input-number v-model="form.period" controls-position="right" :min="1"
|
||||||
|
placeholder="请输入有效期(天)"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="onSubmitHandle">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { queryAllShopUser } from '@/api/shop'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: true,
|
||||||
|
tabs: [
|
||||||
|
{
|
||||||
|
value: 0,
|
||||||
|
label: '手动添加'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: '从商品添加'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
loading: false,
|
||||||
|
options: [],
|
||||||
|
form: {
|
||||||
|
source: '',
|
||||||
|
id: '',
|
||||||
|
imgUrl: '',
|
||||||
|
name: '',
|
||||||
|
period: '',
|
||||||
|
shopId: '',
|
||||||
|
unit: ''
|
||||||
|
},
|
||||||
|
resetForm: '',
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: ' ',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.resetForm = { ...this.form }
|
||||||
|
// this.getTableData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 切换类型
|
||||||
|
tabChange(item) {
|
||||||
|
this.form.source = this.tabs.findIndex(i => i.value == item.value)
|
||||||
|
},
|
||||||
|
// 获取用户列表
|
||||||
|
async getTableData(query = '') {
|
||||||
|
this.loading = true
|
||||||
|
try {
|
||||||
|
const res = await queryAllShopUser({
|
||||||
|
telephone: query,
|
||||||
|
})
|
||||||
|
this.loading = false
|
||||||
|
this.options = res.content
|
||||||
|
} catch (error) {
|
||||||
|
this.loading = false
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 提交
|
||||||
|
onSubmitHandle() {
|
||||||
|
console.log(this.form)
|
||||||
|
this.$refs.form.validate(async valid => {
|
||||||
|
if (valid) {
|
||||||
|
try {
|
||||||
|
this.form.shopId = localStorage.getItem('shopId')
|
||||||
|
let res = await tbShopCategoryPost(this.form, this.form.id ? 'put' : 'post')
|
||||||
|
this.$emit('success', res)
|
||||||
|
this.close()
|
||||||
|
this.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: `${this.form.id ? '编辑' : '添加'}成功`,
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
show(obj) {
|
||||||
|
// console.log(obj)
|
||||||
|
this.dialogVisible = true
|
||||||
|
if (obj.pid) {
|
||||||
|
this.form.pid = obj.pid
|
||||||
|
}
|
||||||
|
if (obj && obj.id) {
|
||||||
|
this.form = obj
|
||||||
|
if (obj.pic) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.uploadImg.fileList = [
|
||||||
|
{
|
||||||
|
url: obj.pic
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.dialogVisible = false
|
||||||
|
},
|
||||||
|
reset() {
|
||||||
|
this.form = { ...this.resetForm }
|
||||||
|
this.$refs.uploadImg.clearFiles()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.head-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab_wrap {
|
||||||
|
background-color: #DCF0E8;
|
||||||
|
padding: 4px;
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
--w: 120px;
|
||||||
|
height: 35px;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
width: var(--w);
|
||||||
|
height: inherit;
|
||||||
|
background-color: #39D47A;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: calc(var(--index) * var(--w));
|
||||||
|
z-index: 1;
|
||||||
|
transition: left .3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
width: var(--w);
|
||||||
|
height: inherit;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
color: #39D47A;
|
||||||
|
transition: all .1s ease-in-out .15s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
<template>
|
||||||
|
<div class="head-container">
|
||||||
|
<div class="head-container">
|
||||||
|
<el-form :model="query" inline>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary">添加酒品</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="搜索">
|
||||||
|
<el-input v-model="query.name" placeholder="酒名"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary">查询</el-button>
|
||||||
|
<el-button>重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="head-container">
|
||||||
|
<el-table :data="tableData.data" v-loading="tableData.loading"></el-table>
|
||||||
|
</div>
|
||||||
|
<addModal />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import addModal from './addModal'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
addModal
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
value: 0,
|
||||||
|
label: '已取完'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: '未取完'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
query: {
|
||||||
|
name: "",
|
||||||
|
telphone: "",
|
||||||
|
status: 1
|
||||||
|
},
|
||||||
|
tableData: {
|
||||||
|
data: [],
|
||||||
|
page: 0,
|
||||||
|
size: 10,
|
||||||
|
loading: false,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,131 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog :title="form.id ? '编辑分类' : '添加分类'" :visible.sync="dialogVisible" @close="reset">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
|
||||||
|
<el-form-item label="选择用户" prop="nickname">
|
||||||
|
<el-select v-model="form.nickname" placeholder="请输入用户昵称" filterable remote :remote-method="getTableData"
|
||||||
|
:loading="loading">
|
||||||
|
<el-option v-for="item in options" :key="item.id" :label="`${item.nickName}-${item.telephone}`"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="选择酒品">
|
||||||
|
<el-select v-model="form.index">
|
||||||
|
<el-option label="顶级" :value="1"></el-option>
|
||||||
|
<el-option label="饮品" :value="2"></el-option>
|
||||||
|
<el-option label="烤串" :value="3"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数量">
|
||||||
|
<el-input-number v-model="form.sort" controls-position="right" :min="0"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="onSubmitHandle">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { queryAllShopUser } from '@/api/shop'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
loading: false,
|
||||||
|
options: [],
|
||||||
|
form: {
|
||||||
|
id: '',
|
||||||
|
imgUrl: '',
|
||||||
|
name: '',
|
||||||
|
nickname: '',
|
||||||
|
num: '',
|
||||||
|
shopId: '',
|
||||||
|
status: '',
|
||||||
|
telphone: '',
|
||||||
|
unit: '',
|
||||||
|
userid: '',
|
||||||
|
expDay: ''
|
||||||
|
},
|
||||||
|
resetForm: '',
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: ' ',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.resetForm = { ...this.form }
|
||||||
|
this.getTableData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取用户列表
|
||||||
|
async getTableData(query = '') {
|
||||||
|
this.loading = true
|
||||||
|
try {
|
||||||
|
const res = await queryAllShopUser({
|
||||||
|
telephone: query,
|
||||||
|
})
|
||||||
|
this.loading = false
|
||||||
|
this.options = res.content
|
||||||
|
} catch (error) {
|
||||||
|
this.loading = false
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 提交
|
||||||
|
onSubmitHandle() {
|
||||||
|
console.log(this.form)
|
||||||
|
this.$refs.form.validate(async valid => {
|
||||||
|
if (valid) {
|
||||||
|
try {
|
||||||
|
this.form.shopId = localStorage.getItem('shopId')
|
||||||
|
let res = await tbShopCategoryPost(this.form, this.form.id ? 'put' : 'post')
|
||||||
|
this.$emit('success', res)
|
||||||
|
this.close()
|
||||||
|
this.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: `${this.form.id ? '编辑' : '添加'}成功`,
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
show(obj) {
|
||||||
|
// console.log(obj)
|
||||||
|
this.dialogVisible = true
|
||||||
|
if (obj.pid) {
|
||||||
|
this.form.pid = obj.pid
|
||||||
|
}
|
||||||
|
if (obj && obj.id) {
|
||||||
|
this.form = obj
|
||||||
|
if (obj.pic) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.uploadImg.fileList = [
|
||||||
|
{
|
||||||
|
url: obj.pic
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.dialogVisible = false
|
||||||
|
},
|
||||||
|
reset() {
|
||||||
|
this.form = { ...this.resetForm }
|
||||||
|
this.$refs.uploadImg.clearFiles()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
<template>
|
||||||
|
<div class="head-container">
|
||||||
|
<div class="head-container">
|
||||||
|
<el-form :model="query" inline>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary">添加存酒</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="搜索">
|
||||||
|
<el-input v-model="query.name" placeholder="酒名/用户昵称"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="手机号">
|
||||||
|
<el-input v-model="query.telphone" placeholder="手机号"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select v-model="query.status">
|
||||||
|
<el-option v-for="item in statusList" :key="item.value" :value="item.value"
|
||||||
|
:label="item.label"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary">查询</el-button>
|
||||||
|
<el-button>重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="head-container">
|
||||||
|
<el-table :data="tableData.data" v-loading="tableData.loading"></el-table>
|
||||||
|
</div>
|
||||||
|
<addModal />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import addModal from './addModal'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
addModal
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
statusList: [
|
||||||
|
{
|
||||||
|
value: 0,
|
||||||
|
label: '已取完'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: '未取完'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
query: {
|
||||||
|
name: "",
|
||||||
|
telphone: "",
|
||||||
|
status: 1
|
||||||
|
},
|
||||||
|
tableData: {
|
||||||
|
data: [],
|
||||||
|
page: 0,
|
||||||
|
size: 10,
|
||||||
|
loading: false,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
<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()
|
||||||
|
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>
|
||||||
|
|
@ -0,0 +1,154 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="header">
|
||||||
|
<div class="item">
|
||||||
|
<img :src="applocation.coverImg" class="icon">
|
||||||
|
<div class="info">
|
||||||
|
<div class="name">{{ applocation.name }}</div>
|
||||||
|
<div class="intro">
|
||||||
|
{{ applocation.value }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="head-container">
|
||||||
|
<div class="tab_wrap">
|
||||||
|
<div class="tab" :style="{ '--index': tabActive }">
|
||||||
|
<div class="item" v-for="item in tabs" :key="item.value" @click="tabChange(item)">
|
||||||
|
{{ item.label }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="head-container">
|
||||||
|
<winestorageRecord v-if="tabActive == 0" />
|
||||||
|
<wineRecord v-if="tabActive == 1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import winestorageRecord from './components/winestorage/record.vue'
|
||||||
|
import wineRecord from './components/wine/record.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
winestorageRecord,
|
||||||
|
wineRecord
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
applocation: JSON.parse(localStorage.getItem('applocation')),
|
||||||
|
tabActive: 1,
|
||||||
|
tabs: [
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: '存酒记录'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 2,
|
||||||
|
label: '可存酒管理'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 3,
|
||||||
|
label: '存酒统计'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabChange(item) {
|
||||||
|
this.tabActive = this.tabs.findIndex(i => i.value == item.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
flex: 1;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab_wrap {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 4px;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
.tab {
|
||||||
|
--w: 150px;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
width: var(--w);
|
||||||
|
height: inherit;
|
||||||
|
background-color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: calc(var(--index) * var(--w));
|
||||||
|
z-index: 1;
|
||||||
|
transition: left .3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
width: var(--w);
|
||||||
|
height: inherit;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -78,12 +78,12 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="交易日期" prop="tradeDay"></el-table-column>
|
<el-table-column label="交易日期" prop="tradeDay"></el-table-column>
|
||||||
<el-table-column label="核销员" prop="verifier"></el-table-column>
|
<el-table-column label="核销员" prop="verifier"></el-table-column>
|
||||||
<el-table-column label="操作" width="100">
|
<!-- <el-table-column label="操作" width="100">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-button type="text" icon="el-icon-edit" @click="showRefund(scope.row)"
|
<el-button type="text" icon="el-icon-edit" @click="showRefund(scope.row)"
|
||||||
:disabled="!scope.row.refundAble">退款</el-button>
|
:disabled="!scope.row.refundAble">退款</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px" label-position="left">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="140px" label-position="left">
|
||||||
<el-form-item label="商品类型" prop="typeEnum">
|
<el-form-item label="商品类型" prop="typeEnum">
|
||||||
<div class="shop_type_box" :class="{ disabled: form.id }">
|
<div class="shop_type_box" :class="{ disabled: form.id }">
|
||||||
<div class="item" v-for="(item, index) in shopTypes" :key="index"
|
<div class="item" v-for="(item, index) in shopTypes" :key="index"
|
||||||
|
|
@ -131,6 +131,43 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="tips" v-if="form.isShowMall">注:小程序商城必须设置库存数量大于0</div>
|
<div class="tips" v-if="form.isShowMall">注:小程序商城必须设置库存数量大于0</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<template v-if="form.typeEnum == 'group'">
|
||||||
|
<el-form-item label="使用日期说明" prop="notices.dateUsed">
|
||||||
|
<el-input type="textarea" v-model="form.notices.dateUsed" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;"
|
||||||
|
placeholder="请输入使用日期说明"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="可用时间说明" prop="notices.availableTime">
|
||||||
|
<el-input type="textarea" v-model="form.notices.availableTime" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;" placeholder="请输入可用时间说明
|
||||||
|
"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="预约方式" prop="notices.bookingType">
|
||||||
|
<el-input type="textarea" v-model="form.notices.bookingType" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;" placeholder="请输入预约方式
|
||||||
|
"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="退款说明" prop="notices.refundPolicy">
|
||||||
|
<el-input type="textarea" v-model="form.notices.refundPolicy" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;" placeholder="请输入退款说明
|
||||||
|
"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="团购价说明">
|
||||||
|
<el-input type="textarea" v-model="form.notices.groupPurInfo" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;"
|
||||||
|
placeholder="请输入团购价说明"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="门市价/划线价说明">
|
||||||
|
<el-input type="textarea" v-model="form.notices.marketPriceInfo" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;"
|
||||||
|
placeholder="请输入门市价/划线价说明"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="折扣说明">
|
||||||
|
<el-input type="textarea" v-model="form.notices.discountInfo" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;"
|
||||||
|
placeholder="请输入折扣说明"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发票说明">
|
||||||
|
<el-input type="textarea" v-model="form.notices.invoiceInfo" :autosize="{ minRows: 3, maxRows: 10}" style="width: 500px;"
|
||||||
|
placeholder="请输入发票说明"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="使用规则">
|
||||||
|
<Editor :minHeight="200" :value="form.notices.usageRules" v-model="form.notices.usageRules" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
<el-form-item label="选择规格" v-if="shopTypes[shopTypesActive].typeEnum == 'sku' && !form.id">
|
<el-form-item label="选择规格" v-if="shopTypes[shopTypesActive].typeEnum == 'sku' && !form.id">
|
||||||
<el-select v-model="form.specId" placeholder="请选择规格" style="width: 500px;" @change="selectSpecHandle">
|
<el-select v-model="form.specId" placeholder="请选择规格" style="width: 500px;" @change="selectSpecHandle">
|
||||||
<el-option :label="item.name" :value="item.id" v-for="item in specList" :key="item.id"></el-option>
|
<el-option :label="item.name" :value="item.id" v-for="item in specList" :key="item.id"></el-option>
|
||||||
|
|
@ -149,7 +186,6 @@
|
||||||
:key="index">
|
:key="index">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="图片" prop="coverImg" width="80">
|
<el-table-column label="图片" prop="coverImg" width="80">
|
||||||
|
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<uploadImg type="text" :limit="1" @success="res => scope.row.coverImg = res[0]"
|
<uploadImg type="text" :limit="1" @success="res => scope.row.coverImg = res[0]"
|
||||||
v-if="!scope.row.coverImg" />
|
v-if="!scope.row.coverImg" />
|
||||||
|
|
@ -287,6 +323,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Editor from '@/components/Editor'
|
||||||
import { tbShopUnit, tbShopCategoryGet, tbProductPost, tbProductSpecGet, tbProductGetDetail, tbProductPut } from "@/api/shop";
|
import { tbShopUnit, tbShopCategoryGet, tbProductPost, tbProductSpecGet, tbProductGetDetail, tbProductPut } from "@/api/shop";
|
||||||
import addUnit from './components/addUnit'
|
import addUnit from './components/addUnit'
|
||||||
import addClassify from './components/addClassify'
|
import addClassify from './components/addClassify'
|
||||||
|
|
@ -303,9 +340,18 @@ export default {
|
||||||
addClassify,
|
addClassify,
|
||||||
uploadImg,
|
uploadImg,
|
||||||
shopList,
|
shopList,
|
||||||
groupTypeList
|
groupTypeList,
|
||||||
|
Editor
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
const validatordateUsed = (rule, value, callback) => {
|
||||||
|
if (!this.form.notices.dateUsed) {
|
||||||
|
console.log('this.form.notices.dateUsed', this.form.notices.dateUsed);
|
||||||
|
callback(new Error('请输入可用时间说明'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
shopTypesActive: 0,
|
shopTypesActive: 0,
|
||||||
shopTypes: settings.typeEnum,
|
shopTypes: settings.typeEnum,
|
||||||
|
|
@ -351,7 +397,19 @@ export default {
|
||||||
selectSpec: [],
|
selectSpec: [],
|
||||||
specTableHeaders: [],
|
specTableHeaders: [],
|
||||||
skuSnap: '',
|
skuSnap: '',
|
||||||
groupCategoryId: []
|
groupCategoryId: [],
|
||||||
|
notices: {
|
||||||
|
availableTime: '',
|
||||||
|
bookingType: '',
|
||||||
|
dateUsed: '',
|
||||||
|
discountInfo: '',
|
||||||
|
groupPurInfo: '',
|
||||||
|
invoiceInfo: '',
|
||||||
|
marketPriceInfo: '',
|
||||||
|
platformTips: '',
|
||||||
|
refundPolicy: '',
|
||||||
|
usageRules: ''
|
||||||
|
}
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
typeEnum: [
|
typeEnum: [
|
||||||
|
|
@ -379,6 +437,34 @@ export default {
|
||||||
trigger: 'change',
|
trigger: 'change',
|
||||||
message: '请选择团购券分类'
|
message: '请选择团购券分类'
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
'notices.dateUsed': [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: 'blur',
|
||||||
|
message: '请输入使用日期说明'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'notices.availableTime': [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: 'blur',
|
||||||
|
message: '请输入可用时间说明'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'notices.bookingType': [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: 'blur',
|
||||||
|
message: '请输入预约方式'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'notices.refundPolicy': [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
trigger: 'blur',
|
||||||
|
message: '请输入退款说明'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
units: [],
|
units: [],
|
||||||
|
|
@ -466,6 +552,7 @@ export default {
|
||||||
},
|
},
|
||||||
// 提交
|
// 提交
|
||||||
submitHandle() {
|
submitHandle() {
|
||||||
|
console.log('form', this.form);
|
||||||
this.$refs.formRef.validate(async faild => {
|
this.$refs.formRef.validate(async faild => {
|
||||||
try {
|
try {
|
||||||
if (faild) {
|
if (faild) {
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,16 @@
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-form :model="query" inline>
|
<el-form :model="query" inline>
|
||||||
<el-form-item>
|
<el-form-item label="搜索">
|
||||||
<el-input v-model="query.telephone" placeholder="请输入手机号"></el-input>
|
<el-input v-model="query.telephone" placeholder="请输入手机号"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="是否为会员">
|
||||||
|
<el-select v-model="query.isVip" placeholder="是否是会员">
|
||||||
|
<el-option value="" label="全部"></el-option>
|
||||||
|
<el-option :value="1" label="是"></el-option>
|
||||||
|
<el-option :value="0" label="否"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="getTableData">查询</el-button>
|
<el-button type="primary" @click="getTableData">查询</el-button>
|
||||||
<el-button @click="resetHandle">重置</el-button>
|
<el-button @click="resetHandle">重置</el-button>
|
||||||
|
|
@ -16,7 +23,7 @@
|
||||||
添加活动
|
添加活动
|
||||||
</el-button>
|
</el-button>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div class="head-container">
|
<!-- <div class="head-container">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="title">统计数据</div>
|
<div class="title">统计数据</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
@ -38,7 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-table :data="tableData.data" v-loading="tableData.loading">
|
<el-table :data="tableData.data" v-loading="tableData.loading">
|
||||||
<el-table-column label="ID" prop="id"></el-table-column>
|
<el-table-column label="ID" prop="id"></el-table-column>
|
||||||
|
|
@ -93,7 +100,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
||||||
@current-change="paginationChange" layout="total"></el-pagination>
|
@current-change="paginationChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -105,7 +112,8 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
query: {
|
query: {
|
||||||
telephone: ''
|
telephone: '',
|
||||||
|
isVip: ''
|
||||||
},
|
},
|
||||||
tableData: {
|
tableData: {
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -154,7 +162,7 @@ export default {
|
||||||
try {
|
try {
|
||||||
const res = await queryAllShopUser({
|
const res = await queryAllShopUser({
|
||||||
telephone: this.query.telephone,
|
telephone: this.query.telephone,
|
||||||
isVip: 0
|
isVip: this.query.isVip
|
||||||
})
|
})
|
||||||
this.tableData.loading = false
|
this.tableData.loading = false
|
||||||
this.tableData.data = res.content
|
this.tableData.data = res.content
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue