Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c2f934d3a |
@@ -1,20 +1,12 @@
|
|||||||
ENV = 'development'
|
ENV = 'development'
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.202:8000'
|
# VUE_APP_BASE_API = 'http://192.168.2.128:8000'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.42: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://pre-cashieradmin.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.98:8000'
|
||||||
# 张松
|
VUE_APP_BASE_API = 'http://admintestpapi.sxczgkj.cn'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.147:8000/'
|
|
||||||
VUE_APP_WS_API = 'ws://192.168.2.128:8000'
|
VUE_APP_WS_API = 'ws://192.168.2.128:8000'
|
||||||
|
|
||||||
VUE_APP_PHP_API = 'https://kysh.sxczgkj.cn'
|
# 是否启用 babel-plugin-dynamic-import-node插件
|
||||||
# 是否启用 babel-plugin-dynamic-import-node插
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
|||||||
@@ -2,17 +2,7 @@ ENV = 'production'
|
|||||||
|
|
||||||
# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置
|
# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置
|
||||||
# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http
|
# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http
|
||||||
# 测试
|
VUE_APP_BASE_API = 'https://cashieradmin.sxczgkj.cn'
|
||||||
VUE_APP_BASE_API = 'https://admintestpapi.sxczgkj.cn'
|
|
||||||
|
|
||||||
# 生产
|
|
||||||
# VUE_APP_BASE_API = 'https://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
|
||||||
VUE_APP_WS_API = 'wss://123.56.110.252'
|
VUE_APP_WS_API = 'wss://123.56.110.252
|
||||||
|
|
||||||
VUE_APP_PHP_API = 'https://kysh.sxczgkj.cn/source'
|
|
||||||
|
|||||||
@@ -38,13 +38,6 @@ npm run build:prod
|
|||||||
|
|
||||||
#### 常见问题
|
#### 常见问题
|
||||||
|
|
||||||
0、运行报错
|
|
||||||
解决方案:
|
|
||||||
```
|
|
||||||
$env:NODE_OPTIONS="--openssl-legacy-provider"
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
1、linux 系统在安装依赖的时候会出现 node-sass 无法安装的问题
|
1、linux 系统在安装依赖的时候会出现 node-sass 无法安装的问题
|
||||||
|
|
||||||
解决方案:
|
解决方案:
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@riophae/vue-treeselect": "^0.4.0",
|
"@riophae/vue-treeselect": "^0.4.0",
|
||||||
"ali-oss": "^6.21.0",
|
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"clipboard": "2.0.4",
|
"clipboard": "2.0.4",
|
||||||
"codemirror": "^5.49.2",
|
"codemirror": "^5.49.2",
|
||||||
@@ -37,21 +36,16 @@
|
|||||||
"fuse.js": "3.4.4",
|
"fuse.js": "3.4.4",
|
||||||
"js-beautify": "^1.10.2",
|
"js-beautify": "^1.10.2",
|
||||||
"js-cookie": "2.2.0",
|
"js-cookie": "2.2.0",
|
||||||
"js-md5": "^0.8.3",
|
|
||||||
"jsencrypt": "^3.0.0-rc.1",
|
"jsencrypt": "^3.0.0-rc.1",
|
||||||
"jszip": "^3.7.1",
|
"jszip": "^3.7.1",
|
||||||
"lodash": "^4.17.21",
|
|
||||||
"material-components-vue": "^1.2.0",
|
"material-components-vue": "^1.2.0",
|
||||||
"mavon-editor": "^2.9.1",
|
"mavon-editor": "^2.9.1",
|
||||||
"normalize.css": "7.0.0",
|
"normalize.css": "7.0.0",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"path-to-regexp": "2.4.0",
|
"path-to-regexp": "2.4.0",
|
||||||
"qrcode": "^1.5.3",
|
|
||||||
"qs": "^6.10.1",
|
"qs": "^6.10.1",
|
||||||
"reconnecting-websocket": "^4.4.0",
|
|
||||||
"screenfull": "4.2.0",
|
"screenfull": "4.2.0",
|
||||||
"sortablejs": "^1.15.2",
|
"sortablejs": "1.8.4",
|
||||||
"terser-webpack-plugin": "^4.2.3",
|
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-amap": "^0.5.10",
|
"vue-amap": "^0.5.10",
|
||||||
"vue-clipboard2": "^0.3.3",
|
"vue-clipboard2": "^0.3.3",
|
||||||
@@ -84,7 +78,6 @@
|
|||||||
"babel-jest": "23.6.0",
|
"babel-jest": "23.6.0",
|
||||||
"babel-plugin-dynamic-import-node": "2.3.0",
|
"babel-plugin-dynamic-import-node": "2.3.0",
|
||||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||||
"cache-loader": "^4.1.0",
|
|
||||||
"chalk": "2.4.2",
|
"chalk": "2.4.2",
|
||||||
"chokidar": "2.1.5",
|
"chokidar": "2.1.5",
|
||||||
"compression-webpack-plugin": "5.0.2",
|
"compression-webpack-plugin": "5.0.2",
|
||||||
|
|||||||
@@ -5,9 +5,6 @@
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<meta name="renderer" content="webkit">
|
<meta name="renderer" content="webkit">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
<meta http-equiv="pragram" content="no-cache">
|
|
||||||
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
|
|
||||||
<meta http-equiv="expires" content="0">
|
|
||||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
<title><%= webpackConfig.name %></title>
|
<title><%= webpackConfig.name %></title>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|||||||
13
src/App.vue
@@ -15,13 +15,12 @@ export default {
|
|||||||
高宽分别对应横竖滚动条的尺寸*/
|
高宽分别对应横竖滚动条的尺寸*/
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 4px;
|
width: 4px;
|
||||||
height: 4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*定义滚动条轨道
|
/*定义滚动条轨道
|
||||||
内阴影+圆角*/
|
内阴影+圆角*/
|
||||||
::-webkit-scrollbar-track {
|
::-webkit-scrollbar-track {
|
||||||
background-color: #f5f5f5;
|
background-color: #F5F5F5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*定义滑块
|
/*定义滑块
|
||||||
@@ -131,14 +130,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-slot {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: #efefef;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
// 代客下单
|
|
||||||
import request from "@/utils/request";
|
|
||||||
//就餐形式,默认堂食后付费
|
|
||||||
const useType = 'dine-in-after'
|
|
||||||
function getUseType() {
|
|
||||||
const type = localStorage.getItem("useType")
|
|
||||||
return type ? type : useType
|
|
||||||
}
|
|
||||||
|
|
||||||
// 购物车-临时菜添加
|
|
||||||
export function $temporaryDishes(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/temporaryDishes',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 购物车-单品改价
|
|
||||||
export function $updatePrice(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/updatePrice',
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 购物车-转桌/并桌
|
|
||||||
*/
|
|
||||||
export function placeswitch(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/switch`,
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: localStorage.getItem("useType"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 团购券-获取可使用团购券列表
|
|
||||||
|
|
||||||
export function $thirdPartyCoupon(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/thirdPartyCoupon/list',
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//核销团购券商品
|
|
||||||
export function $checkCoupon(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/checkCoupon',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//整体等叫/取消等叫
|
|
||||||
export function $waitCall(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/waitCall',
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
useType: getUseType(),
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询歌曲列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopSonglist(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSong",
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 新增歌曲
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopSongAdd(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSong",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改歌曲
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopSongEdit(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSong",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 删除歌曲
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopSongDel(ids) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopSong',
|
|
||||||
method: 'delete',
|
|
||||||
data: ids
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,232 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 开票
|
|
||||||
export function getbinding(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/invoice/binding",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 提交开票
|
|
||||||
export function getsubInvoicing(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/invoice/subInvoicing",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 获取数电发票类型
|
|
||||||
export function getdigitalInvoice(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/invoice/digitalInvoice",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 获取项目分类
|
|
||||||
export function getindustry(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/invoice/industry",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 计算税额
|
|
||||||
export function getstoreSe(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/invoice/storeSe",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
is_tax:1,
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 获取应用中心列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function appCenterGet(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/appCenter",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增/编辑酒品
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopStorageGood(data, method = "post") {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopStorageGood",
|
|
||||||
method: method,
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询酒品列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopStorageGoodlist(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopStorageGood/list",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增存酒
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function storageWin(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/storage",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询存酒列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function storageList(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/storage/list",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 存取酒
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function storagePut(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/storage",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询存取酒记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function recordList(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/storage/recordList",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 存酒统计
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function countRecord(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/storage/countRecord",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...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",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
|
|
||||||
import request from '@/utils/request'
|
|
||||||
export function get(params) {
|
|
||||||
return request({
|
|
||||||
url: '/freeDine',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export function add(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/botUser',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function del(ids) {
|
|
||||||
return request({
|
|
||||||
url: 'api/botUser/',
|
|
||||||
method: 'delete',
|
|
||||||
data: ids
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function edit(data) {
|
|
||||||
return request({
|
|
||||||
url: '/freeDine',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export default { add, edit, del, get }
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
class API {
|
|
||||||
constructor(url, req) {
|
|
||||||
const map = {
|
|
||||||
add: 'POST',
|
|
||||||
del: 'DELETE',
|
|
||||||
update: 'PUT',
|
|
||||||
get: 'GET'
|
|
||||||
}
|
|
||||||
this.url = url
|
|
||||||
for (let key in map) {
|
|
||||||
this[key] = function (data) {
|
|
||||||
data = Array.isArray(data) ? data : {
|
|
||||||
...data, shopId: localStorage.getItem("shopId"),
|
|
||||||
}
|
|
||||||
if (key === 'del') {
|
|
||||||
delete data.shopId
|
|
||||||
}
|
|
||||||
const par={ url, method: map[key] }
|
|
||||||
if(key==='get'){
|
|
||||||
par.params=data
|
|
||||||
}else{
|
|
||||||
par.data=data
|
|
||||||
}
|
|
||||||
return request(par)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default API
|
|
||||||
@@ -1,230 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询耗材类型
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function gettbConsType(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsType",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增耗材类型
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function posttbConsType(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsType",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 修改耗材类型
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function puttbConsType(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsType",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 查询耗材信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function gettbConsInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo/allAndPro",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 耗材入库
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function posttbConsInfostockIn(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo/stockIn",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 修改单位耗材值耗材
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function postapitbConsInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 新增耗材信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function posttbConsInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询查询耗材规格信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getviewConSku(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/viewConSku",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 查询查询商品规格
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function gettbProductSpec(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/viewProductSkuShop",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 新增商品规格耗材信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function posttbProskuCon(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProskuCon",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 新增商品规格耗材信息-修改后
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function posttbProskuCons(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProskuCon",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 修改商品规格耗材信息状态
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function puttbProskuCon(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProskuCon",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 编辑单位耗材值
|
|
||||||
// export function puttbProskuCon(data) {
|
|
||||||
// return request({
|
|
||||||
// url: '/api/tbProskuCon',
|
|
||||||
// method: "put",
|
|
||||||
// data
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
/**
|
|
||||||
* 删除商品规格耗材信息状态
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function deletetbProskuCon(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProskuCon",
|
|
||||||
method: "delete",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询耗材单位列表
|
|
||||||
*/
|
|
||||||
export function queryTbConUnitInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConUnit/queryTbConUnitInfo",
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增耗材单位
|
|
||||||
*/
|
|
||||||
export function addtbConUnit(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConUnit",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改耗材单位
|
|
||||||
*/
|
|
||||||
export function edittbConUnit(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConUnit",
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定关系
|
|
||||||
*/
|
|
||||||
export function tbProskuConV2(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProskuCon/V2",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 耗材库存统计
|
|
||||||
*/
|
|
||||||
export function tbConsInfoFlowcount(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfoFlow/count",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 耗材库存记录列表
|
|
||||||
*/
|
|
||||||
export function tbConsInfoFlowstock(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfoFlow/stock",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
// 代客下单
|
|
||||||
import request from "@/utils/request-php";
|
|
||||||
import { getToken } from '@/utils/auth'
|
|
||||||
function getLoginName() {
|
|
||||||
const obj = localStorage.getItem("userInfo") || '';
|
|
||||||
const { username } = obj ? JSON.parse(obj) : {};
|
|
||||||
return username
|
|
||||||
}
|
|
||||||
// 抖音团购核销准备
|
|
||||||
export function $douyin_fulfilmentcertificateprepare(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/fulfilmentcertificateprepare',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 抖音团购核销
|
|
||||||
export function $douyin_certificateprepare(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/certificateprepare',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 抖音团购核销撤销
|
|
||||||
export function $douyin_fulfilmentcertificatecancel(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/fulfilmentcertificatecancel',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 抖音团购核销记录
|
|
||||||
export function $douyin_orderlist(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/orderlist',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 抖音门店列表
|
|
||||||
export function $douyin_storelist(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/storelist',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 抖音绑定门店
|
|
||||||
export function $douyin_bindstore(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/bindstore',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 抖音订单查询
|
|
||||||
|
|
||||||
export function $douyin_orderquery(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/orderquery',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//会员签入
|
|
||||||
export function $douyin_checkIn(data) {
|
|
||||||
return request({
|
|
||||||
url: 'douyin/checkIn',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
clientType: 'ADMIN',
|
|
||||||
token: getToken(),
|
|
||||||
loginName: getLoginName(),
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//美团
|
|
||||||
|
|
||||||
// 美团获取uisdk 绑定 链接
|
|
||||||
|
|
||||||
export function $meituan_getuisdkurl(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/getuisdkurl',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 美团获取uisdk 解绑 链接
|
|
||||||
|
|
||||||
export function $meituan_getuisdkuniurl(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/getuisdkuniurl',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 美团团购核销准备
|
|
||||||
|
|
||||||
export function $meituan_fulfilmentcertificateprepare(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/fulfilmentcertificateprepare',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 美团执行核销
|
|
||||||
|
|
||||||
export function $meituan_certificateprepare(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/certificateprepare',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 美团团购核销记录
|
|
||||||
|
|
||||||
|
|
||||||
export function $meituan_orderlist(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/orderlist',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 美团团购撤销
|
|
||||||
|
|
||||||
|
|
||||||
export function $meituan_fulfilmentcertificatecancel(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/fulfilmentcertificatecancel',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 美团查询绑定状态
|
|
||||||
export function $meituan_searchstorestatus(data) {
|
|
||||||
return request({
|
|
||||||
url: 'meituan/searchstorestatus',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 登出
|
|
||||||
export function $logout(data) {
|
|
||||||
return request({
|
|
||||||
url: 'user/logout',
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取优惠券列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getTbShopCoupon(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon',
|
|
||||||
method: 'get',
|
|
||||||
params: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取优惠券详情
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getTbShopCouponInfo(id) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon/' + id,
|
|
||||||
method: 'get',
|
|
||||||
params: {}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 增加优惠券
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function addTbShopCoupon(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除优惠券
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function delTbShopCoupon(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon',
|
|
||||||
method: 'delete',
|
|
||||||
data: params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领取列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function queryReceive(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon/queryReceive',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取领取列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function delReceive(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon/receive',
|
|
||||||
method: 'delete',
|
|
||||||
data: params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取挂账人列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getCreditBuyerList(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer/page',
|
|
||||||
method: 'get',
|
|
||||||
params: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取挂账人详情
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getCreditBuyerInfo(id) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer/' + id,
|
|
||||||
method: 'get',
|
|
||||||
params: {}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 增加挂账人
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function addCreditBuyer(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 编辑挂账人
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function editCreditBuyer(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 还款
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function creditRePayment(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer/repayment',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取还款记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function creditRePaymentRecord(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/payment-record/page',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除挂账人
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function delCreditBuyer(id) {
|
|
||||||
return request({
|
|
||||||
url: `/api/credit/buyer/${id}`,
|
|
||||||
method: 'delete'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 挂账人-查看明细
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function creditBuyerOrderList(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer-order/page',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 挂账人-查看明细-统计
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function creditBuyerOrderSummary(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer-order/summary',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 挂账人-查看明细-付款
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function creditPayment(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/credit/buyer-order/pay',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 增加打印机
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbPrintMachine(data, method = 'post') {
|
export function tbPrintMachine(data, method = 'post') {
|
||||||
@@ -14,58 +14,19 @@ export function tbPrintMachine(data, method = 'post') {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 打印机切换
|
|
||||||
export function switchtbPrintMachine(data, method = 'post') {
|
|
||||||
return request({
|
|
||||||
url: '/api/shop-config/printer/update-status',
|
|
||||||
method: method,
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem('shopId'),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 打印机部分
|
|
||||||
export function tbShopCategory(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCategory',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 打印机列表
|
* 打印机列表
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbPrintMachineGet(params) {
|
export function tbPrintMachineGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/shop-config/printer/list',
|
url: '/api/tbPrintMachine',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
|
shopId: localStorage.getItem('shopId'),
|
||||||
|
sort: '',
|
||||||
...params
|
...params
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 删除
|
|
||||||
export function delTableHandle(id) {
|
|
||||||
return request({
|
|
||||||
url: '/api/shop-config/printer/' + id,
|
|
||||||
method: 'DELETE',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// * 打印机详情
|
|
||||||
export function printerd(id) {
|
|
||||||
return request({
|
|
||||||
url: '/api/shop-config/printer/' + id,
|
|
||||||
method: 'get',
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 编辑 新增打印机
|
|
||||||
export function configprinter(data, method = "post") {
|
|
||||||
return request({
|
|
||||||
url: `/api/shop-config/printer`,
|
|
||||||
method: method,
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
import editor from "mavon-editor";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopExtend(params) {
|
|
||||||
return request({
|
|
||||||
url: "/tbShopExtend",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增单位
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function addtbShopExtend(data) {
|
|
||||||
return request({
|
|
||||||
url: `/tbShopExtend`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 编辑详情
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function edittbShopExtend(data) {
|
|
||||||
return request({
|
|
||||||
url: '/tbShopExtend',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 查询详情
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function querytbShopExtend(params) {
|
|
||||||
return request({
|
|
||||||
url: `/tbShopExtend/` + params,
|
|
||||||
method: "get",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 删除商品
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function deletetbShopExtend(params) {
|
|
||||||
return request({
|
|
||||||
url: "/tbShopExtend",
|
|
||||||
method: "delete",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
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",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
163
src/api/home.js
@@ -1,17 +1,17 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 汇总数据
|
* 汇总数据
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function summaryGet() {
|
export function summaryGet() {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary",
|
url: '/api/summary',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId")
|
shopId: localStorage.getItem('shopId')
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,13 +19,13 @@ export function summaryGet() {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function summaryTodayGet() {
|
export function summaryTodayGet() {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/today",
|
url: '/api/summary/today',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId")
|
shopId: localStorage.getItem('shopId')
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,14 +33,14 @@ export function summaryTodayGet() {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function summaryDateGet(day) {
|
export function summaryDateGet(day) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/date",
|
url: '/api/summary/date',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
day: day
|
day: day
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,14 +48,14 @@ export function summaryDateGet(day) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function dateAmount(day) {
|
export function dateAmount(day) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/dateAmount",
|
url: '/api/summary/dateAmount',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
day: day
|
day: day
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,17 +63,16 @@ export function dateAmount(day) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function dateProduct(day, page, size) {
|
export function dateProduct(day, page, size) {
|
||||||
return request({
|
return request({
|
||||||
// url: "/api/summary/dateProduct",
|
url: '/api/summary/dateProduct',
|
||||||
url: "/api/summary/productSaleDate",
|
method: 'get',
|
||||||
method: "get",
|
params: {
|
||||||
params: {
|
shopId: localStorage.getItem('shopId'),
|
||||||
shopId: localStorage.getItem("shopId"),
|
day: day,
|
||||||
day: day,
|
page: page,
|
||||||
page: page,
|
size: size
|
||||||
size: size
|
}
|
||||||
}
|
})
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,14 +80,14 @@ export function dateProduct(day, page, size) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function datePayType(day) {
|
export function datePayType(day) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/datePayType",
|
url: '/api/summary/datePayType',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
day: day
|
day: day
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,15 +95,15 @@ export function datePayType(day) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function daydownload(data) {
|
export function daydownload(data) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/day/download",
|
url: '/api/summary/day/download',
|
||||||
method: "post",
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
...data
|
...data
|
||||||
},
|
},
|
||||||
responseType: "blob"
|
responseType: 'blob'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,14 +111,14 @@ export function daydownload(data) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function daycount(params) {
|
export function daycount(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/day/count",
|
url: '/api/summary/day/count',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
...params
|
...params
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -127,27 +126,13 @@ export function daycount(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function summaryday(params) {
|
export function summaryday(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/summary/day",
|
url: '/api/summary/day',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
...params
|
...params
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 营业板块
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function summarytrade(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/summary/trade",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询交班记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbHandoverGet(leng) {
|
|
||||||
return request({
|
|
||||||
url: leng,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
import request from "@/utils/requestPhp";
|
|
||||||
|
|
||||||
// 获取图片分类
|
|
||||||
export function getcommonCategor(data) {
|
|
||||||
return request({
|
|
||||||
url: `/sourcematerial/getcommon-category`,
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 获取图片
|
|
||||||
export function getcommonpicture(data) {
|
|
||||||
return request({
|
|
||||||
url: "/sourcematerial/getcommon-picture",
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function storeAddcategory(data) {
|
|
||||||
return request({
|
|
||||||
url: '/sourcematerial/store-addcategory',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export function addImg(data) {
|
|
||||||
return request({
|
|
||||||
url: '/sourcematerial/add-img',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 删除图片
|
|
||||||
export function delimg(data) {
|
|
||||||
return request({
|
|
||||||
url: '/sourcematerial/delimg',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 删除类型
|
|
||||||
export function delcate(data) {
|
|
||||||
return request({
|
|
||||||
url: '/sourcematerial/delcate',
|
|
||||||
method: 'post',
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取店铺设置
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function byShopId() {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/tbShopShare/byShopId`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: shopId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分享-新增/编辑
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopShare(data) {
|
|
||||||
return request({
|
|
||||||
url: "/tbShopShare",
|
|
||||||
method: data.id ? "put" : "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 邀请记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function byShare(data) {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/tbShopShare/byShare`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: shopId,
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,44 +1,27 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品列表
|
* 商品列表
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductGet(params) {
|
export function tbProductGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbProduct",
|
url: '/api/tbProduct',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
|
||||||
export function tbProductlist(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbProduct/list",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 商品分类列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopCategoryGet(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopCategory`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进销存类型字典
|
* 进销存类型字典
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function dictDetail(params) {
|
export function dictDetail(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/dictDetail`,
|
url: `/api/dictDetail`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,11 +29,11 @@ export function dictDetail(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductStockDetail(data) {
|
export function tbProductStockDetail(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductStockDetail/stock`,
|
url: `/api/tbProductStockDetail/stock`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,11 +41,11 @@ export function tbProductStockDetail(data) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductStockDetailSum(params) {
|
export function tbProductStockDetailSum(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductStockDetail/sum`,
|
url: `/api/tbProductStockDetail/sum`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,30 +53,23 @@ export function tbProductStockDetailSum(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPurveyorGet(params) {
|
export function tbShopPurveyorGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopPurveyorTransact`,
|
url: `/api/tbShopPurveyor`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
|
||||||
// 供应商列表1
|
|
||||||
export function tbShopPurveyorGets(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopPurveyorTransact`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加供应商
|
* 增加供应商
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPurveyor(data, method = "post") {
|
export function tbShopPurveyor(data, method = 'post') {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopPurveyor`,
|
url: `/api/tbShopPurveyor`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,11 +77,11 @@ export function tbShopPurveyor(data, method = "post") {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPurveyorTransactGet(params) {
|
export function tbShopPurveyorTransactGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopPurveyorTransact`,
|
url: `/api/tbShopPurveyorTransact`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -113,30 +89,23 @@ export function tbShopPurveyorTransactGet(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPurveyorTransactInfo(data) {
|
export function tbShopPurveyorTransactInfo(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopPurveyorTransact/info`,
|
url: `/api/tbShopPurveyorTransact/info`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
|
||||||
// 付款
|
|
||||||
export function paidAmount(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopPurveyorTransact/payTransact`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进货账目汇总(单一供应商)
|
* 进货账目汇总(单一供应商)
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPurveyorTransactSum(params) {
|
export function tbShopPurveyorTransactSum(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopPurveyorTransact/sum`,
|
url: `/api/tbShopPurveyorTransact/sum`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -144,11 +113,11 @@ export function tbShopPurveyorTransactSum(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductStockOperateList(data) {
|
export function tbProductStockOperateList(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductStockOperate/list`,
|
url: `/api/tbProductStockOperate/list`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -156,10 +125,10 @@ export function tbProductStockOperateList(data) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductStockOperateDetail(id) {
|
export function tbProductStockOperateDetail(id) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductStockOperate/${id}`,
|
url: `/api/tbProductStockOperate/${id}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,259 +136,11 @@ export function tbProductStockOperateDetail(id) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbProductStockOperateOutAndOn(data) {
|
export function tbProductStockOperateOutAndOn(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductStockOperate/outAndOn`,
|
url: `/api/tbProductStockOperate/outAndOn`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
|
||||||
// 副单位
|
|
||||||
export function unittbConsInfo(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbConsInfo`,
|
|
||||||
method: "put",
|
|
||||||
data: params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 库存列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function stock(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/v2`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 库存列表子集列表
|
|
||||||
export function stocks(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/sku`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 导出数据
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function stockdownload(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/stock/download/v2",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
responseType: "blob"
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出数据
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function stockdoImport(file) {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append("file", file);
|
|
||||||
formData.append("shopId", localStorage.getItem("shopId"));
|
|
||||||
return request({
|
|
||||||
url: "/api/stock/doImport/v2",
|
|
||||||
method: "post",
|
|
||||||
data: formData,
|
|
||||||
Headers: {
|
|
||||||
"Content-Type": "multipart/form-data"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 库存开关
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function stockStateChange(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/isStock`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 下架
|
|
||||||
export function stockStateChangess(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/grounding`,
|
|
||||||
method: "put",
|
|
||||||
params: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 警戒设置
|
|
||||||
export function stockStatewarnLine(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/warnLine`,
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 共享库存
|
|
||||||
export function stockStateChanges(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/productStatus`,
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增盘点
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbProductStocktakin(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductStocktakin`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 盘点记录查询
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbProductStocktakinGet(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductStocktakin`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 账单付款记录
|
|
||||||
export function tbShopPurveyorTransacttransactPayInfos(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopPurveyorTransact/transactPayInfos`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询耗材信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbConsInfoGet(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbConsInfo`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 耗材出入库
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function stockInOut(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbConsInfo/stockInOut`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增盘点耗材
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbConCheck(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbConCheck`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询盘点耗材
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbConCheckGet(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbConCheck`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 耗材导出
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbConsInfodownload(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo/download",
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
responseType: "blob"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入耗材
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbConsInfoinputStock(file) {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append("file", file);
|
|
||||||
formData.append("shopId", localStorage.getItem("shopId"));
|
|
||||||
return request({
|
|
||||||
url: "/api/tbConsInfo/inputStock",
|
|
||||||
method: "post",
|
|
||||||
data: formData,
|
|
||||||
Headers: {
|
|
||||||
"Content-Type": "multipart/form-data"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 供应商出入库记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbProductStockOperatepage(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductStockOperate/page`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,58 +1,35 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
export function login(data) {
|
export function login(username, password, code, uuid) {
|
||||||
return request({
|
return request({
|
||||||
url: "auth/login",
|
url: 'auth/login',
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data: {
|
||||||
});
|
username,
|
||||||
|
password,
|
||||||
|
code,
|
||||||
|
uuid
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getInfo() {
|
export function getInfo() {
|
||||||
return request({
|
return request({
|
||||||
url: "auth/info",
|
url: 'auth/info',
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
|
||||||
|
|
||||||
export function changChildShop(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopInfo/changChildShop",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCodeImg(header) {
|
export function getCodeImg(header) {
|
||||||
return request({
|
return request({
|
||||||
url: "auth/code",
|
url: 'auth/code',
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
|
||||||
export function getqueryChildShop(params) {
|
|
||||||
return request({
|
|
||||||
url: "api/tbShopInfo/queryChildShop",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function logout() {
|
export function logout() {
|
||||||
return request({
|
return request({
|
||||||
url: "auth/logout",
|
url: 'auth/logout',
|
||||||
method: "delete"
|
method: 'delete'
|
||||||
});
|
})
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中心 修改密码
|
|
||||||
* @param {*} data
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function updatePass(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/users/updatePass",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
|
|
||||||
// 推送店铺消息开关
|
|
||||||
export function shopState(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/msg/shopState",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function msgall(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/msg/all",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function msginfo(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/msg/info',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export function state(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/msg/state",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function delmsg(ids) {
|
|
||||||
return request({
|
|
||||||
url: '/api/msg',
|
|
||||||
method: 'delete',
|
|
||||||
data: ids
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取订阅二维码
|
|
||||||
export function subQrCode(params) {
|
|
||||||
return request({
|
|
||||||
url: '/api/msg/subQrCode',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
107
src/api/order.js
@@ -1,92 +1,63 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单
|
* 查询订单
|
||||||
* @param {*} data
|
* @param {*} data
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbOrderInfoData(data) {
|
export function tbOrderInfoData(data) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbOrderInfo/date",
|
url: '/api/tbOrderInfo/date',
|
||||||
method: "post",
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
...data
|
...data
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出数据
|
* 导出数据
|
||||||
* @param {*} data
|
* @param {*} data
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbOrderInfoDownload(data) {
|
export function tbOrderInfoDownload(data) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbOrderInfo/download",
|
url: '/api/tbOrderInfo/download',
|
||||||
method: "post",
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
...data
|
...data
|
||||||
},
|
},
|
||||||
responseType: "blob"
|
responseType: 'blob'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过Id查询订单
|
* 通过Id查询订单
|
||||||
* @param {*} id
|
* @param {*} id
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbOrderInfoDetail(id) {
|
export function tbOrderInfoDetail(id) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbOrderInfo/${id}`,
|
url: `/api/tbOrderInfo/${id}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过Id查询订单
|
* 通过Id查询订单
|
||||||
* @param {*} createdAt
|
* @param {*} createdAt
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function payCount(createdAt) {
|
export function payCount(createdAt) {
|
||||||
console.log(createdAt);
|
console.log(createdAt);
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbOrderInfo/payCount`,
|
url: `/api/tbOrderInfo/payCount`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
shopId: localStorage.getItem("shopId"),
|
shopId: localStorage.getItem('shopId'),
|
||||||
createdAt: createdAt
|
createdAt: createdAt
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单列表
|
|
||||||
* @param {*} createdAt
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbGroupOrderInfo(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbGroupOrderInfo`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 退单
|
|
||||||
* @param {*} data
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function returnGpOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbGroupOrderInfo/returnGpOrder`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pad商品版式布局列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function layoutlist(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/pad/layout/list",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新建
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productGroup(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/pad/productCategory",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pad点餐列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productGrouppage(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/pad/productCategory/page",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取详情
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productCategoryDetail(id) {
|
|
||||||
return request({
|
|
||||||
url: `/api/pad/productCategory/${id}`,
|
|
||||||
method: "get"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productCategoryDelete(id) {
|
|
||||||
return request({
|
|
||||||
url: `/api/pad/productCategory/${id}`,
|
|
||||||
method: "DELETE"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productGroupPut(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/pad/productCategory",
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拖动排序
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function productCategorySort(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/pad/productCategory/sort",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
// 会员积分
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 基本设置-获取店铺设置
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function basicSettingGet() {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/api/points/basic-setting/${shopId}`,
|
|
||||||
method: "get"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 基本设置-保存
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function basicSettingPost(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/points/basic-setting",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品设置-新增/编辑
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function goodsSettingAdd(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/points/goods-setting",
|
|
||||||
method: data.id ? "put" : "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品设置-删除
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function goodsDelete(id) {
|
|
||||||
return request({
|
|
||||||
url: `/api/points/goods-setting/${id}`,
|
|
||||||
method: "DELETE"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品设置-列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function goodsSettingPage(params) {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/api/points/goods-setting/page`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
...params,
|
|
||||||
shopId: shopId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 兑换记录-列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function exchangeRecordPage(params) {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/api/points/exchange-record/page`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
...params,
|
|
||||||
shopId: shopId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 兑换记录-统计
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function exchangeRecordTotal(params) {
|
|
||||||
let shopId = localStorage.getItem("shopId");
|
|
||||||
return request({
|
|
||||||
url: `/api/points/exchange-record/total`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
...params,
|
|
||||||
shopId: shopId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 兑换记录-核销
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function recordCheckout(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/points/exchange-record/checkout",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
import request from "@/utils/request";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码
|
|
||||||
*/
|
|
||||||
export function sendMsg(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbUserInfo/sendMsg",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 提交表单
|
|
||||||
export function modfiyUserInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbUserInfo/modfiyUserInfo",
|
|
||||||
method: "post",
|
|
||||||
data,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 校验安全密码
|
|
||||||
export function tbShopInfoPUT(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopInfo",
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,135 +1,39 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式
|
* 支付方式
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPayTypeGet(params) {
|
export function tbShopPayTypeGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbShopPayType",
|
url: '/api/tbShopPayType',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
// 同步数据提交
|
|
||||||
export function getsync(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSyncInfo/sync",
|
|
||||||
method: "post",
|
|
||||||
data,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 撤销同步
|
|
||||||
export function setclear(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSyncInfo/clear",
|
|
||||||
method: "post",
|
|
||||||
data,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 同步数据列表
|
|
||||||
export function gettbShopSyncInfo(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbShopSyncInfo",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更改/增加支付方式
|
* 更改/增加支付方式
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopPayType(data, method = "post") {
|
export function tbShopPayType(data, method = 'post') {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbShopPayType",
|
url: '/api/tbShopPayType',
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增删改查新增字典
|
* 增删改查新增字典
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function dict(data, method = "get") {
|
export function dict(data, method = 'get') {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/dict",
|
url: '/api/dict',
|
||||||
method: method,
|
method: method,
|
||||||
data: data,
|
data: data,
|
||||||
params: data
|
params: data
|
||||||
});
|
})
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改字典
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function dictPut(data) {
|
|
||||||
return request({
|
|
||||||
url: "/api/dict",
|
|
||||||
method: "put",
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增/编辑资源
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlatformDictPostPut(data, method = "post") {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbPlatformDict",
|
|
||||||
method: method,
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 资源列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlatformDictGet(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbPlatformDict",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增团购卷分类
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbCouponCategoryPostPut(data, method = "post") {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbCouponCategory",
|
|
||||||
method: method,
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询团购卷分类
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbCouponCategoryGet(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbCouponCategory",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询资源类别列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlatformDictType(params) {
|
|
||||||
return request({
|
|
||||||
url: "/api/tbPlatformDictType",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|||||||
543
src/api/shop.js
@@ -1,4 +1,4 @@
|
|||||||
import request from "@/utils/request";
|
import request from '@/utils/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品列表
|
* 商品列表
|
||||||
@@ -6,10 +6,10 @@ import request from "@/utils/request";
|
|||||||
*/
|
*/
|
||||||
export function tbProduct(params) {
|
export function tbProduct(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbProduct/list",
|
url: '/api/tbProduct',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,10 +18,10 @@ export function tbProduct(params) {
|
|||||||
*/
|
*/
|
||||||
export function tbProductDelete(data) {
|
export function tbProductDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbProduct",
|
url: '/api/tbProduct',
|
||||||
method: "delete",
|
method: 'delete',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,10 +30,10 @@ export function tbProductDelete(data) {
|
|||||||
*/
|
*/
|
||||||
export function tbShopUnit(params) {
|
export function tbShopUnit(params) {
|
||||||
return request({
|
return request({
|
||||||
url: "/api/tbShopUnit",
|
url: '/api/tbShopUnit',
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,8 +43,8 @@ export function tbShopUnit(params) {
|
|||||||
export function tbShopCurrency(shopId) {
|
export function tbShopCurrency(shopId) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopCurrency/${shopId}`,
|
url: `/api/tbShopCurrency/${shopId}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,9 +54,9 @@ export function tbShopCurrency(shopId) {
|
|||||||
export function tbShopCurrencyPut(data) {
|
export function tbShopCurrencyPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopCurrency`,
|
url: `/api/tbShopCurrency`,
|
||||||
method: "put",
|
method: 'put',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,9 +66,9 @@ export function tbShopCurrencyPut(data) {
|
|||||||
export function tbShopUnitPost(data) {
|
export function tbShopUnitPost(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopUnit`,
|
url: `/api/tbShopUnit`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,9 +78,9 @@ export function tbShopUnitPost(data) {
|
|||||||
export function tbShopUnitPut(data) {
|
export function tbShopUnitPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopUnit`,
|
url: `/api/tbShopUnit`,
|
||||||
method: "put",
|
method: 'put',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -90,9 +90,9 @@ export function tbShopUnitPut(data) {
|
|||||||
export function tbShopUnitDelete(data) {
|
export function tbShopUnitDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopUnit`,
|
url: `/api/tbShopUnit`,
|
||||||
method: "delete",
|
method: 'delete',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,9 +102,9 @@ export function tbShopUnitDelete(data) {
|
|||||||
export function tbShopCurrencyGet(params) {
|
export function tbShopCurrencyGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopUnit`,
|
url: `/api/tbShopUnit`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -114,21 +114,21 @@ export function tbShopCurrencyGet(params) {
|
|||||||
export function tbShopCategoryGet(params) {
|
export function tbShopCategoryGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopCategory`,
|
url: `/api/tbShopCategory`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增、编辑分类/新增、编辑子分类
|
* 新增、编辑分类/新增、编辑子分类
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopCategoryPost(data, method = "post") {
|
export function tbShopCategoryPost(data, method = 'post') {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopCategory`,
|
url: `/api/tbShopCategory`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -138,9 +138,9 @@ export function tbShopCategoryPost(data, method = "post") {
|
|||||||
export function tbShopCategoryDelete(data) {
|
export function tbShopCategoryDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopCategory`,
|
url: `/api/tbShopCategory`,
|
||||||
method: "delete",
|
method: 'delete',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -150,9 +150,9 @@ export function tbShopCategoryDelete(data) {
|
|||||||
export function tbProductSpecPost(data) {
|
export function tbProductSpecPost(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductSpec`,
|
url: `/api/tbProductSpec`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -162,9 +162,9 @@ export function tbProductSpecPost(data) {
|
|||||||
export function tbProductSpecGet(params) {
|
export function tbProductSpecGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductSpec`,
|
url: `/api/tbProductSpec`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -174,9 +174,9 @@ export function tbProductSpecGet(params) {
|
|||||||
export function tbProductSpecPut(data) {
|
export function tbProductSpecPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductSpec`,
|
url: `/api/tbProductSpec`,
|
||||||
method: "put",
|
method: 'put',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -186,9 +186,9 @@ export function tbProductSpecPut(data) {
|
|||||||
export function tbProductSpecDelete(data) {
|
export function tbProductSpecDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductSpec`,
|
url: `/api/tbProductSpec`,
|
||||||
method: "DELETE",
|
method: 'DELETE',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -198,9 +198,9 @@ export function tbProductSpecDelete(data) {
|
|||||||
export function tbProductGroupPost(data) {
|
export function tbProductGroupPost(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductGroup`,
|
url: `/api/tbProductGroup`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -210,9 +210,9 @@ export function tbProductGroupPost(data) {
|
|||||||
export function tbProductGroupPut(data) {
|
export function tbProductGroupPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductGroup`,
|
url: `/api/tbProductGroup`,
|
||||||
method: "PUT",
|
method: 'PUT',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -222,9 +222,9 @@ export function tbProductGroupPut(data) {
|
|||||||
export function tbProductGroupGet(params) {
|
export function tbProductGroupGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductGroup`,
|
url: `/api/tbProductGroup`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -234,8 +234,8 @@ export function tbProductGroupGet(params) {
|
|||||||
export function productListGet(productGroup) {
|
export function productListGet(productGroup) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductGroup/${productGroup}`,
|
url: `/api/tbProductGroup/${productGroup}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -245,9 +245,9 @@ export function productListGet(productGroup) {
|
|||||||
export function tbProductGroupDelete(data) {
|
export function tbProductGroupDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProductGroup`,
|
url: `/api/tbProductGroup`,
|
||||||
method: "DELETE",
|
method: 'DELETE',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -257,9 +257,9 @@ export function tbProductGroupDelete(data) {
|
|||||||
export function tbProductPost(data) {
|
export function tbProductPost(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProduct`,
|
url: `/api/tbProduct`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -269,9 +269,9 @@ export function tbProductPost(data) {
|
|||||||
export function tbProductPut(data) {
|
export function tbProductPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProduct`,
|
url: `/api/tbProduct`,
|
||||||
method: "put",
|
method: 'put',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -282,8 +282,8 @@ export function tbProductPut(data) {
|
|||||||
export function tbProductGetDetail(product) {
|
export function tbProductGetDetail(product) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProduct/${product}`,
|
url: `/api/tbProduct/${product}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -293,9 +293,9 @@ export function tbProductGetDetail(product) {
|
|||||||
export function tbShopInfo(params) {
|
export function tbShopInfo(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopInfo`,
|
url: `/api/tbShopInfo`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -305,9 +305,9 @@ export function tbShopInfo(params) {
|
|||||||
export function tbMerchantRegisterPost(data) {
|
export function tbMerchantRegisterPost(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantRegister`,
|
url: `/api/tbMerchantRegister`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -317,21 +317,21 @@ export function tbMerchantRegisterPost(data) {
|
|||||||
export function tbMerchantRegisterList(data) {
|
export function tbMerchantRegisterList(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantRegister/list`,
|
url: `/api/tbMerchantRegister/list`,
|
||||||
method: "post",
|
method: 'post',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加/编辑店铺
|
* 增加/编辑店铺
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopInfoPost(data, method = "post") {
|
export function tbShopInfoPost(data, method = 'post') {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopInfo`,
|
url: `/api/tbShopInfo`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -341,8 +341,8 @@ export function tbShopInfoPost(data, method = "post") {
|
|||||||
export function tbMerchantThirdApply(shopId) {
|
export function tbMerchantThirdApply(shopId) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantThirdApply/${shopId}`,
|
url: `/api/tbMerchantThirdApply/${shopId}`,
|
||||||
method: "get"
|
method: 'get'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -352,9 +352,9 @@ export function tbMerchantThirdApply(shopId) {
|
|||||||
export function tbMerchantThirdApplyPut(data) {
|
export function tbMerchantThirdApplyPut(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantThirdApply`,
|
url: `/api/tbMerchantThirdApply`,
|
||||||
method: "put",
|
method: 'put',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -364,21 +364,21 @@ export function tbMerchantThirdApplyPut(data) {
|
|||||||
export function tbProductIsHot(params) {
|
export function tbProductIsHot(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbProduct/isHot`,
|
url: `/api/tbProduct/isHot`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增加/编辑优惠券
|
* 增加/编辑优惠券
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbMerchantCoupon(data, method = "post") {
|
export function tbMerchantCoupon(data, method = 'post') {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantCoupon`,
|
url: `/api/tbMerchantCoupon`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -388,413 +388,10 @@ export function tbMerchantCoupon(data, method = "post") {
|
|||||||
export function tbMerchantCouponGet(params) {
|
export function tbMerchantCouponGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbMerchantCoupon`,
|
url: `/api/tbMerchantCoupon`,
|
||||||
method: "get",
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置热销商品
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function geocode(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/geocode`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增、修改活动
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function modityActivate(data) {
|
|
||||||
return request({
|
|
||||||
url: `/shop/storage/modityActivate`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增、修改活动 新的!
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function storageupActivate(data) {
|
|
||||||
return request({
|
|
||||||
url: `/shop/storage/upActivate`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 活动列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function findActivate(params) {
|
|
||||||
return request({
|
|
||||||
url: `/shop/storage/findActivate`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 获取店铺会员二维码
|
|
||||||
export function getwxacode(data) {
|
|
||||||
return request({
|
|
||||||
url: `/shop/storage/getwxacode`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 商家用户列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function queryAllShopUser(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopUser/queryAllShopUser`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 查询商家用户概述信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function queryAllShopInfo(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopUser/summary`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改商品排序
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function upProSort(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProduct/upProSort`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改分组排序
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function upGroupSort(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductGroup/upGroupSort`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改分类排序
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function upCategorySort(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopCategory/upCategorySort`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询店铺充值记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbShopUserRecharge(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopUser/recharge`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出充值记录
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function downloadTableRecharge(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopUser/recharge/download`,
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
responseType: "blob"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlussShopStaffGet(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbPlussShopStaff`,
|
|
||||||
method: "get",
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 角色列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function rolesGet() {
|
|
||||||
return request({
|
|
||||||
url: `/api/roles`,
|
|
||||||
method: "get"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 增加员工
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlussShopStaff(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbPlussShopStaff`,
|
|
||||||
method: data.id ? "put" : "post",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function tbShopPermissionlist(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopPermission/list`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getHasPermission(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopPermission/hasPermission`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过id获取员工信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function tbPlussShopStaffDetail(id) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbPlussShopStaff/${id}`,
|
|
||||||
method: "get"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更改员工状态
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function updateStatus(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbPlussShopStaff/updateStatus`,
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 叫号记录
|
|
||||||
export function callRecord(params) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable/callRecord`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function callTablecall(data) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable/call`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 删除桌型
|
|
||||||
export function callTabledelete(data) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable`,
|
|
||||||
method: "delete",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function callTablepost(data) {
|
|
||||||
return request({
|
|
||||||
url: "/callTable",
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 桌型列表
|
|
||||||
export function callTable(params) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 修改桌号
|
|
||||||
export function callTabledataput(data) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable`,
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 叫号列表
|
|
||||||
export function callTablequeue(params) {
|
|
||||||
return request({
|
|
||||||
url: "/callTable/queue",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 取消叫号
|
|
||||||
export function callTableput(data) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable/updateState`,
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function callTabletakeNumber(data) {
|
|
||||||
return request({
|
|
||||||
url: "/callTable/takeNumber",
|
|
||||||
method: "post",
|
|
||||||
data: {
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 叫号配置获取
|
|
||||||
export function callTableconfig(params) {
|
|
||||||
return request({
|
|
||||||
url: "/callTable/config",
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 叫号配置修改
|
|
||||||
export function callTableconfigput(data) {
|
|
||||||
return request({
|
|
||||||
url: `/callTable/config`,
|
|
||||||
method: "put",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 员工删除
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function shopStaffDelete(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbPlussShopStaff`,
|
|
||||||
method: "delete",
|
|
||||||
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"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通过活动id获取赠送商品列表
|
|
||||||
export function queryShopUserFlow(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbShopUser/queryShopUserFlow`,
|
|
||||||
method: "get",
|
|
||||||
params
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 商品列表 V2
|
|
||||||
export function tbProductListV2(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProduct/list/v2`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改商品相关(快捷接口)
|
|
||||||
export function updateProductData(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/updateProductData`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 商品库存统计列表 统计
|
|
||||||
export function tbProductStockDetailStockCount(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductStockDetail/stock/count`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 商品库存记录列表
|
|
||||||
export function tbProductStockDetailStock(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/tbProductStockDetail/stock`,
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 商品库存记录列表
|
|
||||||
export function stockWarnLine(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/stock/warnLine`,
|
|
||||||
method: "PUT",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
545
src/api/table.js
@@ -1,63 +1,16 @@
|
|||||||
// 桌台管理
|
// 桌台管理
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
// 就餐形式,默认堂食后付费
|
|
||||||
const useType = 'dine-in-after'
|
|
||||||
function getUseType() {
|
|
||||||
const type = localStorage.getItem('useType')
|
|
||||||
return type || useType
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 台桌列表
|
* 台桌列表
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopTableGet(params) {
|
export function tbShopTableGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopTable`,
|
url: `/api/tbShopTable`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params
|
||||||
shopId: localStorage.getItem('shopId'),
|
})
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取预约台桌列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getShopTableList(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/booking/shop-table/list`,
|
|
||||||
method: 'get',
|
|
||||||
params: {
|
|
||||||
shopId: localStorage.getItem('shopId'),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 预约
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function makeShopTable(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/booking/shop-table`,
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 标记预约状态
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function markStatus(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/booking/shop-table/mark-status`,
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,11 +18,11 @@ export function markStatus(data) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopAreaGet(params) {
|
export function tbShopAreaGet(params) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopArea`,
|
url: `/api/tbShopArea`,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -77,11 +30,11 @@ export function tbShopAreaGet(params) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopArea(data, method) {
|
export function tbShopArea(data, method) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopArea`,
|
url: `/api/tbShopArea`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,11 +42,11 @@ export function tbShopArea(data, method) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopAreaDelete(data) {
|
export function tbShopAreaDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopArea`,
|
url: `/api/tbShopArea`,
|
||||||
method: "DELETE",
|
method: 'DELETE',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,11 +54,11 @@ export function tbShopAreaDelete(data) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopTable(data, method) {
|
export function tbShopTable(data, method) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopTable`,
|
url: `/api/tbShopTable`,
|
||||||
method: method,
|
method: method,
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -113,447 +66,11 @@ export function tbShopTable(data, method) {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function tbShopTableDelete(data) {
|
export function tbShopTableDelete(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/tbShopTable`,
|
url: `/api/tbShopTable`,
|
||||||
method: "DELETE",
|
method: 'DELETE',
|
||||||
data
|
data
|
||||||
});
|
})
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载桌码
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function downloadTableCode(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/deviceStock/batchDownload`,
|
|
||||||
method: "post",
|
|
||||||
data,
|
|
||||||
responseType: "blob"
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 桌台统计
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function summaryTable(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/summary/table`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 桌台统计导出文档
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function summaryTableDownload(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/summary/table/download`,
|
|
||||||
method: "POST",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
},
|
|
||||||
responseType: 'blob'
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前台桌订单信息
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getCart(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/cart`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 已上架商品列表
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function getGoodsLists(params) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/activate`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...params
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 点单
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function addCart(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/addCart`,
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 清空购物车/支付订单
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $clearCart(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/clearCart`,
|
|
||||||
method: "delete",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除购物车某个商品
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $removeCart(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/removeCart`,
|
|
||||||
method: "delete",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 更新规格
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $updateCart(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/updateCart`,
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 批量打包
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $allPack(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/pack`,
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 获取取餐号
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $getMasterId(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/masterId`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 支付方式获取
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $getPayType(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/payType`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 创建订单
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $createOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/order`,
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 挂起订单
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $cacheOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/pending`,
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取已挂起订单
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $getCacheOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/pending/cart`,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 会员点单/取消会员点单
|
|
||||||
export function $setUser(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/updateVip`,
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 删除订单
|
|
||||||
export function $delOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: `/api/place/order`,
|
|
||||||
method: "delete",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 支付订单
|
|
||||||
export function $payOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/pay',
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//退单
|
|
||||||
|
|
||||||
export function $returnCart(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/returnCart',
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 选择台桌
|
|
||||||
export function $choseTable(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/choseTable',
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 用餐人数
|
|
||||||
|
|
||||||
export function $choseCount(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/choseCount',
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
useType: getUseType(),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量生成台桌
|
|
||||||
export function $fastCreateTable(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopTable/generate',
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//打印当前台桌订单
|
|
||||||
export function $printOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/printOrder',
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//打印当前台桌菜品
|
|
||||||
|
|
||||||
export function $printDishes(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/printDishes',
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 就餐模式切换
|
|
||||||
export function $changeUseType(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/choseModel',
|
|
||||||
method: "put",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//店铺订单支付获取链接
|
|
||||||
export function $getOrderPayUrl(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/shopPayApi/getOrderPayUrl',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//退款
|
|
||||||
export function $returnOrder(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/place/returnOrder',
|
|
||||||
method: "post",
|
|
||||||
data:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//获取台桌详情状态
|
|
||||||
export function $returnTableDetail(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopTable/state',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//获取订单可用优惠券
|
|
||||||
export function $activateByOrderId(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/tbShopCoupon/activateByOrderId',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//会员积分列表
|
|
||||||
export function $returnMemberPointsList(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/points/member-points/page',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 会员积分账户信息
|
|
||||||
export function $returnMemberPoints(memberId) {
|
|
||||||
return request({
|
|
||||||
url: '/api/points/member-points/'+memberId,
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//002-获取订单可用积分及抵扣金额(支付页面使用)
|
|
||||||
export function $calcUsablePoints(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/points/member-points/calc-usable-points',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 003-根据积分计算可抵扣金额
|
|
||||||
export function $calcDeDuctionPoints(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/points/member-points/calc-deduction-amount',
|
|
||||||
method: "get",
|
|
||||||
params:{
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
import $api from './class-api'
|
|
||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
export const $version = new $api('/api/tbVersion')
|
|
||||||
/**
|
|
||||||
* 修改当前选中 版本
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $upSel(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/tbVersion/upSel',
|
|
||||||
method: "put",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 上传版本文件
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $uploadVersionFile(file, par) {
|
|
||||||
var data = new FormData()
|
|
||||||
data.append('file', file)
|
|
||||||
for(let i in par){
|
|
||||||
if(i!=='file'){
|
|
||||||
data.append(i, par[i])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return request({
|
|
||||||
url: 'api/qiNiuContent/uploadVersionFile',
|
|
||||||
method: "post",
|
|
||||||
data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 修改当前选中 版本
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function $getCredentials(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/qiNiuContent/getCredentials',
|
|
||||||
method: "get",
|
|
||||||
data: {
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
...data
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 919 B |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 877 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 99 KiB |
@@ -6,7 +6,7 @@
|
|||||||
/* theme color */
|
/* theme color */
|
||||||
$--color-primary: #1890ff;
|
$--color-primary: #1890ff;
|
||||||
$--color-success: #13ce66;
|
$--color-success: #13ce66;
|
||||||
$--color-warning: #ffba00;
|
$--color-warning: #FFBA00;
|
||||||
$--color-danger: #ff4949;
|
$--color-danger: #ff4949;
|
||||||
// $--color-info: #1E1E1E;
|
// $--color-info: #1E1E1E;
|
||||||
|
|
||||||
@@ -17,10 +17,10 @@ $--button-font-weight: 400;
|
|||||||
$--border-color-light: #dfe4ed;
|
$--border-color-light: #dfe4ed;
|
||||||
$--border-color-lighter: #e6ebf5;
|
$--border-color-lighter: #e6ebf5;
|
||||||
|
|
||||||
$--table-border: 1px solid#dfe6ec;
|
$--table-border:1px solid#dfe6ec;
|
||||||
|
|
||||||
/* icon font path, required */
|
/* icon font path, required */
|
||||||
$--font-path: "~element-ui/lib/theme-chalk/fonts";
|
$--font-path: '~element-ui/lib/theme-chalk/fonts';
|
||||||
|
|
||||||
@import "../../../node_modules/element-ui/packages/theme-chalk/src/index";
|
@import "../../../node_modules/element-ui/packages/theme-chalk/src/index";
|
||||||
|
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
top: 60px;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
#app .sidebar-container.has-logo .el-scrollbar {
|
#app .sidebar-container.has-logo .el-scrollbar {
|
||||||
height: calc(100% - 110px);
|
height: calc(100% - 50px);
|
||||||
}
|
}
|
||||||
#app .sidebar-container .is-horizontal {
|
#app .sidebar-container .is-horizontal {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
top: 60px;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
&.has-logo {
|
&.has-logo {
|
||||||
.el-scrollbar {
|
.el-scrollbar {
|
||||||
height: calc(100% - 110px);
|
height: calc(100% - 50px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,384 +0,0 @@
|
|||||||
.u-relative,
|
|
||||||
.u-rela,
|
|
||||||
.relative {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-absolute,
|
|
||||||
.u-abso,
|
|
||||||
.absolute {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-fixed,
|
|
||||||
.u-fix {
|
|
||||||
position: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
// nvue不能用标签命名样式,不能放在微信组件中,否则微信开发工具会报警告,无法使用标签名当做选择器
|
|
||||||
/* #ifndef APP-NVUE */
|
|
||||||
image {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 在weex,也即nvue中,所有元素默认为border-box
|
|
||||||
view,
|
|
||||||
text {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #endif */
|
|
||||||
|
|
||||||
.u-font-xs {
|
|
||||||
font-size: 11px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-font-sm {
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-font-md {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-font-lg {
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-font-xl {
|
|
||||||
font-size: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-flex {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-flex-wrap {
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-flex-nowrap {
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.free-price {
|
|
||||||
text-decoration: line-through;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
.cur-pointer{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.u-col-center {
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-col-top {
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-col-bottom {
|
|
||||||
align-items: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-row-center {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-row-left {
|
|
||||||
justify-content: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-row-right {
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-row-between {
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-row-around {
|
|
||||||
justify-content: space-around;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-text-left {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-text-center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-text-right {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-flex-col {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义flex等分
|
|
||||||
@for $i from 0 through 12 {
|
|
||||||
.u-flex-#{$i} {
|
|
||||||
flex: $i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义字体(px)单位,小于20都为px单位字体
|
|
||||||
@for $i from 9 to 20 {
|
|
||||||
.u-font-#{$i} {
|
|
||||||
font-size: $i + px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义字体(rpx)单位,大于或等于20的都为rpx单位字体
|
|
||||||
@for $i from 20 through 40 {
|
|
||||||
.u-font-#{$i} {
|
|
||||||
font-size: $i + px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义内外边距,历遍1-80
|
|
||||||
@for $i from 0 through 80 {
|
|
||||||
|
|
||||||
// 只要双数和能被5除尽的数
|
|
||||||
@if $i % 2==0 or $i % 5==0 {
|
|
||||||
|
|
||||||
// 得出:u-margin-30或者u-m-30
|
|
||||||
.u-margin-#{$i},
|
|
||||||
.u-m-#{$i} {
|
|
||||||
margin: $i + px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 得出:u-padding-30或者u-p-30
|
|
||||||
.u-padding-#{$i},
|
|
||||||
.u-p-#{$i} {
|
|
||||||
padding: $i + px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $short, $long in l left, t top, r right, b bottom {
|
|
||||||
|
|
||||||
// 缩写版,结果如: u-m-l-30
|
|
||||||
// 定义外边距
|
|
||||||
.u-m-#{$short}-#{$i} {
|
|
||||||
margin-#{$long}: $i + px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义内边距
|
|
||||||
.u-p-#{$short}-#{$i} {
|
|
||||||
padding-#{$long}: $i + px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 完整版,结果如:u-margin-left-30
|
|
||||||
// 定义外边距
|
|
||||||
.u-margin-#{$long}-#{$i} {
|
|
||||||
margin-#{$long}: $i + px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义内边距
|
|
||||||
.u-padding-#{$long}-#{$i} {
|
|
||||||
padding-#{$long}: $i + px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 重置nvue的默认关于flex的样式
|
|
||||||
.u-reset-nvue {
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* start--文本行数限制--start */
|
|
||||||
.u-line-1 {
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-line-2 {
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-line-3 {
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-line-4 {
|
|
||||||
-webkit-line-clamp: 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-line-5 {
|
|
||||||
-webkit-line-clamp: 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.u-line-2,
|
|
||||||
.u-line-3,
|
|
||||||
.u-line-4,
|
|
||||||
.u-line-5 {
|
|
||||||
overflow: hidden;
|
|
||||||
word-break: break-all;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
display: -webkit-box; // 弹性伸缩盒
|
|
||||||
-webkit-box-orient: vertical; // 设置伸缩盒子元素排列方式
|
|
||||||
}
|
|
||||||
|
|
||||||
/* end--文本行数限制--end */
|
|
||||||
|
|
||||||
|
|
||||||
/* start--不同颜色文字--start */
|
|
||||||
.color-333 {
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-666 {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-999 {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-red {
|
|
||||||
color: rgb(250, 85, 85);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* end--不同颜色文字--end */
|
|
||||||
|
|
||||||
.tranistion {
|
|
||||||
transition: all .3s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tranistion-1 {
|
|
||||||
transition: all .1s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tranistion-2 {
|
|
||||||
transition: all .2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-bold {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-600 {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-gray {
|
|
||||||
background-color: #F9F9F9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w-full {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gap-10 {
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gap-20 {
|
|
||||||
gap: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-aaa {
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-000 {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.color-fff {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-fff {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-gray {
|
|
||||||
background-color: #F9F9F9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overflow-hide {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-wrap {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-r-12 {
|
|
||||||
border-radius: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-r-18 {
|
|
||||||
border-radius: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-top {
|
|
||||||
border-top: 1px solid #E5E5E5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-bottom {
|
|
||||||
border-bottom: 1px solid #E5E5E5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scale7 {
|
|
||||||
transform: scale(0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.position-all {
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lh16 {
|
|
||||||
line-height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.default-box-padding {
|
|
||||||
padding: 16px 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.zIndex-999 {
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-default-size {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filter-gray {
|
|
||||||
filter: grayscale(1);
|
|
||||||
}
|
|
||||||
.youhui-tips.el-tooltip__popper {
|
|
||||||
background: #fff;
|
|
||||||
min-width: 150px;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: 1px solid #ebeef5 !important;
|
|
||||||
padding: 12px;
|
|
||||||
color: #606266;
|
|
||||||
line-height: 1.4;
|
|
||||||
text-align: justify;
|
|
||||||
font-size: 14px;
|
|
||||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
.youhui-tips.el-tooltip__popper[x-placement^="top"] .popper__arrow:after,
|
|
||||||
.youhui-tips.el-tooltip__popper[x-placement^="top"] .popper__arrow {
|
|
||||||
border-top-color: #fff;
|
|
||||||
}
|
|
||||||
@@ -9,15 +9,15 @@ $yellow: #fec171;
|
|||||||
$panGreen: #30b08f;
|
$panGreen: #30b08f;
|
||||||
|
|
||||||
// sidebar
|
// sidebar
|
||||||
$menuText: #999;
|
$menuText: #bfcbd9;
|
||||||
$menuActiveText: #409eff;
|
$menuActiveText: #409eff;
|
||||||
$subMenuActiveText: #555; // https://github.com/ElemeFE/element/issues/12951
|
$subMenuActiveText: #f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||||
|
|
||||||
$menuBg: #fff;
|
$menuBg: #333;
|
||||||
$menuHover: rgba(121, 145, 188, 0.18);
|
$menuHover: #444;
|
||||||
|
|
||||||
$subMenuBg: #fff;
|
$subMenuBg: #444;
|
||||||
$subMenuHover: rgba(121, 145, 188, 0.18);
|
$subMenuHover: #555;
|
||||||
|
|
||||||
$sideBarWidth: 205px;
|
$sideBarWidth: 205px;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
<el-breadcrumb class="app-breadcrumb" separator="/">
|
||||||
<transition-group name="breadcrumb">
|
<transition-group name="breadcrumb">
|
||||||
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
|
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
||||||
<span v-if="item.redirect === 'noredirect' || index == levelList.length - 1" class="no-redirect">{{
|
<span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
|
||||||
item.meta.title
|
|
||||||
}}</span>
|
|
||||||
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
||||||
</el-breadcrumb-item>
|
</el-breadcrumb-item>
|
||||||
</transition-group>
|
</transition-group>
|
||||||
@@ -39,7 +37,7 @@ export default {
|
|||||||
const first = matched[0]
|
const first = matched[0]
|
||||||
|
|
||||||
if (!this.isDashboard(first)) {
|
if (!this.isDashboard(first)) {
|
||||||
matched = [{ path: '/', meta: { title: '首页' } }].concat(matched)
|
matched = [{ path: '/dashboard', meta: { title: '首页' }}].concat(matched)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
||||||
@@ -75,7 +73,6 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
|
|
||||||
.no-redirect {
|
.no-redirect {
|
||||||
color: #97a8be;
|
color: #97a8be;
|
||||||
cursor: text;
|
cursor: text;
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-upload :action="uploadUrl" :before-upload="handleBeforeUpload" :on-success="handleUploadSuccess"
|
<el-upload
|
||||||
:on-error="handleUploadError" name="file" :show-file-list="false" :headers="headers" style="display: none"
|
:action="uploadUrl"
|
||||||
ref="upload" v-if="this.type == 'url'">
|
:before-upload="handleBeforeUpload"
|
||||||
|
: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>
|
||||||
@@ -116,11 +125,6 @@ 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");
|
||||||
@@ -151,7 +155,6 @@ 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) {
|
||||||
@@ -169,7 +172,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为服务器返回的图片地址
|
||||||
@@ -188,20 +191,16 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.editor,
|
.editor, .ql-toolbar {
|
||||||
.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: "保存";
|
||||||
@@ -216,17 +215,14 @@ 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";
|
||||||
@@ -236,32 +232,26 @@ 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";
|
||||||
@@ -271,12 +261,10 @@ 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: "等宽字体";
|
||||||
|
|||||||
@@ -1,175 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-dialog title="选择优惠劵" top="5vh" :visible.sync="dialogVisible">
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table ref="table" :data="tableData.list" height="500" v-loading="tableData.loading">
|
|
||||||
<!-- <el-table-column type="selection" width="55" align="center" v-if="!radio"></el-table-column> -->
|
|
||||||
<el-table-column label="名称" prop="title" />
|
|
||||||
<el-table-column label="使用门槛">
|
|
||||||
<template v-slot="scope">
|
|
||||||
{{ `满${scope.row.fullAmount}${scope.row.discountAmount ? '减' + scope.row.discountAmount + '元' :
|
|
||||||
''}` }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="总发放数量" prop="number" />
|
|
||||||
<el-table-column label="已使用" prop="useNumber" />
|
|
||||||
<el-table-column label="剩余" prop="leftNumber" />
|
|
||||||
<el-table-column label="操作">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="primary" @click="selectHandle(scope.row)">选择</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
|
||||||
@current-change="paginationChange" @size-change="sizeChange"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
<span slot="footer" class="dialog-footer" v-if="!radio">
|
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="confirmHandle">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getTbShopCoupon, delTbShopCoupon } from '@/api/coupon'
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
// 是否为单选
|
|
||||||
radio: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
searhForm: {
|
|
||||||
name: '',
|
|
||||||
category: ''
|
|
||||||
},
|
|
||||||
categoryList: [],
|
|
||||||
tableData: {
|
|
||||||
page: 0,
|
|
||||||
size: 10,
|
|
||||||
total: 0,
|
|
||||||
loading: false,
|
|
||||||
list: []
|
|
||||||
},
|
|
||||||
goods: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 单选商品
|
|
||||||
selectHandle(row) {
|
|
||||||
this.$emit('success', [{ ...row }])
|
|
||||||
this.close()
|
|
||||||
},
|
|
||||||
// 确定选商品
|
|
||||||
confirmHandle() {
|
|
||||||
let res = this.$refs.table.selection
|
|
||||||
this.$emit('success', res)
|
|
||||||
this.close()
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.searhForm.name = ''
|
|
||||||
this.searhForm.category = ''
|
|
||||||
this.tableData.page = 0
|
|
||||||
this.tableData.size = 10
|
|
||||||
this.tableData.list = []
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页大小改变
|
|
||||||
sizeChange(e) {
|
|
||||||
this.tableData.size = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e - 1
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 商品列表
|
|
||||||
async getTableData() {
|
|
||||||
this.tableData.loading = true
|
|
||||||
try {
|
|
||||||
const res = await getTbShopCoupon({
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size,
|
|
||||||
name: this.searhForm.name,
|
|
||||||
categoryId: this.searhForm.category,
|
|
||||||
shopId: localStorage.getItem('shopId'),
|
|
||||||
sort: 'id',
|
|
||||||
})
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
|
|
||||||
if (this.goods.length) {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.selection()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
|
||||||
this.tableData.loading = false
|
|
||||||
}, 500);
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 商品分类
|
|
||||||
async tbShopCategoryGet() {
|
|
||||||
try {
|
|
||||||
const res = await getTbShopCoupon({
|
|
||||||
page: 0,
|
|
||||||
size: 100,
|
|
||||||
sort: 'id',
|
|
||||||
shopId: localStorage.getItem('shopId')
|
|
||||||
})
|
|
||||||
this.categoryList = res.content
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async show(goods, categoryId) {
|
|
||||||
this.dialogVisible = true
|
|
||||||
if (goods && goods.length) {
|
|
||||||
this.goods = goods
|
|
||||||
} else {
|
|
||||||
this.goods = []
|
|
||||||
}
|
|
||||||
this.resetHandle()
|
|
||||||
|
|
||||||
console.log(categoryId);
|
|
||||||
|
|
||||||
if (categoryId) {
|
|
||||||
this.searhForm.category = categoryId
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(this.searhForm);
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
selection() {
|
|
||||||
this.goods.forEach(row => {
|
|
||||||
this.tableData.list.forEach((item, index) => {
|
|
||||||
if (row.id == item.id) {
|
|
||||||
this.$refs.table.toggleRowSelection(this.tableData.list[index]);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.shop_info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-dialog title="选择团购券分类" :visible.sync="dialogVisible" @open="resetHandle()">
|
|
||||||
<el-form :model="searhForm" inline>
|
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="searhForm.name" placeholder="分类名称"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="getTableData">查询</el-button>
|
|
||||||
<el-button @click="resetHandle">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table ref="table" :data="tableData.list" v-loading="tableData.loading">
|
|
||||||
<el-table-column type="selection" width="55" align="center"></el-table-column>
|
|
||||||
<el-table-column label="名称" prop="name"></el-table-column>
|
|
||||||
<el-table-column label="状态" prop="status">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-switch v-model="scope.row.status" :active-value="1" :inactive-value="0"
|
|
||||||
disabled></el-switch>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
|
||||||
@current-change="paginationChange" @size-change="sizeChange"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="confirmHandle">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { tbCouponCategoryGet } from "@/api/setting";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
searhForm: {
|
|
||||||
name: ''
|
|
||||||
},
|
|
||||||
tableData: {
|
|
||||||
page: 0,
|
|
||||||
size: 10,
|
|
||||||
total: 0,
|
|
||||||
loading: false,
|
|
||||||
list: []
|
|
||||||
},
|
|
||||||
goods: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 确定选商品
|
|
||||||
confirmHandle(row) {
|
|
||||||
let res = this.$refs.table.selection
|
|
||||||
this.$emit('success', res)
|
|
||||||
this.close()
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.searhForm.name = ''
|
|
||||||
this.tableData.page = 0
|
|
||||||
this.tableData.size = 10
|
|
||||||
this.tableData.list = []
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页大小改变
|
|
||||||
sizeChange(e) {
|
|
||||||
this.tableData.size = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e - 1
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 商品列表
|
|
||||||
async getTableData() {
|
|
||||||
this.tableData.loading = true
|
|
||||||
try {
|
|
||||||
const res = await tbCouponCategoryGet({
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size,
|
|
||||||
name: this.searhForm.name,
|
|
||||||
sort: 'id',
|
|
||||||
})
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
|
|
||||||
if (this.goods.length) {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.selection()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
|
||||||
this.tableData.loading = false
|
|
||||||
}, 500);
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
show(goods) {
|
|
||||||
this.dialogVisible = true
|
|
||||||
if (goods && goods.length) {
|
|
||||||
this.goods = [...goods]
|
|
||||||
} else {
|
|
||||||
this.goods = []
|
|
||||||
}
|
|
||||||
this.resetHandle()
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
selection() {
|
|
||||||
this.goods.forEach(row => {
|
|
||||||
this.tableData.list.forEach((item, index) => {
|
|
||||||
if (row.id == item.id) {
|
|
||||||
this.$refs.table.toggleRowSelection(this.tableData.list[index]);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.shop_info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog title="选择商品" top="5vh" :visible.sync="dialogVisible">
|
<el-dialog title="选择商品" :visible.sync="dialogVisible" @open="resetHandle()">
|
||||||
<el-form :model="searhForm" inline>
|
<el-form :model="searhForm" inline>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="searhForm.name" placeholder="商品名称"></el-input>
|
<el-input v-model="searhForm.name" placeholder="商品名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-select v-model="searhForm.category" placeholder="商品分类" :disabled="disableCategory">
|
<el-select v-model="searhForm.category" placeholder="商品分类">
|
||||||
<el-option :label="item.name" :value="item.id" v-for="item in categoryList"
|
<el-option :label="item.name" :value="item.id" v-for="item in categoryList"
|
||||||
:key="item.id"></el-option>
|
:key="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="head-container">
|
<div class="head-container">
|
||||||
<el-table ref="table" :data="tableData.list" height="500" v-loading="tableData.loading">
|
<el-table ref="table" :data="tableData.list" v-loading="tableData.loading">
|
||||||
<el-table-column type="selection" width="55" align="center" v-if="!radio"></el-table-column>
|
<el-table-column type="selection" width="55" align="center"></el-table-column>
|
||||||
<el-table-column label="商品信息">
|
<el-table-column label="商品信息">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<div class="shop_info">
|
<div class="shop_info">
|
||||||
@@ -30,19 +30,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="规格">
|
|
||||||
<template v-slot="scope">
|
|
||||||
{{ scope.row.typeEnum }}
|
|
||||||
</template>
|
|
||||||
</el-table-column> <el-table-column label="是否售罄">
|
|
||||||
<template v-slot="scope">
|
|
||||||
{{ scope.row.isPauseSale == 1 ? '是' : '否' }}
|
|
||||||
</template>
|
|
||||||
</el-table-column> <el-table-column label="是否分销">
|
|
||||||
<template v-slot="scope">
|
|
||||||
{{ scope.row.isDistribute == 1 ? '是' : '否' }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="售价">
|
<el-table-column label="售价">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
¥{{ scope.row.lowPrice }}
|
¥{{ scope.row.lowPrice }}
|
||||||
@@ -53,18 +40,13 @@
|
|||||||
{{ scope.row.realSalesNumber }}/{{ scope.row.stockNumber }}
|
{{ scope.row.realSalesNumber }}/{{ scope.row.stockNumber }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="分类名称" prop="categoryName"></el-table-column>
|
<el-table-column label="分类" prop="categoryName"></el-table-column>
|
||||||
<el-table-column label="操作" v-if="radio">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="primary" @click="selectHandle(scope.row)">选择</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<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" @size-change="sizeChange"
|
@current-change="paginationChange" @size-change="sizeChange"
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
||||||
<span slot="footer" class="dialog-footer" v-if="!radio">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
<el-button type="primary" @click="confirmHandle">确 定</el-button>
|
<el-button type="primary" @click="confirmHandle">确 定</el-button>
|
||||||
</span>
|
</span>
|
||||||
@@ -74,18 +56,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { tbShopCategoryGet, tbProduct } from "@/api/shop";
|
import { tbShopCategoryGet, tbProduct } from "@/api/shop";
|
||||||
export default {
|
export default {
|
||||||
props: {
|
|
||||||
// 是否禁用分类
|
|
||||||
disableCategory: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
// 是否为单选
|
|
||||||
radio: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
@@ -105,11 +75,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 单选商品
|
|
||||||
selectHandle(row) {
|
|
||||||
this.$emit('success', [{ ...row }])
|
|
||||||
this.close()
|
|
||||||
},
|
|
||||||
// 确定选商品
|
// 确定选商品
|
||||||
confirmHandle() {
|
confirmHandle() {
|
||||||
let res = this.$refs.table.selection
|
let res = this.$refs.table.selection
|
||||||
@@ -146,9 +111,8 @@ export default {
|
|||||||
categoryId: this.searhForm.category,
|
categoryId: this.searhForm.category,
|
||||||
shopId: localStorage.getItem('shopId'),
|
shopId: localStorage.getItem('shopId'),
|
||||||
sort: 'id',
|
sort: 'id',
|
||||||
createdAt: [],
|
|
||||||
sort: 'createdAt,desc'
|
|
||||||
})
|
})
|
||||||
|
this.tableData.loading = false
|
||||||
this.tableData.list = res.content
|
this.tableData.list = res.content
|
||||||
this.tableData.total = res.totalElements
|
this.tableData.total = res.totalElements
|
||||||
|
|
||||||
@@ -157,9 +121,6 @@ export default {
|
|||||||
this.selection()
|
this.selection()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
|
||||||
this.tableData.loading = false
|
|
||||||
}, 500);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
}
|
}
|
||||||
@@ -178,7 +139,7 @@ export default {
|
|||||||
console.log(error)
|
console.log(error)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async show(goods, categoryId) {
|
show(goods) {
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
if (goods && goods.length) {
|
if (goods && goods.length) {
|
||||||
this.goods = goods
|
this.goods = goods
|
||||||
@@ -186,18 +147,8 @@ export default {
|
|||||||
this.goods = []
|
this.goods = []
|
||||||
}
|
}
|
||||||
this.resetHandle()
|
this.resetHandle()
|
||||||
|
this.tbShopCategoryGet()
|
||||||
console.log(categoryId);
|
this.getTableData()
|
||||||
|
|
||||||
if (categoryId) {
|
|
||||||
this.searhForm.category = categoryId
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(this.searhForm);
|
|
||||||
|
|
||||||
|
|
||||||
await this.tbShopCategoryGet()
|
|
||||||
await this.getTableData()
|
|
||||||
},
|
},
|
||||||
close() {
|
close() {
|
||||||
this.dialogVisible = false
|
this.dialogVisible = false
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export default {
|
|||||||
dialogImageUrl: '',
|
dialogImageUrl: '',
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
fileList: [],
|
fileList: [],
|
||||||
// files: [],
|
files: [],
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': getToken()
|
'Authorization': getToken()
|
||||||
}
|
}
|
||||||
@@ -45,13 +45,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
handleSuccess(response, file, fileList) {
|
handleSuccess(response, file, fileList) {
|
||||||
// console.log('上传成功', response)
|
// console.log('上传成功', response)
|
||||||
setTimeout(() => {
|
this.files = response.data
|
||||||
this.fileList.push({
|
|
||||||
url: response.data[0],
|
|
||||||
id: response.data.id
|
|
||||||
})
|
|
||||||
}, 100);
|
|
||||||
// this.files = response.data
|
|
||||||
this.$emit('success', response.data)
|
this.$emit('success', response.data)
|
||||||
},
|
},
|
||||||
// 监听上传失败
|
// 监听上传失败
|
||||||
@@ -75,9 +69,6 @@ export default {
|
|||||||
},
|
},
|
||||||
handleRemove(file, fileList) {
|
handleRemove(file, fileList) {
|
||||||
let arr = fileList.map(item => item.url)
|
let arr = fileList.map(item => item.url)
|
||||||
// 删除数据
|
|
||||||
let index = this.fileList.findIndex(ele => ele.url == file.url)
|
|
||||||
this.fileList.splice(index, 1);
|
|
||||||
this.$emit('remove', arr)
|
this.$emit('remove', arr)
|
||||||
},
|
},
|
||||||
clearFiles() {
|
clearFiles() {
|
||||||
@@ -85,11 +76,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style>
|
|
||||||
.el-upload-list__item {
|
|
||||||
|
|
||||||
transition: none;
|
|
||||||
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -38,7 +38,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.fixed-header+.app-main {
|
.fixed-header+.app-main {
|
||||||
padding-top: 140px;
|
padding-top: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hasTagsView {
|
.hasTagsView {
|
||||||
@@ -48,7 +48,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.fixed-header+.app-main {
|
.fixed-header+.app-main {
|
||||||
padding-top: 140px;
|
padding-top: 84px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -16,62 +16,31 @@
|
|||||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template> -->
|
</template> -->
|
||||||
<!-- <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
|
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<img :src="logo || Avatar" class="user-avatar">
|
<img :src="logo || Avatar" class="user-avatar">
|
||||||
<i class="el-icon-caret-bottom" />
|
<!-- <i class="el-icon-caret-bottom" /> -->
|
||||||
<span class="shop_name">{{ shopName }}</span>
|
<span class="shop_name">{{ shopName }}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<span style="display:block;" @click="show = true">
|
<!-- <span style="display:block;" @click="show = true">
|
||||||
<el-dropdown-item>
|
<el-dropdown-item>
|
||||||
布局设置
|
布局设置
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</span>
|
</span> -->
|
||||||
<router-link to="/shop/shop/shop_configuration">
|
<router-link to="/shop/shop/shop_configuration">
|
||||||
<el-dropdown-item>
|
<el-dropdown-item>
|
||||||
个人中心
|
个人中心
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</router-link>
|
</router-link>
|
||||||
<span @click="dialogVisible = true">
|
|
||||||
<el-dropdown-item>
|
|
||||||
修改密码
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span>
|
|
||||||
<span style="display:block;" @click="open">
|
<span style="display:block;" @click="open">
|
||||||
<el-dropdown-item divided>
|
<el-dropdown-item divided>
|
||||||
退出登录
|
退出登录
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</span>
|
</span>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown> -->
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog title="修改密码" modal-append-to-body append-to-body :visible.sync="dialogVisible" width="400px">
|
|
||||||
<el-form ref="form" :model="form" :rules="rules">
|
|
||||||
<el-form-item label="旧密码" prop="oldPass">
|
|
||||||
<el-input :type="ip1Type" v-model="form.oldPass" placeholder="请输入旧密码">
|
|
||||||
<i slot="suffix" :class="`el-input__icon ${ip1Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip1Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="新密码" prop="newPass">
|
|
||||||
<el-input :type="ip2Type" v-model="form.newPass" placeholder="请输入新密码">
|
|
||||||
<i slot="suffix" :class="`el-input__icon ${ip2Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip2Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="确认新密码" prop="rnewPass">
|
|
||||||
<el-input :type="ip3Type" v-model="form.rnewPass" placeholder="请再次输入新密码">
|
|
||||||
<i slot="suffix" :class="`el-input__icon ${ip3Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip3Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" :loading="formLoading" @click="submitHandle">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -84,8 +53,6 @@ import Screenfull from '@/components/Screenfull'
|
|||||||
import SizeSelect from '@/components/SizeSelect'
|
import SizeSelect from '@/components/SizeSelect'
|
||||||
import Search from '@/components/HeaderSearch'
|
import Search from '@/components/HeaderSearch'
|
||||||
import Avatar from '@/assets/images/avatar.png'
|
import Avatar from '@/assets/images/avatar.png'
|
||||||
import { updatePass } from '@/api/login.js'
|
|
||||||
import { encrypt } from '@/utils/rsaEncrypt'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -97,61 +64,11 @@ export default {
|
|||||||
Doc
|
Doc
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
const validateNewPass = (rule, value, callback) => {
|
|
||||||
if (!this.form.newPass) {
|
|
||||||
callback(new Error(' '))
|
|
||||||
} else if (this.form.newPass === this.form.oldPass) {
|
|
||||||
callback(new Error('请输入与旧密码不同的新密码'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const validateRnewPass = (rule, value, callback) => {
|
|
||||||
if (!this.form.rnewPass) {
|
|
||||||
callback(new Error(' '))
|
|
||||||
} else if (this.form.rnewPass !== this.form.newPass) {
|
|
||||||
callback(new Error('两次密码输入不一致'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
Avatar: Avatar,
|
Avatar: Avatar,
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
logo: localStorage.getItem('logo'),
|
logo: localStorage.getItem('logo'),
|
||||||
shopName: localStorage.getItem('shopName'),
|
shopName: localStorage.getItem('shopName')
|
||||||
ip1Type: 'password',
|
|
||||||
ip2Type: 'password',
|
|
||||||
ip3Type: 'password',
|
|
||||||
formLoading: false,
|
|
||||||
form: {
|
|
||||||
oldPass: '',
|
|
||||||
newPass: '',
|
|
||||||
rnewPass: ''
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
oldPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
newPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: validateNewPass,
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rnewPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: validateRnewPass,
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -174,36 +91,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 修改密码框类型
|
|
||||||
changeInputType(key) {
|
|
||||||
if (this[key] == 'text') {
|
|
||||||
this[key] = 'password'
|
|
||||||
} else {
|
|
||||||
this[key] = 'text'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 提交修改密码
|
|
||||||
submitHandle() {
|
|
||||||
this.$refs.form.validate(async vaild => {
|
|
||||||
if (vaild) {
|
|
||||||
try {
|
|
||||||
this.formLoading = true
|
|
||||||
const res = await updatePass({
|
|
||||||
loginType: localStorage.getItem('loginType'),
|
|
||||||
oldPass: encrypt(this.form.oldPass),
|
|
||||||
newPass: this.form.newPass
|
|
||||||
})
|
|
||||||
this.$notify.success('修改成功,请重新登陆')
|
|
||||||
setTimeout(() => {
|
|
||||||
this.logout()
|
|
||||||
}, 1000)
|
|
||||||
} catch (error) {
|
|
||||||
this.formLoading = false
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
toggleSideBar() {
|
toggleSideBar() {
|
||||||
this.$store.dispatch('app/toggleSideBar')
|
this.$store.dispatch('app/toggleSideBar')
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,55 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="sidebar-logo-container" :class="{ 'collapse': collapse }">
|
<div class="sidebar-logo-container" :class="{'collapse':collapse}">
|
||||||
<transition name="sidebarLogoFade">
|
<transition name="sidebarLogoFade">
|
||||||
<div v-if="collapse" key="collapse" class="sidebar-logo-link">
|
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
|
||||||
<img v-if="logo" :src="logo || Avatar" class="sidebar-logo">
|
<img v-if="logo" :src="logo" class="sidebar-logo">
|
||||||
<h1 v-else class="sidebar-title">{{ shopName }} </h1>
|
<h1 v-else class="sidebar-title">{{ title }} </h1>
|
||||||
<i class="el-icon-arrow-down icon"></i>
|
</router-link>
|
||||||
</div>
|
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
|
||||||
<div v-else key="expand" class="sidebar-logo-link">
|
<img v-if="logo" :src="logo" class="sidebar-logo">
|
||||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
<h1 class="sidebar-title">{{ title }} </h1>
|
||||||
<div class="avatar-wrapper">
|
</router-link>
|
||||||
<img :src="logo || Avatar" class="sidebar-logo">
|
|
||||||
<span class="shop_name">{{ shopName.length>8?shopName.substring(0,7)+'...' :shopName.substring(0,7) }}</span>
|
|
||||||
<i class="el-icon-arrow-down icon"></i>
|
|
||||||
</div>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<!-- <span style="display:block;" @click="show = true">
|
|
||||||
<el-dropdown-item>
|
|
||||||
布局设置
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span>
|
|
||||||
<router-link to="/shop/shop/shop_configuration">
|
|
||||||
<el-dropdown-item>
|
|
||||||
店铺配置
|
|
||||||
</el-dropdown-item>
|
|
||||||
</router-link>-->
|
|
||||||
<span v-for="(item, index) in list" :key="index">
|
|
||||||
<el-dropdown-item :disabled="item.tubeType==0">
|
|
||||||
<div style="display: flex;align-items: center;" @click="switchshopName(item.id)">
|
|
||||||
<i class="el-icon-check" style="color: #46a6ff;" v-if="item.id == shopId"></i>
|
|
||||||
<div v-if="mainId == item.id" style="line-height: 20px;text-align: center;">(主)</div>
|
|
||||||
{{ item.shopName }}
|
|
||||||
</div>
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <img v-if="logo" :src="logo || Avatar" class="sidebar-logo">
|
|
||||||
<h1 class="sidebar-title">{{ shopName }} </h1>
|
|
||||||
<i class="el-icon-arrow-down icon"></i> -->
|
|
||||||
</div>
|
|
||||||
</transition>
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Avatar from '@/assets/images/avatar.png'
|
import Logo from '@/assets/images/logo.png'
|
||||||
import { getqueryChildShop, changChildShop } from '@/api/login.js'
|
|
||||||
import { setToken } from "@/utils/auth";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SidebarLogo',
|
name: 'SidebarLogo',
|
||||||
props: {
|
props: {
|
||||||
@@ -60,35 +25,8 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
shopName: localStorage.getItem('shopName'),
|
title: '收银机管理端',
|
||||||
Avatar,
|
logo: Logo
|
||||||
logo: localStorage.getItem('logo'),
|
|
||||||
list: [],
|
|
||||||
mainId: localStorage.getItem("mainId"),
|
|
||||||
shopId: localStorage.getItem("shopId"),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.getlist()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getlist() {
|
|
||||||
const res = await getqueryChildShop({
|
|
||||||
id: this.mainId
|
|
||||||
})
|
|
||||||
this.list = res
|
|
||||||
},
|
|
||||||
async switchshopName(id) {
|
|
||||||
const res = await changChildShop({
|
|
||||||
id
|
|
||||||
})
|
|
||||||
localStorage.setItem("shopId", res.shopId);
|
|
||||||
localStorage.setItem("logo", res.logo);
|
|
||||||
localStorage.setItem("loginType", res.loginType);
|
|
||||||
localStorage.setItem("mainId", res.mainId);
|
|
||||||
localStorage.setItem("shopName", res.shopName);
|
|
||||||
setToken(res.token);
|
|
||||||
location.reload();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,13 +42,6 @@ export default {
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
|
||||||
width: 100px;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-logo-container {
|
.sidebar-logo-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -122,25 +53,23 @@ h1 {
|
|||||||
& .sidebar-logo-link {
|
& .sidebar-logo-link {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 14px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
& .sidebar-logo {
|
& .sidebar-logo {
|
||||||
width: 36px;
|
width: 32px;
|
||||||
height: 36px;
|
height: 32px;
|
||||||
border-radius: 50%;
|
vertical-align: middle;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
& .sidebar-title {
|
& .sidebar-title {
|
||||||
color: #333;
|
display: inline-block;
|
||||||
|
margin: 0;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 50px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,39 +77,6 @@ h1 {
|
|||||||
.sidebar-logo {
|
.sidebar-logo {
|
||||||
margin-right: 0px;
|
margin-right: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-logo {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-container {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.avatar-wrapper {
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.user-avatar {
|
|
||||||
cursor: pointer;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-icon-caret-bottom {
|
|
||||||
font-size: 12px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.shop_name {
|
|
||||||
font-size: 16px;
|
|
||||||
// margin-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,17 +1,24 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="tags-view-container" class="tags-view-container">
|
<div id="tags-view-container" class="tags-view-container">
|
||||||
<scroll-pane ref="scrollPane" class="tags-view-wrapper">
|
<scroll-pane ref="scrollPane" class="tags-view-wrapper">
|
||||||
<router-link v-for="tag in visitedViews" ref="tag" :key="tag.path" :class="isActive(tag) ? 'active' : ''"
|
<router-link
|
||||||
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" tag="span" class="tags-view-item"
|
v-for="tag in visitedViews"
|
||||||
@click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''"
|
ref="tag"
|
||||||
@contextmenu.prevent.native="openMenu(tag, $event)">
|
:key="tag.path"
|
||||||
|
:class="isActive(tag)?'active':''"
|
||||||
|
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
|
||||||
|
tag="span"
|
||||||
|
class="tags-view-item"
|
||||||
|
@click.middle.native="closeSelectedTag(tag)"
|
||||||
|
@contextmenu.prevent.native="openMenu(tag,$event)"
|
||||||
|
>
|
||||||
{{ tag.title }}
|
{{ tag.title }}
|
||||||
<span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
|
<span v-if="!tag.meta.affix" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
|
||||||
</router-link>
|
</router-link>
|
||||||
</scroll-pane>
|
</scroll-pane>
|
||||||
<ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
|
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
|
||||||
<li @click="refreshSelectedTag(selectedTag)">刷新</li>
|
<li @click="refreshSelectedTag(selectedTag)">刷新</li>
|
||||||
<li v-if="!(selectedTag.meta && selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">关闭</li>
|
<li v-if="!(selectedTag.meta&&selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">关闭</li>
|
||||||
<li @click="closeOthersTags">关闭其他</li>
|
<li @click="closeOthersTags">关闭其他</li>
|
||||||
<li @click="closeAllTags(selectedTag)">关闭全部</li>
|
<li @click="closeAllTags(selectedTag)">关闭全部</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -59,9 +66,6 @@ export default {
|
|||||||
this.addTags()
|
this.addTags()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
isAffix(tag) {
|
|
||||||
return tag.meta && tag.meta.affix
|
|
||||||
},
|
|
||||||
isActive(route) {
|
isActive(route) {
|
||||||
return route.path === this.$route.path
|
return route.path === this.$route.path
|
||||||
},
|
},
|
||||||
@@ -164,7 +168,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
openMenu(tag, e) {
|
openMenu(tag, e) {
|
||||||
console.log(11111)
|
|
||||||
const menuMinWidth = 105
|
const menuMinWidth = 105
|
||||||
const offsetLeft = this.$el.getBoundingClientRect().left // container margin left
|
const offsetLeft = this.$el.getBoundingClientRect().left // container margin left
|
||||||
const offsetWidth = this.$el.offsetWidth // container width
|
const offsetWidth = this.$el.offsetWidth // container width
|
||||||
@@ -195,7 +198,6 @@ export default {
|
|||||||
background: #fff;
|
background: #fff;
|
||||||
border-bottom: 1px solid #d8dce5;
|
border-bottom: 1px solid #d8dce5;
|
||||||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
|
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
|
||||||
|
|
||||||
.tags-view-wrapper {
|
.tags-view-wrapper {
|
||||||
.tags-view-item {
|
.tags-view-item {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -210,34 +212,29 @@ export default {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
|
|
||||||
&:first-of-type {
|
&:first-of-type {
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-of-type {
|
&:last-of-type {
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
background: #7991BC;
|
background-color: #42b983;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-color: #42b983;
|
border-color: #42b983;
|
||||||
|
&::before {
|
||||||
// &::before {
|
content: '';
|
||||||
// content: '';
|
background: #fff;
|
||||||
// background: #fff;
|
display: inline-block;
|
||||||
// display: inline-block;
|
width: 8px;
|
||||||
// width: 8px;
|
height: 8px;
|
||||||
// height: 8px;
|
border-radius: 50%;
|
||||||
// border-radius: 50%;
|
position: relative;
|
||||||
// position: relative;
|
margin-right: 2px;
|
||||||
// margin-right: 2px;
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.contextmenu {
|
.contextmenu {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
@@ -250,12 +247,10 @@ export default {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333;
|
color: #333;
|
||||||
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
|
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
|
||||||
|
|
||||||
li {
|
li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 7px 16px;
|
padding: 7px 16px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #eee;
|
background: #eee;
|
||||||
}
|
}
|
||||||
@@ -276,13 +271,11 @@ export default {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
transition: all .3s cubic-bezier(.645, .045, .355, 1);
|
transition: all .3s cubic-bezier(.645, .045, .355, 1);
|
||||||
transform-origin: 100% 50%;
|
transform-origin: 100% 50%;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
transform: scale(.6);
|
transform: scale(.6);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: -3px;
|
vertical-align: -3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #b4bccc;
|
background-color: #b4bccc;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|||||||
@@ -1,109 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :class="classObj" class="app-wrapper">
|
<div :class="classObj" class="app-wrapper">
|
||||||
<div class="top_container">
|
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
|
||||||
<div class="content">
|
<sidebar class="sidebar-container" />
|
||||||
<div class="logo">
|
<div :class="{hasTagsView:needTagsView}" class="main-container">
|
||||||
<img class="img" src="@/assets/images/default_logo.png" />
|
<div :class="{'fixed-header':fixedHeader}">
|
||||||
</div>
|
<navbar />
|
||||||
<div class="right-menu">
|
<tags-view v-if="needTagsView" />
|
||||||
<template v-if="device !== 'mobile'">
|
|
||||||
<!-- <search id="header-search" class="right-menu-item" />
|
|
||||||
<el-tooltip content="项目文档" effect="dark" placement="bottom">
|
|
||||||
<Doc class="right-menu-item hover-effect" />
|
|
||||||
</el-tooltip>
|
|
||||||
<el-tooltip content="全屏缩放" effect="dark" placement="bottom">
|
|
||||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
|
||||||
</el-tooltip>
|
|
||||||
<el-tooltip content="布局设置" effect="dark" placement="bottom">
|
|
||||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
|
||||||
</el-tooltip> -->
|
|
||||||
|
|
||||||
<i class="left_icon el-icon-search" />
|
|
||||||
<i class="left_icon el-icon-warning-outline" />
|
|
||||||
<i class="left_icon el-icon-bell" />
|
|
||||||
</template>
|
|
||||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
|
|
||||||
<div class="avatar-wrapper">
|
|
||||||
<img :src="logo || Avatar" class="user-avatar">
|
|
||||||
<span class="shop_name">{{ shopName }}</span>
|
|
||||||
<i class="el-icon-caret-bottom" />
|
|
||||||
</div>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<!-- <span style="display:block;" @click="show = true">
|
|
||||||
<el-dropdown-item>
|
|
||||||
布局设置
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span> -->
|
|
||||||
<router-link to="/shop/shop/shop_configuration">
|
|
||||||
<el-dropdown-item>
|
|
||||||
店铺配置
|
|
||||||
</el-dropdown-item>
|
|
||||||
</router-link>
|
|
||||||
<span @click="dialogVisible = true">
|
|
||||||
<el-dropdown-item>
|
|
||||||
修改密码
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span>
|
|
||||||
<span style="display:block;" @click="open">
|
|
||||||
<el-dropdown-item divided>
|
|
||||||
退出登录
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span>
|
|
||||||
<!-- <span style="display:block;" @click="goFullScreen">
|
|
||||||
<el-dropdown-item divided>
|
|
||||||
全屏
|
|
||||||
</el-dropdown-item>
|
|
||||||
</span> -->
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<el-dialog title="修改密码" modal-append-to-body append-to-body :visible.sync="dialogVisible" width="400px">
|
<app-main />
|
||||||
<el-form ref="form" :model="form" :rules="rules">
|
<right-panel v-if="showSettings">
|
||||||
<el-form-item label="旧密码" prop="oldPass">
|
<settings />
|
||||||
<el-input :type="ip1Type" v-model="form.oldPass" placeholder="请输入旧密码">
|
</right-panel>
|
||||||
<i slot="suffix"
|
|
||||||
:class="`el-input__icon ${ip1Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip1Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="新密码" prop="newPass">
|
|
||||||
<el-input :type="ip2Type" v-model="form.newPass" placeholder="请输入新密码">
|
|
||||||
<i slot="suffix"
|
|
||||||
:class="`el-input__icon ${ip2Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip2Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="确认新密码" prop="rnewPass">
|
|
||||||
<el-input :type="ip3Type" v-model="form.rnewPass" placeholder="请再次输入新密码">
|
|
||||||
<i slot="suffix"
|
|
||||||
:class="`el-input__icon ${ip3Type == 'text' ? 'el-icon-view' : 'el-icon-remove-outline'}`"
|
|
||||||
@click.stop="changeInputType('ip3Type')"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" :loading="formLoading" @click="submitHandle">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div v-if="device === 'mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
|
|
||||||
<sidebar class="sidebar-container" />
|
|
||||||
<div :class="{ hasTagsView: needTagsView }" class="main-container">
|
|
||||||
<div :class="{ 'fixed-header': fixedHeader }">
|
|
||||||
<navbar />
|
|
||||||
<tags-view v-if="needTagsView" />
|
|
||||||
</div>
|
|
||||||
<app-main />
|
|
||||||
<right-panel v-if="showSettings">
|
|
||||||
<settings />
|
|
||||||
</right-panel>
|
|
||||||
</div>
|
|
||||||
<!-- 防止刷新后主题丢失 -->
|
|
||||||
<Theme v-show="false" ref="theme" />
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 防止刷新后主题丢失 -->
|
||||||
|
<Theme v-show="false" ref="theme" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -111,12 +21,9 @@
|
|||||||
import RightPanel from '@/components/RightPanel'
|
import RightPanel from '@/components/RightPanel'
|
||||||
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'
|
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'
|
||||||
import ResizeMixin from './mixin/ResizeHandler'
|
import ResizeMixin from './mixin/ResizeHandler'
|
||||||
import { mapState, mapGetters } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import Theme from '@/components/ThemePicker'
|
import Theme from '@/components/ThemePicker'
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import Avatar from '@/assets/images/avatar.png'
|
|
||||||
import { updatePass } from '@/api/login.js'
|
|
||||||
import { encrypt } from '@/utils/rsaEncrypt'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Layout',
|
name: 'Layout',
|
||||||
components: {
|
components: {
|
||||||
@@ -129,64 +36,6 @@ export default {
|
|||||||
Theme
|
Theme
|
||||||
},
|
},
|
||||||
mixins: [ResizeMixin],
|
mixins: [ResizeMixin],
|
||||||
data() {
|
|
||||||
const validateNewPass = (rule, value, callback) => {
|
|
||||||
if (!this.form.newPass) {
|
|
||||||
callback(new Error(' '))
|
|
||||||
} else if (this.form.newPass === this.form.oldPass) {
|
|
||||||
callback(new Error('请输入与旧密码不同的新密码'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const validateRnewPass = (rule, value, callback) => {
|
|
||||||
if (!this.form.rnewPass) {
|
|
||||||
callback(new Error(' '))
|
|
||||||
} else if (this.form.rnewPass !== this.form.newPass) {
|
|
||||||
callback(new Error('两次密码输入不一致'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
Avatar: Avatar,
|
|
||||||
logo: localStorage.getItem('logo'),
|
|
||||||
shopName: localStorage.getItem('shopName'),
|
|
||||||
ip1Type: 'password',
|
|
||||||
ip2Type: 'password',
|
|
||||||
ip3Type: 'password',
|
|
||||||
formLoading: false,
|
|
||||||
form: {
|
|
||||||
oldPass: '',
|
|
||||||
newPass: '',
|
|
||||||
rnewPass: ''
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
oldPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
newPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: validateNewPass,
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rnewPass: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: validateRnewPass,
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
sidebar: state => state.app.sidebar,
|
sidebar: state => state.app.sidebar,
|
||||||
@@ -195,12 +44,6 @@ export default {
|
|||||||
needTagsView: state => state.settings.tagsView,
|
needTagsView: state => state.settings.tagsView,
|
||||||
fixedHeader: state => state.settings.fixedHeader
|
fixedHeader: state => state.settings.fixedHeader
|
||||||
}),
|
}),
|
||||||
...mapGetters([
|
|
||||||
'sidebar',
|
|
||||||
'device',
|
|
||||||
'user',
|
|
||||||
'baseApi'
|
|
||||||
]),
|
|
||||||
classObj() {
|
classObj() {
|
||||||
return {
|
return {
|
||||||
hideSidebar: !this.sidebar.opened,
|
hideSidebar: !this.sidebar.opened,
|
||||||
@@ -220,199 +63,54 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 修改密码框类型
|
|
||||||
changeInputType(key) {
|
|
||||||
if (this[key] == 'text') {
|
|
||||||
this[key] = 'password'
|
|
||||||
} else {
|
|
||||||
this[key] = 'text'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleClickOutside() {
|
handleClickOutside() {
|
||||||
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
|
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
|
||||||
},
|
|
||||||
// 提交修改密码
|
|
||||||
submitHandle() {
|
|
||||||
this.$refs.form.validate(async vaild => {
|
|
||||||
if (vaild) {
|
|
||||||
try {
|
|
||||||
this.formLoading = true
|
|
||||||
const res = await updatePass({
|
|
||||||
loginType: localStorage.getItem('loginType'),
|
|
||||||
oldPass: encrypt(this.form.oldPass),
|
|
||||||
newPass: this.form.newPass
|
|
||||||
})
|
|
||||||
this.$notify.success('修改成功,请重新登陆')
|
|
||||||
setTimeout(() => {
|
|
||||||
this.logout()
|
|
||||||
}, 1000)
|
|
||||||
} catch (error) {
|
|
||||||
this.formLoading = false
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
goFullScreen() {
|
|
||||||
if (document.documentElement.requestFullscreen) {
|
|
||||||
document.documentElement.requestFullscreen();
|
|
||||||
} else if (document.documentElement.mozRequestFullScreen) { /* Firefox */
|
|
||||||
document.documentElement.mozRequestFullScreen();
|
|
||||||
} else if (document.documentElement.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
|
|
||||||
document.documentElement.webkitRequestFullscreen();
|
|
||||||
} else if (document.documentElement.msRequestFullscreen) { /* IE/Edge */
|
|
||||||
document.documentElement.msRequestFullscreen();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
open() {
|
|
||||||
this.$confirm('确定注销并退出系统吗?', '提示', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
localStorage.setItem('logoutHandle', true)
|
|
||||||
this.logout()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
logout() {
|
|
||||||
this.$store.dispatch('LogOut').then(() => {
|
|
||||||
location.reload()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import "~@/assets/styles/mixin.scss";
|
@import "~@/assets/styles/mixin.scss";
|
||||||
@import "~@/assets/styles/variables.scss";
|
@import "~@/assets/styles/variables.scss";
|
||||||
$top-c-h: 60px;
|
|
||||||
|
|
||||||
.top_container {
|
.app-wrapper {
|
||||||
height: $top-c-h;
|
@include clearfix;
|
||||||
width: 100%;
|
position: relative;
|
||||||
position: fixed;
|
height: 100%;
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 10;
|
|
||||||
background-color: #F5F5F5;
|
|
||||||
|
|
||||||
.content {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: $top-c-h - 10px;
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 0 20px;
|
|
||||||
|
|
||||||
.logo {
|
&.mobile.openSidebar {
|
||||||
.img {
|
position: fixed;
|
||||||
display: block;
|
top: 0;
|
||||||
width: 123px;
|
|
||||||
height: auto
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-menu {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.left_icon {
|
|
||||||
font-size: 18px;
|
|
||||||
margin-right: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-menu-item {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 8px;
|
|
||||||
height: 100%;
|
|
||||||
font-size: 18px;
|
|
||||||
color: #5a5e66;
|
|
||||||
vertical-align: text-bottom;
|
|
||||||
|
|
||||||
&.hover-effect {
|
|
||||||
cursor: pointer;
|
|
||||||
transition: background .3s;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: rgba(0, 0, 0, .025)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-container {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.avatar-wrapper {
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.user-avatar {
|
|
||||||
cursor: pointer;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-icon-caret-bottom {
|
|
||||||
font-size: 12px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.shop_name {
|
|
||||||
font-size: 16px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.app-wrapper {
|
.drawer-bg {
|
||||||
@include clearfix;
|
background: #000;
|
||||||
position: relative;
|
opacity: 0.3;
|
||||||
height: 100%;
|
width: 100%;
|
||||||
width: 100%;
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
|
||||||
&.mobile.openSidebar {
|
.fixed-header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 9;
|
||||||
|
width: calc(100% - #{$sideBarWidth});
|
||||||
|
transition: width 0.28s;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.drawer-bg {
|
.hideSidebar .fixed-header {
|
||||||
background: #000;
|
width: calc(100% - 54px)
|
||||||
opacity: 0.3;
|
}
|
||||||
width: 100%;
|
|
||||||
top: 0;
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fixed-header {
|
.mobile .fixed-header {
|
||||||
position: fixed;
|
width: 100%;
|
||||||
top: $top-c-h;
|
}
|
||||||
right: 0;
|
|
||||||
z-index: 9;
|
|
||||||
width: calc(100% - #{$sideBarWidth});
|
|
||||||
transition: width 0.28s;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hideSidebar .fixed-header {
|
|
||||||
width: calc(100% - 54px)
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile .fixed-header {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
84
src/main.js
@@ -1,78 +1,60 @@
|
|||||||
import Vue from "vue";
|
import Vue from 'vue'
|
||||||
|
|
||||||
import Cookies from "js-cookie";
|
import Cookies from 'js-cookie'
|
||||||
|
|
||||||
import "normalize.css/normalize.css";
|
import 'normalize.css/normalize.css'
|
||||||
|
|
||||||
import Element from "element-ui";
|
import Element from 'element-ui'
|
||||||
|
|
||||||
// 图片选择器
|
|
||||||
// import VueSelectImage from 'vue-select-image'
|
|
||||||
// import "vue-select-image/dist/vue-select-image.css";
|
|
||||||
// Vue.use(VueSelectImage)
|
|
||||||
|
|
||||||
// 数据字典
|
// 数据字典
|
||||||
import dict from "./components/Dict";
|
import dict from './components/Dict'
|
||||||
import Editor from "@/components/Editor";
|
import Editor from "@/components/Editor"
|
||||||
|
|
||||||
// 权限指令
|
// 权限指令
|
||||||
import checkPer from "@/utils/permission";
|
import checkPer from '@/utils/permission'
|
||||||
import permission from "./components/Permission";
|
import permission from './components/Permission'
|
||||||
import "./assets/styles/element-variables.scss";
|
import './assets/styles/element-variables.scss'
|
||||||
|
|
||||||
// global css
|
// global css
|
||||||
import "./assets/styles/index.scss";
|
import './assets/styles/index.scss'
|
||||||
import "./assets/styles/util.scss";
|
|
||||||
|
|
||||||
import App from "./App";
|
import App from './App'
|
||||||
import store from "./store";
|
import store from './store'
|
||||||
import router from "./router/routers";
|
import router from './router/routers'
|
||||||
|
|
||||||
import "./assets/icons"; // icon
|
import './assets/icons' // icon
|
||||||
import "./router/index"; // permission control
|
import './router/index' // permission control
|
||||||
|
|
||||||
// 全局引入
|
// 全局引入
|
||||||
import EleUploadImage from "vue-ele-upload-image";
|
import EleUploadImage from 'vue-ele-upload-image'
|
||||||
import VueAMap from "vue-amap";
|
import VueAMap from 'vue-amap';
|
||||||
|
|
||||||
import VueClipboard from "vue-clipboard2";
|
import VueClipboard from 'vue-clipboard2'
|
||||||
|
|
||||||
import { isPcBowser } from "@/utils/index";
|
|
||||||
|
|
||||||
Vue.component(EleUploadImage.name, EleUploadImage);
|
Vue.component(EleUploadImage.name, EleUploadImage)
|
||||||
Vue.component("Editor", Editor);
|
Vue.component('Editor', Editor)
|
||||||
|
|
||||||
Vue.use(checkPer);
|
Vue.use(checkPer)
|
||||||
Vue.use(permission);
|
Vue.use(permission)
|
||||||
Vue.use(dict);
|
Vue.use(dict)
|
||||||
Vue.use(Element, {
|
Vue.use(Element, {
|
||||||
size: Cookies.get("size") || "small" // set element-ui default size
|
size: Cookies.get('size') || 'small' // set element-ui default size
|
||||||
});
|
})
|
||||||
Vue.use(VueAMap);
|
Vue.use(VueAMap)
|
||||||
Vue.use(VueClipboard);
|
Vue.use(VueClipboard)
|
||||||
|
|
||||||
Vue.prototype.isPcBowser = isPcBowser();
|
|
||||||
|
|
||||||
VueAMap.initAMapApiLoader({
|
VueAMap.initAMapApiLoader({
|
||||||
key: "6033c97e67bf2e9ceac306e1a3fa35f8",
|
key: '6033c97e67bf2e9ceac306e1a3fa35f8',
|
||||||
// securityJsCode: '0547b69252ef0ed14e11f5c4ac152f07',
|
// securityJsCode: '0547b69252ef0ed14e11f5c4ac152f07',
|
||||||
plugin: [
|
plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor']
|
||||||
"AMap.Autocomplete",
|
})
|
||||||
"AMap.PlaceSearch",
|
|
||||||
"AMap.Scale",
|
|
||||||
"AMap.OverView",
|
|
||||||
"AMap.ToolBar",
|
|
||||||
"AMap.MapType",
|
|
||||||
"AMap.PolyEditor",
|
|
||||||
"AMap.CircleEditor"
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: '#app',
|
||||||
router,
|
router,
|
||||||
store,
|
store,
|
||||||
render: h => h(App)
|
render: h => h(App)
|
||||||
});
|
})
|
||||||
|
|||||||
@@ -51,32 +51,7 @@ export const constantRouterMap = [
|
|||||||
path: 'data_forms',
|
path: 'data_forms',
|
||||||
component: (resolve) => require(['@/views/home/data_forms'], resolve),
|
component: (resolve) => require(['@/views/home/data_forms'], resolve),
|
||||||
name: 'data_forms',
|
name: 'data_forms',
|
||||||
meta: { title: '销量统计' }
|
meta: { title: '数据报表' }
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'data_tables',
|
|
||||||
component: (resolve) => require(['@/views/home/data_tables'], resolve),
|
|
||||||
name: 'data_tables',
|
|
||||||
meta: { title: '桌台统计' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'data_credit',
|
|
||||||
component: (resolve) => require(['@/views/home/data_credit'], resolve),
|
|
||||||
name: 'data_credit',
|
|
||||||
meta: { title: '挂账管理' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'data_creditDetail',
|
|
||||||
component: (resolve) => require(['@/views/home/data_creditDetail'], resolve),
|
|
||||||
name: 'data_creditDetail',
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: '挂账明细' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'data_record',
|
|
||||||
component: (resolve) => require(['@/views/home/data_record'], resolve),
|
|
||||||
name: 'data_record',
|
|
||||||
meta: { title: '交班记录' }
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* @description 网站标题
|
* @description 网站标题
|
||||||
*/
|
*/
|
||||||
title: "管理后台",
|
title: '管理后台',
|
||||||
/**
|
/**
|
||||||
* @description 是否显示 tagsView
|
* @description 是否显示 tagsView
|
||||||
*/
|
*/
|
||||||
@@ -22,7 +22,7 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* @description token key
|
* @description token key
|
||||||
*/
|
*/
|
||||||
TokenKey: "ELADMIN-TOEKN",
|
TokenKey: 'ELADMIN-TOEKN',
|
||||||
/**
|
/**
|
||||||
* @description 请求超时时间,毫秒(默认2分钟)
|
* @description 请求超时时间,毫秒(默认2分钟)
|
||||||
*/
|
*/
|
||||||
@@ -38,37 +38,36 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* 底部文字,支持html语法
|
* 底部文字,支持html语法
|
||||||
*/
|
*/
|
||||||
footerTxt:
|
footerTxt: '© 2018-2024 超掌柜科技 <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License 2.0</a>',
|
||||||
'© 2018-2024 超掌柜科技 <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License 2.0</a>',
|
|
||||||
/**
|
/**
|
||||||
* 备案号
|
* 备案号
|
||||||
*/
|
*/
|
||||||
caseNumber: "陕ICP备2022008069号",
|
caseNumber: '陕ICP备2022008069号',
|
||||||
typeEnum: [
|
typeEnum: [
|
||||||
{
|
{
|
||||||
label: "单规格",
|
label: '计量商品',
|
||||||
intro: "单价购买",
|
intro: '单价购买',
|
||||||
typeEnum: "normal"
|
typeEnum: 'normal'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "多规格",
|
label: '多规格',
|
||||||
intro: "多种不同规格",
|
intro: '多种不同规格',
|
||||||
typeEnum: "sku"
|
typeEnum: 'sku'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '套餐商品',
|
||||||
|
intro: '选职多种组合',
|
||||||
|
typeEnum: 'group'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '称重商品',
|
||||||
|
intro: '按重量售卖',
|
||||||
|
typeEnum: 'weight'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '时价商品',
|
||||||
|
intro: '收银端可更改价格',
|
||||||
|
typeEnum: 'currentPrice'
|
||||||
}
|
}
|
||||||
// {
|
|
||||||
// label: '套餐商品',
|
|
||||||
// intro: '选职多种组合',
|
|
||||||
// typeEnum: 'group'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// label: '称重商品',
|
|
||||||
// intro: '按重量售卖',
|
|
||||||
// typeEnum: 'weight'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// label: '时价商品',
|
|
||||||
// intro: '收银端可更改价格',
|
|
||||||
// typeEnum: 'currentPrice'
|
|
||||||
// }
|
|
||||||
]
|
]
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ const getters = {
|
|||||||
fileUploadApi: state => state.api.fileUploadApi,
|
fileUploadApi: state => state.api.fileUploadApi,
|
||||||
updateAvatarApi: state => state.api.updateAvatarApi,
|
updateAvatarApi: state => state.api.updateAvatarApi,
|
||||||
qiNiuUploadApi: state => state.api.qiNiuUploadApi,
|
qiNiuUploadApi: state => state.api.qiNiuUploadApi,
|
||||||
versionUploadApi: state => state.api.versonUploadApi,
|
|
||||||
sqlApi: state => state.api.sqlApi,
|
sqlApi: state => state.api.sqlApi,
|
||||||
swaggerApi: state => state.api.swaggerApi,
|
swaggerApi: state => state.api.swaggerApi,
|
||||||
sidebarRouters: state => state.permission.sidebarRouters
|
sidebarRouters: state => state.permission.sidebarRouters
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ const api = {
|
|||||||
swaggerApi: baseUrl + '/doc.html',
|
swaggerApi: baseUrl + '/doc.html',
|
||||||
// 文件上传
|
// 文件上传
|
||||||
fileUploadApi: baseUrl + '/api/localStorage',
|
fileUploadApi: baseUrl + '/api/localStorage',
|
||||||
// 上传版本文件
|
|
||||||
versonUploadApi: baseUrl + '/api/qiNiuContent/uploadVersionFile',
|
|
||||||
// baseUrl,
|
// baseUrl,
|
||||||
baseApi: baseUrl
|
baseApi: baseUrl
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { login, getInfo, logout } from "@/api/login";
|
import { login, getInfo, logout } from '@/api/login'
|
||||||
import { getToken, setToken, removeToken } from "@/utils/auth";
|
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||||||
|
|
||||||
const user = {
|
const user = {
|
||||||
state: {
|
state: {
|
||||||
@@ -13,101 +13,91 @@ const user = {
|
|||||||
mutations: {
|
mutations: {
|
||||||
// 是否为手动退出登录
|
// 是否为手动退出登录
|
||||||
SD_LOGOUT: (state, f) => {
|
SD_LOGOUT: (state, f) => {
|
||||||
state.sdLogout = f;
|
state.sdLogout = f
|
||||||
},
|
},
|
||||||
SET_TOKEN: (state, token) => {
|
SET_TOKEN: (state, token) => {
|
||||||
state.token = token;
|
state.token = token
|
||||||
},
|
},
|
||||||
SET_USER: (state, user) => {
|
SET_USER: (state, user) => {
|
||||||
state.user = user;
|
state.user = user
|
||||||
},
|
},
|
||||||
SET_ROLES: (state, roles) => {
|
SET_ROLES: (state, roles) => {
|
||||||
state.roles = roles;
|
state.roles = roles
|
||||||
},
|
},
|
||||||
SET_LOAD_MENUS: (state, loadMenus) => {
|
SET_LOAD_MENUS: (state, loadMenus) => {
|
||||||
state.loadMenus = loadMenus;
|
state.loadMenus = loadMenus
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// 登录
|
// 登录
|
||||||
Login({ commit }, userInfo) {
|
Login({ commit }, userInfo) {
|
||||||
const rememberMe = userInfo.rememberMe;
|
const rememberMe = userInfo.rememberMe
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
login(userInfo)
|
login(userInfo.username, userInfo.password, userInfo.code, userInfo.uuid).then(res => {
|
||||||
.then(res => {
|
// console.log('登录成功后返回===', res)
|
||||||
// console.log('登录成功后返回===', res)
|
localStorage.setItem('logoutHandle', false)
|
||||||
localStorage.setItem("logoutHandle", false);
|
localStorage.setItem('shopId', res.shopId)
|
||||||
localStorage.setItem("shopId", res.shopId);
|
localStorage.setItem('shopName', res.shopName)
|
||||||
localStorage.setItem("shopName", res.shopName);
|
localStorage.setItem('logo', res.logo)
|
||||||
localStorage.setItem("logo", res.logo);
|
setToken(res.token, rememberMe)
|
||||||
localStorage.setItem("loginType", res.loginType);
|
commit('SET_TOKEN', res.token)
|
||||||
localStorage.setItem("userInfo", JSON.stringify(res.user.user));
|
setUserInfo(res.user, commit)
|
||||||
localStorage.setItem("mainId", res.mainId);
|
// 第一次加载菜单时用到, 具体见 src 目录下的 permission.js
|
||||||
localStorage.setItem("expireDate", res.expireDate);
|
commit('SET_LOAD_MENUS', true)
|
||||||
setToken(res.token, rememberMe);
|
resolve()
|
||||||
commit("SET_TOKEN", res.token);
|
}).catch(error => {
|
||||||
setUserInfo(res.user, commit);
|
reject(error)
|
||||||
// 第一次加载菜单时用到, 具体见 src 目录下的 permission.js
|
})
|
||||||
commit("SET_LOAD_MENUS", true);
|
})
|
||||||
resolve();
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
reject(error);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
GetInfo({ commit }) {
|
GetInfo({ commit }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
getInfo()
|
getInfo().then(res => {
|
||||||
.then(res => {
|
setUserInfo(res, commit)
|
||||||
setUserInfo(res, commit);
|
resolve(res)
|
||||||
resolve(res);
|
}).catch(error => {
|
||||||
})
|
reject(error)
|
||||||
.catch(error => {
|
})
|
||||||
reject(error);
|
})
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
// 登出
|
// 登出
|
||||||
LogOut({ commit }) {
|
LogOut({ commit }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
logout()
|
logout().then(res => {
|
||||||
.then(res => {
|
logOut(commit)
|
||||||
logOut(commit);
|
resolve()
|
||||||
resolve();
|
}).catch(error => {
|
||||||
})
|
logOut(commit)
|
||||||
.catch(error => {
|
reject(error)
|
||||||
logOut(commit);
|
})
|
||||||
reject(error);
|
})
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
updateLoadMenus({ commit }) {
|
updateLoadMenus({ commit }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
commit("SET_LOAD_MENUS", false);
|
commit('SET_LOAD_MENUS', false)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export const logOut = commit => {
|
export const logOut = (commit) => {
|
||||||
commit("SET_TOKEN", "");
|
commit('SET_TOKEN', '')
|
||||||
commit("SET_ROLES", []);
|
commit('SET_ROLES', [])
|
||||||
removeToken();
|
removeToken()
|
||||||
};
|
}
|
||||||
|
|
||||||
export const setUserInfo = (res, commit) => {
|
export const setUserInfo = (res, commit) => {
|
||||||
// 如果没有任何权限,则赋予一个默认的权限,避免请求死循环
|
// 如果没有任何权限,则赋予一个默认的权限,避免请求死循环
|
||||||
if (res.roles.length === 0) {
|
if (res.roles.length === 0) {
|
||||||
commit("SET_ROLES", ["ROLE_SYSTEM_DEFAULT"]);
|
commit('SET_ROLES', ['ROLE_SYSTEM_DEFAULT'])
|
||||||
} else {
|
} else {
|
||||||
commit("SET_ROLES", res.roles);
|
commit('SET_ROLES', res.roles)
|
||||||
}
|
}
|
||||||
commit("SET_USER", res.user);
|
commit('SET_USER', res.user)
|
||||||
};
|
}
|
||||||
|
|
||||||
export default user;
|
export default user
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
/**
|
|
||||||
* 格式化价格函数,将价格限定在指定的最小值和最大值范围内,并保留两位小数。
|
|
||||||
*
|
|
||||||
* @param {number} price - 需要格式化的价格。
|
|
||||||
* @param {number} min - 价格的最小值。
|
|
||||||
* @param {number} max - 价格的最大值,默认为100000000。
|
|
||||||
* @param {Boolean} returnIsArea - 是否返回值符合范围区间,默认为false。
|
|
||||||
* @returns {number} - 返回格式化后的价格,如果超出范围则返回最小值或最大值。
|
|
||||||
*/
|
|
||||||
export const formatPrice = (price,min=-Infinity, max = 100000000,returnIsArea=false ) => {
|
|
||||||
if(price === undefined || price === null||price===''){
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
// 将价格转换为浮点数并保留两位小数
|
|
||||||
const newval = parseFloat((Math.floor(price * 100) / 100).toFixed(2))
|
|
||||||
// 如果价格大于最大值,返回最大值
|
|
||||||
if (newval > max) {
|
|
||||||
return returnIsArea?{value:max,error:true}:max
|
|
||||||
}
|
|
||||||
// 如果价格小于最小值,返回最小值
|
|
||||||
if (newval < min) {
|
|
||||||
return returnIsArea?{value:min,error:true}:min
|
|
||||||
}
|
|
||||||
// 如果价格小于最小值,返回最小值
|
|
||||||
if (newval < min) {
|
|
||||||
return min
|
|
||||||
}
|
|
||||||
// 返回格式化后的价格
|
|
||||||
return newval
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
// 最新的一个请求
|
|
||||||
let cancel = null
|
|
||||||
|
|
||||||
// 所有请求
|
|
||||||
let cancelTokenList = []
|
|
||||||
|
|
||||||
function setToken(cancelToken) {
|
|
||||||
cancel = cancelToken
|
|
||||||
cancelTokenList.push(cancelToken)
|
|
||||||
}
|
|
||||||
|
|
||||||
function cancelToken() {
|
|
||||||
cancel && cancel()
|
|
||||||
cancelTokenList.pop()
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearAllToken() {
|
|
||||||
while (cancelTokenList.length > 0) {
|
|
||||||
let cancel = cancelTokenList.pop()
|
|
||||||
console.log(cancel, 'cancel')
|
|
||||||
cancel && cancel()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
setToken,
|
|
||||||
cancelToken,
|
|
||||||
clearAllToken,
|
|
||||||
}
|
|
||||||
@@ -10,22 +10,22 @@
|
|||||||
*/
|
*/
|
||||||
export function parseTime(time, cFormat) {
|
export function parseTime(time, cFormat) {
|
||||||
if (arguments.length === 0) {
|
if (arguments.length === 0) {
|
||||||
return null;
|
return null
|
||||||
}
|
}
|
||||||
const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
|
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
||||||
let date;
|
let date
|
||||||
if (typeof time === "undefined" || time === null || time === "null") {
|
if (typeof time === 'undefined' || time === null || time === 'null') {
|
||||||
return "";
|
return ''
|
||||||
} else if (typeof time === "object") {
|
} else if (typeof time === 'object') {
|
||||||
date = time;
|
date = time
|
||||||
} else {
|
} else {
|
||||||
if (typeof time === "string" && /^[0-9]+$/.test(time)) {
|
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
|
||||||
time = parseInt(time);
|
time = parseInt(time)
|
||||||
}
|
}
|
||||||
if (typeof time === "number" && time.toString().length === 10) {
|
if ((typeof time === 'number') && (time.toString().length === 10)) {
|
||||||
time = time * 1000;
|
time = time * 1000
|
||||||
}
|
}
|
||||||
date = new Date(time);
|
date = new Date(time)
|
||||||
}
|
}
|
||||||
const formatObj = {
|
const formatObj = {
|
||||||
y: date.getFullYear(),
|
y: date.getFullYear(),
|
||||||
@@ -35,19 +35,17 @@ export function parseTime(time, cFormat) {
|
|||||||
i: date.getMinutes(),
|
i: date.getMinutes(),
|
||||||
s: date.getSeconds(),
|
s: date.getSeconds(),
|
||||||
a: date.getDay()
|
a: date.getDay()
|
||||||
};
|
}
|
||||||
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
|
||||||
let value = formatObj[key];
|
let value = formatObj[key]
|
||||||
// Note: getDay() returns 0 on Sunday
|
// Note: getDay() returns 0 on Sunday
|
||||||
if (key === "a") {
|
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
|
||||||
return ["日", "一", "二", "三", "四", "五", "六"][value];
|
|
||||||
}
|
|
||||||
if (result.length > 0 && value < 10) {
|
if (result.length > 0 && value < 10) {
|
||||||
value = "0" + value;
|
value = '0' + value
|
||||||
}
|
}
|
||||||
return value || 0;
|
return value || 0
|
||||||
});
|
})
|
||||||
return time_str;
|
return time_str
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,40 +54,40 @@ export function parseTime(time, cFormat) {
|
|||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
export function formatTime(time, option) {
|
export function formatTime(time, option) {
|
||||||
if (("" + time).length === 10) {
|
if (('' + time).length === 10) {
|
||||||
time = parseInt(time) * 1000;
|
time = parseInt(time) * 1000
|
||||||
} else {
|
} else {
|
||||||
time = +time;
|
time = +time
|
||||||
}
|
}
|
||||||
const d = new Date(time);
|
const d = new Date(time)
|
||||||
const now = Date.now();
|
const now = Date.now()
|
||||||
|
|
||||||
const diff = (now - d) / 1000;
|
const diff = (now - d) / 1000
|
||||||
|
|
||||||
if (diff < 30) {
|
if (diff < 30) {
|
||||||
return "刚刚";
|
return '刚刚'
|
||||||
} else if (diff < 3600) {
|
} else if (diff < 3600) {
|
||||||
// less 1 hour
|
// less 1 hour
|
||||||
return Math.ceil(diff / 60) + "分钟前";
|
return Math.ceil(diff / 60) + '分钟前'
|
||||||
} else if (diff < 3600 * 24) {
|
} else if (diff < 3600 * 24) {
|
||||||
return Math.ceil(diff / 3600) + "小时前";
|
return Math.ceil(diff / 3600) + '小时前'
|
||||||
} else if (diff < 3600 * 24 * 2) {
|
} else if (diff < 3600 * 24 * 2) {
|
||||||
return "1天前";
|
return '1天前'
|
||||||
}
|
}
|
||||||
if (option) {
|
if (option) {
|
||||||
return parseTime(time, option);
|
return parseTime(time, option)
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
d.getMonth() +
|
d.getMonth() +
|
||||||
1 +
|
1 +
|
||||||
"月" +
|
'月' +
|
||||||
d.getDate() +
|
d.getDate() +
|
||||||
"日" +
|
'日' +
|
||||||
d.getHours() +
|
d.getHours() +
|
||||||
"时" +
|
'时' +
|
||||||
d.getMinutes() +
|
d.getMinutes() +
|
||||||
"分"
|
'分'
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,18 +96,18 @@ export function formatTime(time, option) {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
export function getQueryObject(url) {
|
export function getQueryObject(url) {
|
||||||
url = url == null ? window.location.href : url;
|
url = url == null ? window.location.href : url
|
||||||
const search = url.substring(url.lastIndexOf("?") + 1);
|
const search = url.substring(url.lastIndexOf('?') + 1)
|
||||||
const obj = {};
|
const obj = {}
|
||||||
const reg = /([^?&=]+)=([^?&=]*)/g;
|
const reg = /([^?&=]+)=([^?&=]*)/g
|
||||||
search.replace(reg, (rs, $1, $2) => {
|
search.replace(reg, (rs, $1, $2) => {
|
||||||
const name = decodeURIComponent($1);
|
const name = decodeURIComponent($1)
|
||||||
let val = decodeURIComponent($2);
|
let val = decodeURIComponent($2)
|
||||||
val = String(val);
|
val = String(val)
|
||||||
obj[name] = val;
|
obj[name] = val
|
||||||
return rs;
|
return rs
|
||||||
});
|
})
|
||||||
return obj;
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -118,14 +116,14 @@ export function getQueryObject(url) {
|
|||||||
*/
|
*/
|
||||||
export function byteLength(str) {
|
export function byteLength(str) {
|
||||||
// returns the byte length of an utf8 string
|
// returns the byte length of an utf8 string
|
||||||
let s = str.length;
|
let s = str.length
|
||||||
for (var i = str.length - 1; i >= 0; i--) {
|
for (var i = str.length - 1; i >= 0; i--) {
|
||||||
const code = str.charCodeAt(i);
|
const code = str.charCodeAt(i)
|
||||||
if (code > 0x7f && code <= 0x7ff) s++;
|
if (code > 0x7f && code <= 0x7ff) s++
|
||||||
else if (code > 0x7ff && code <= 0xffff) s += 2;
|
else if (code > 0x7ff && code <= 0xffff) s += 2
|
||||||
if (code >= 0xdc00 && code <= 0xdfff) i--;
|
if (code >= 0xDC00 && code <= 0xDFFF) i--
|
||||||
}
|
}
|
||||||
return s;
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -133,13 +131,13 @@ export function byteLength(str) {
|
|||||||
* @returns {Array}
|
* @returns {Array}
|
||||||
*/
|
*/
|
||||||
export function cleanArray(actual) {
|
export function cleanArray(actual) {
|
||||||
const newArray = [];
|
const newArray = []
|
||||||
for (let i = 0; i < actual.length; i++) {
|
for (let i = 0; i < actual.length; i++) {
|
||||||
if (actual[i]) {
|
if (actual[i]) {
|
||||||
newArray.push(actual[i]);
|
newArray.push(actual[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return newArray;
|
return newArray
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,13 +145,13 @@ export function cleanArray(actual) {
|
|||||||
* @returns {Array}
|
* @returns {Array}
|
||||||
*/
|
*/
|
||||||
export function param(json) {
|
export function param(json) {
|
||||||
if (!json) return "";
|
if (!json) return ''
|
||||||
return cleanArray(
|
return cleanArray(
|
||||||
Object.keys(json).map(key => {
|
Object.keys(json).map(key => {
|
||||||
if (json[key] === undefined) return "";
|
if (json[key] === undefined) return ''
|
||||||
return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]);
|
return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
|
||||||
})
|
})
|
||||||
).join("&");
|
).join('&')
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -161,19 +159,19 @@ export function param(json) {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
export function param2Obj(url) {
|
export function param2Obj(url) {
|
||||||
const search = url.split("?")[1];
|
const search = url.split('?')[1]
|
||||||
if (!search) {
|
if (!search) {
|
||||||
return {};
|
return {}
|
||||||
}
|
}
|
||||||
return JSON.parse(
|
return JSON.parse(
|
||||||
'{"' +
|
'{"' +
|
||||||
decodeURIComponent(search)
|
decodeURIComponent(search)
|
||||||
.replace(/"/g, '\\"')
|
.replace(/"/g, '\\"')
|
||||||
.replace(/&/g, '","')
|
.replace(/&/g, '","')
|
||||||
.replace(/=/g, '":"')
|
.replace(/=/g, '":"')
|
||||||
.replace(/\+/g, " ") +
|
.replace(/\+/g, ' ') +
|
||||||
'"}'
|
'"}'
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -181,9 +179,9 @@ export function param2Obj(url) {
|
|||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
export function html2Text(val) {
|
export function html2Text(val) {
|
||||||
const div = document.createElement("div");
|
const div = document.createElement('div')
|
||||||
div.innerHTML = val;
|
div.innerHTML = val
|
||||||
return div.textContent || div.innerText;
|
return div.textContent || div.innerText
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -193,21 +191,21 @@ export function html2Text(val) {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
export function objectMerge(target, source) {
|
export function objectMerge(target, source) {
|
||||||
if (typeof target !== "object") {
|
if (typeof target !== 'object') {
|
||||||
target = {};
|
target = {}
|
||||||
}
|
}
|
||||||
if (Array.isArray(source)) {
|
if (Array.isArray(source)) {
|
||||||
return source.slice();
|
return source.slice()
|
||||||
}
|
}
|
||||||
Object.keys(source).forEach(property => {
|
Object.keys(source).forEach(property => {
|
||||||
const sourceProperty = source[property];
|
const sourceProperty = source[property]
|
||||||
if (typeof sourceProperty === "object") {
|
if (typeof sourceProperty === 'object') {
|
||||||
target[property] = objectMerge(target[property], sourceProperty);
|
target[property] = objectMerge(target[property], sourceProperty)
|
||||||
} else {
|
} else {
|
||||||
target[property] = sourceProperty;
|
target[property] = sourceProperty
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
return target;
|
return target
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -216,18 +214,18 @@ export function objectMerge(target, source) {
|
|||||||
*/
|
*/
|
||||||
export function toggleClass(element, className) {
|
export function toggleClass(element, className) {
|
||||||
if (!element || !className) {
|
if (!element || !className) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
let classString = element.className;
|
let classString = element.className
|
||||||
const nameIndex = classString.indexOf(className);
|
const nameIndex = classString.indexOf(className)
|
||||||
if (nameIndex === -1) {
|
if (nameIndex === -1) {
|
||||||
classString += "" + className;
|
classString += '' + className
|
||||||
} else {
|
} else {
|
||||||
classString =
|
classString =
|
||||||
classString.substr(0, nameIndex) +
|
classString.substr(0, nameIndex) +
|
||||||
classString.substr(nameIndex + className.length);
|
classString.substr(nameIndex + className.length)
|
||||||
}
|
}
|
||||||
element.className = classString;
|
element.className = classString
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -235,10 +233,10 @@ export function toggleClass(element, className) {
|
|||||||
* @returns {Date}
|
* @returns {Date}
|
||||||
*/
|
*/
|
||||||
export function getTime(type) {
|
export function getTime(type) {
|
||||||
if (type === "start") {
|
if (type === 'start') {
|
||||||
return new Date().getTime() - 3600 * 1000 * 24 * 90;
|
return new Date().getTime() - 3600 * 1000 * 24 * 90
|
||||||
} else {
|
} else {
|
||||||
return new Date(new Date().toDateString());
|
return new Date(new Date().toDateString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,38 +247,38 @@ export function getTime(type) {
|
|||||||
* @return {*}
|
* @return {*}
|
||||||
*/
|
*/
|
||||||
export function debounce(func, wait, immediate) {
|
export function debounce(func, wait, immediate) {
|
||||||
let timeout, args, context, timestamp, result;
|
let timeout, args, context, timestamp, result
|
||||||
|
|
||||||
const later = function() {
|
const later = function () {
|
||||||
// 据上一次触发时间间隔
|
// 据上一次触发时间间隔
|
||||||
const last = +new Date() - timestamp;
|
const last = +new Date() - timestamp
|
||||||
|
|
||||||
// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
|
// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
|
||||||
if (last < wait && last > 0) {
|
if (last < wait && last > 0) {
|
||||||
timeout = setTimeout(later, wait - last);
|
timeout = setTimeout(later, wait - last)
|
||||||
} else {
|
} else {
|
||||||
timeout = null;
|
timeout = null
|
||||||
// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
|
// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
|
||||||
if (!immediate) {
|
if (!immediate) {
|
||||||
result = func.apply(context, args);
|
result = func.apply(context, args)
|
||||||
if (!timeout) context = args = null;
|
if (!timeout) context = args = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
return function(...args) {
|
return function (...args) {
|
||||||
context = this;
|
context = this
|
||||||
timestamp = +new Date();
|
timestamp = +new Date()
|
||||||
const callNow = immediate && !timeout;
|
const callNow = immediate && !timeout
|
||||||
// 如果延时不存在,重新设定延时
|
// 如果延时不存在,重新设定延时
|
||||||
if (!timeout) timeout = setTimeout(later, wait);
|
if (!timeout) timeout = setTimeout(later, wait)
|
||||||
if (callNow) {
|
if (callNow) {
|
||||||
result = func.apply(context, args);
|
result = func.apply(context, args)
|
||||||
context = args = null;
|
context = args = null
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -291,18 +289,18 @@ export function debounce(func, wait, immediate) {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
export function deepClone(source) {
|
export function deepClone(source) {
|
||||||
if (!source && typeof source !== "object") {
|
if (!source && typeof source !== 'object') {
|
||||||
throw new Error("error arguments", "deepClone");
|
throw new Error('error arguments', 'deepClone')
|
||||||
}
|
}
|
||||||
const targetObj = source.constructor === Array ? [] : {};
|
const targetObj = source.constructor === Array ? [] : {}
|
||||||
Object.keys(source).forEach(keys => {
|
Object.keys(source).forEach(keys => {
|
||||||
if (source[keys] && typeof source[keys] === "object") {
|
if (source[keys] && typeof source[keys] === 'object') {
|
||||||
targetObj[keys] = deepClone(source[keys]);
|
targetObj[keys] = deepClone(source[keys])
|
||||||
} else {
|
} else {
|
||||||
targetObj[keys] = source[keys];
|
targetObj[keys] = source[keys]
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
return targetObj;
|
return targetObj
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -310,16 +308,16 @@ export function deepClone(source) {
|
|||||||
* @returns {Array}
|
* @returns {Array}
|
||||||
*/
|
*/
|
||||||
export function uniqueArr(arr) {
|
export function uniqueArr(arr) {
|
||||||
return Array.from(new Set(arr));
|
return Array.from(new Set(arr))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
export function createUniqueString() {
|
export function createUniqueString() {
|
||||||
const timestamp = +new Date() + "";
|
const timestamp = +new Date() + ''
|
||||||
const randomNum = parseInt((1 + Math.random()) * 65536) + "";
|
const randomNum = parseInt((1 + Math.random()) * 65536) + ''
|
||||||
return (+(randomNum + timestamp)).toString(32);
|
return (+(randomNum + timestamp)).toString(32)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -329,7 +327,7 @@ export function createUniqueString() {
|
|||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
export function hasClass(ele, cls) {
|
export function hasClass(ele, cls) {
|
||||||
return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
|
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -338,7 +336,7 @@ export function hasClass(ele, cls) {
|
|||||||
* @param {string} cls
|
* @param {string} cls
|
||||||
*/
|
*/
|
||||||
export function addClass(ele, cls) {
|
export function addClass(ele, cls) {
|
||||||
if (!hasClass(ele, cls)) ele.className += " " + cls;
|
if (!hasClass(ele, cls)) ele.className += ' ' + cls
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -348,45 +346,45 @@ export function addClass(ele, cls) {
|
|||||||
*/
|
*/
|
||||||
export function removeClass(ele, cls) {
|
export function removeClass(ele, cls) {
|
||||||
if (hasClass(ele, cls)) {
|
if (hasClass(ele, cls)) {
|
||||||
const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
|
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
|
||||||
ele.className = ele.className.replace(reg, " ");
|
ele.className = ele.className.replace(reg, ' ')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 替换邮箱字符
|
// 替换邮箱字符
|
||||||
export function regEmail(email) {
|
export function regEmail(email) {
|
||||||
if (String(email).indexOf("@") > 0) {
|
if (String(email).indexOf('@') > 0) {
|
||||||
const str = email.split("@");
|
const str = email.split('@')
|
||||||
let _s = "";
|
let _s = ''
|
||||||
if (str[0].length > 3) {
|
if (str[0].length > 3) {
|
||||||
for (var i = 0; i < str[0].length - 3; i++) {
|
for (var i = 0; i < str[0].length - 3; i++) {
|
||||||
_s += "*";
|
_s += '*'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var new_email = str[0].substr(0, 3) + _s + "@" + str[1];
|
var new_email = str[0].substr(0, 3) + _s + '@' + str[1]
|
||||||
}
|
}
|
||||||
return new_email;
|
return new_email
|
||||||
}
|
}
|
||||||
|
|
||||||
// 替换手机字符
|
// 替换手机字符
|
||||||
export function regMobile(mobile) {
|
export function regMobile(mobile) {
|
||||||
if (mobile.length > 7) {
|
if (mobile.length > 7) {
|
||||||
var new_mobile = mobile.substr(0, 3) + "****" + mobile.substr(7);
|
var new_mobile = mobile.substr(0, 3) + '****' + mobile.substr(7)
|
||||||
}
|
}
|
||||||
return new_mobile;
|
return new_mobile
|
||||||
}
|
}
|
||||||
|
|
||||||
// 下载文件
|
// 下载文件
|
||||||
export function downloadFile(obj, name, suffix) {
|
export function downloadFile(obj, name, suffix) {
|
||||||
const url = window.URL.createObjectURL(new Blob([obj]));
|
const url = window.URL.createObjectURL(new Blob([obj]))
|
||||||
const link = document.createElement("a");
|
const link = document.createElement('a')
|
||||||
link.style.display = "none";
|
link.style.display = 'none'
|
||||||
link.href = url;
|
link.href = url
|
||||||
const fileName = parseTime(new Date()) + "-" + name + "." + suffix;
|
const fileName = parseTime(new Date()) + '-' + name + '.' + suffix
|
||||||
link.setAttribute("download", fileName);
|
link.setAttribute('download', fileName)
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link)
|
||||||
link.click();
|
link.click()
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -400,53 +398,3 @@ export function RandomNumBoth(Max, Min = 0) {
|
|||||||
var num = Min + Math.round(Rand * Range); //四舍五入
|
var num = Min + Math.round(Rand * Range); //四舍五入
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断是不是PC浏览器
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function isPcBowser() {
|
|
||||||
if (!window.navigator) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
if (/Mobile|Android|webOS|iPhone|iPad|Phone/i.test(navigator.userAgent)) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保留小数n位,不进行四舍五入
|
|
||||||
* num你传递过来的数字,
|
|
||||||
* decimal你保留的几位,默认保留小数后两位
|
|
||||||
* isInt 是否保留0
|
|
||||||
*/
|
|
||||||
export function formatDecimal(num = 0, decimal = 2, isInt = false) {
|
|
||||||
num = num.toFixed(3).toString();
|
|
||||||
const index = num.indexOf(".");
|
|
||||||
if (index !== -1) {
|
|
||||||
num = num.substring(0, decimal + index + 1);
|
|
||||||
} else {
|
|
||||||
num = num.substring(0);
|
|
||||||
}
|
|
||||||
//截取后保留两位小数
|
|
||||||
if (isInt) {
|
|
||||||
return parseFloat(num);
|
|
||||||
} else {
|
|
||||||
return parseFloat(num).toFixed(decimal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 传入数组,以及要交换位置的2个元素的下标
|
|
||||||
* @param {*} arr
|
|
||||||
* @param {*} i1
|
|
||||||
* @param {*} i2
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function swapArrayEle(arr, i1, i2) {
|
|
||||||
arr[i1] = arr.splice(i2, 1, arr[i1])[0];
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,153 +0,0 @@
|
|||||||
import { getHasPermission } from "@/api/shop";
|
|
||||||
import { Notification } from 'element-ui'
|
|
||||||
|
|
||||||
const userInfo = JSON.parse(localStorage.getItem("userInfo"));
|
|
||||||
const $PermissionObj = {
|
|
||||||
data: [{
|
|
||||||
key: 'yun_xu_cha_kan_jing_ying_shu_ju',
|
|
||||||
text: '允许查看经营数据'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_cha_kan_suo_you_jiao_ban_ji_lu',
|
|
||||||
text: '允许查看所有交班记录'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
default: [{
|
|
||||||
key: 'yun_xu_xia_dan',
|
|
||||||
text: '允许下单'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_shou_kuan',
|
|
||||||
text: '允许收款'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_tui_kuan',
|
|
||||||
text: '允许退款'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_jiao_ban',
|
|
||||||
text: '允许交班'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
goods: [{
|
|
||||||
key: 'yun_xu_xiu_gai_shang_pin',
|
|
||||||
text: '允许修改商品'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_shang_xia_jia_shang_pin',
|
|
||||||
text: '允许上下架商品'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_xiu_gai_fen_lei',
|
|
||||||
text: '允许修改分类'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_xiu_gai_fen_zu',
|
|
||||||
text: '允许修改分组'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
discount:[
|
|
||||||
{
|
|
||||||
key: 'yun_xu_da_zhe',
|
|
||||||
text: '允许打折'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
vip:[
|
|
||||||
{
|
|
||||||
key: 'yun_xu_guan_li_hui_yuan_xin_xi',
|
|
||||||
text: '允许管理会员信息'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'yun_xu_xiu_gai_hui_yuan_yu_e',
|
|
||||||
text: '允许修改会员余额'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
stock:[
|
|
||||||
{
|
|
||||||
text: '允许提交报损',
|
|
||||||
key: 'yun_xu_ti_jiao_bao_sun'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '允许沽清',
|
|
||||||
key: 'yun_xu_gu_qing'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '允许售罄商品',
|
|
||||||
key: 'yun_xu_shou_qing_shang_pin'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text:'允许修改商品库存',
|
|
||||||
key:'yun_xu_xiu_gai_shang_pin_ku_cun'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '允许耗材入库',
|
|
||||||
key: 'yun_xu_hao_cai_ru_ku'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '允许耗材出库',
|
|
||||||
key: 'yun_xu_hao_cai_chu_ku'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '允许耗材盘点',
|
|
||||||
key: 'yun_xu_hao_cai_pan_dian'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function hasPermission (params) {
|
|
||||||
//如果是商户默认拥有全部权限
|
|
||||||
const loginType = localStorage.getItem('loginType')
|
|
||||||
if(loginType=='merchant'){
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
params = returnFormatParams(params)
|
|
||||||
if (!params) {
|
|
||||||
return Notification.error('未找到相关权限,请检查代码或在权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
|
|
||||||
}
|
|
||||||
const option = Object.assign({
|
|
||||||
tips: true,
|
|
||||||
key: '',
|
|
||||||
text: ''
|
|
||||||
}, params)
|
|
||||||
const res = await getHasPermission({
|
|
||||||
userId : userInfo.id,
|
|
||||||
|
|
||||||
code: params.key
|
|
||||||
})
|
|
||||||
if (!res && option.tips) {
|
|
||||||
Notification.error({
|
|
||||||
title: '您没有' + params.text + '权限!',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isObjectButNotArray(value) {
|
|
||||||
return typeof value === 'object' && Array.isArray(value) === false;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function findPermissionObj(str) {
|
|
||||||
for (let i in $PermissionObj) {
|
|
||||||
const obj = $PermissionObj[i].find(v => v.key == str || v.text == str)
|
|
||||||
if (obj) {
|
|
||||||
return obj
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.error('未找到相关权限配置,请检查权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
export function returnFormatParams(params) {
|
|
||||||
if (typeof params === 'string') {
|
|
||||||
return findPermissionObj(params)
|
|
||||||
} else {
|
|
||||||
if (isObjectButNotArray(params)) {
|
|
||||||
const obj=findPermissionObj(params.key || params.text)
|
|
||||||
return {...params,...obj}
|
|
||||||
} else {
|
|
||||||
console.error('参数只能是字符串或者对象,不能是数组')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
import OSS from "ali-oss";
|
|
||||||
import { $getCredentials } from "@/api/version";
|
|
||||||
|
|
||||||
const $headers = {
|
|
||||||
"Access-Control-Allow-Origin": "*"
|
|
||||||
};
|
|
||||||
const $config = {
|
|
||||||
region: "oss-cn-beijing",
|
|
||||||
accessKeyId: "",
|
|
||||||
accessKeySecret: "",
|
|
||||||
bucket: "cashier-oss"
|
|
||||||
}
|
|
||||||
import { Notification } from 'element-ui'
|
|
||||||
function urlConversion(path) {
|
|
||||||
let reg = /^(https?:\/\/)([0-9a-z.]+)(:[0-9]+)?([/0-9a-z.]+)?(\?[0-9a-z&=]+)?(#[0-9-a-z]+)?/i
|
|
||||||
path = path.replace(reg, "https://$2$3$4$5$6");
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
|
|
||||||
async function uploadAndDownloadFile(name, file, headers) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
try {
|
|
||||||
ossClient.put(name, file, { ...$headers, ...headers }).then((res) => {
|
|
||||||
console.log(res);
|
|
||||||
resolve(res);
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
class ossClient {
|
|
||||||
constructor(config) {
|
|
||||||
this.ossClient = new OSS({
|
|
||||||
...$config, ...config, refreshSTSToken: async () => {
|
|
||||||
// 向您搭建的STS服务获取临时访问凭证。
|
|
||||||
const res = await $getCredentials()
|
|
||||||
return {
|
|
||||||
accessKeyId: res.accessKeyId, // 自己账户的accessKeyId或临时秘钥
|
|
||||||
accessKeySecret: res.accessKeySecret, // 自己账户的accessKeySecret或临时秘钥
|
|
||||||
stsToken: res.securityToken, // 从STS服务获取的安全令牌(SecurityToken)。
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 刷新临时访问凭证的时间间隔,单位为毫秒。
|
|
||||||
refreshSTSTokenInterval: 3600 * 1000
|
|
||||||
});
|
|
||||||
}
|
|
||||||
async upload(name, file, progressCallback) {
|
|
||||||
try {
|
|
||||||
let options = {
|
|
||||||
// 获取分片上传进度、断点和返回值。
|
|
||||||
progress: progressCallback,
|
|
||||||
headers: $headers
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
res: resp
|
|
||||||
} = await this.ossClient.put(name, file, options).catch(error => {
|
|
||||||
reject(error);
|
|
||||||
})
|
|
||||||
return resp.requestUrls
|
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 分片上传
|
|
||||||
* @param {Object} client oss客户端
|
|
||||||
* @param {Object} file 上传的文件
|
|
||||||
* @param {Object} dir 上传oss的文件夹
|
|
||||||
* @param {Object} progressCallback 分片进度回调
|
|
||||||
*/
|
|
||||||
async partUpload(name, file, progressCallback) {
|
|
||||||
try {
|
|
||||||
let options = {
|
|
||||||
// 获取分片上传进度、断点和返回值。
|
|
||||||
progress: progressCallback,
|
|
||||||
|
|
||||||
// 设置并发上传的分片数量。
|
|
||||||
parallel: 8,
|
|
||||||
// 设置分片大小。默认值为1 MB,最小值为100 KB。
|
|
||||||
partSize: 100 * 1024,
|
|
||||||
mime: file.type
|
|
||||||
}
|
|
||||||
const {
|
|
||||||
res: resp
|
|
||||||
} = await this.ossClient.multipartUpload(name ? name : file.name, file, options)
|
|
||||||
// return resp.requestUrls
|
|
||||||
console.log('------resp---');
|
|
||||||
console.log(resp)
|
|
||||||
return urlConversion( `${resp.requestUrls[0]}`.split('?')[0])
|
|
||||||
} catch (e) {
|
|
||||||
console.log('------e---');
|
|
||||||
console.log(e);
|
|
||||||
if (e.name == 'cancel') {
|
|
||||||
Notification.error({
|
|
||||||
title: '上传已取消',
|
|
||||||
duration: 3000
|
|
||||||
})
|
|
||||||
return e
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 结束上传并删除碎片
|
|
||||||
* @param {Object} client
|
|
||||||
* @param {Object} uploadId
|
|
||||||
* @param {Object} name
|
|
||||||
*/
|
|
||||||
async abortUpload(uploadId, name) {
|
|
||||||
try {
|
|
||||||
const res=await this.ossClient.abortMultipartUpload(name, uploadId)
|
|
||||||
return res
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
return error
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
export default ossClient;
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
import axios from 'axios'
|
|
||||||
import router from '@/router/routers'
|
|
||||||
import { Notification } from 'element-ui'
|
|
||||||
import store from '../store'
|
|
||||||
import Config from '@/settings'
|
|
||||||
import Cookies from 'js-cookie'
|
|
||||||
import { setToken } from '@/utils/globalCancelToken.js'
|
|
||||||
function getToken() {
|
|
||||||
return localStorage.getItem('bausertoken')
|
|
||||||
}
|
|
||||||
// 创建axios实例
|
|
||||||
const service = axios.create({
|
|
||||||
// baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_BASE_API : '/',
|
|
||||||
baseURL: 'https://czgdoumei.sxczgkj.com/index.php/api/', // api 的 base_url
|
|
||||||
timeout: Config.timeout // 请求超时时间
|
|
||||||
})
|
|
||||||
|
|
||||||
// request拦截器
|
|
||||||
service.interceptors.request.use(
|
|
||||||
config => {
|
|
||||||
if (getToken()) {
|
|
||||||
config.headers['bausertoken'] = getToken()
|
|
||||||
}
|
|
||||||
config.headers['Content-Type'] = 'application/json'
|
|
||||||
// 添加可取消请求配置
|
|
||||||
config.cancelToken = new axios.CancelToken(c => setToken(c))
|
|
||||||
return config
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// response 拦截器
|
|
||||||
service.interceptors.response.use(
|
|
||||||
response => {
|
|
||||||
const data = response.data
|
|
||||||
console.log(data)
|
|
||||||
if (data.code == 0) {
|
|
||||||
Notification.error({
|
|
||||||
title: data.msg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (data.code == 439) {
|
|
||||||
Notification.error({
|
|
||||||
title: '请登录',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (data.code == 4399) {
|
|
||||||
Notification.error({
|
|
||||||
title: data.msg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
if (data.code == 1&&!data.data) {
|
|
||||||
// Notification.success({
|
|
||||||
// title: data.msg,
|
|
||||||
// duration: 5000
|
|
||||||
// })
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return data.data
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log(error);
|
|
||||||
if (axios.isCancel(error)) {
|
|
||||||
console.log('请求已取消')
|
|
||||||
Notification.error({
|
|
||||||
title: '请求已取消',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return Promise.reject('请求已取消')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 兼容blob下载出错json提示
|
|
||||||
if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) {
|
|
||||||
const reader = new FileReader()
|
|
||||||
reader.readAsText(error.response.data, 'utf-8')
|
|
||||||
reader.onload = function (e) {
|
|
||||||
const errorMsg = JSON.parse(reader.result).message
|
|
||||||
Notification.error({
|
|
||||||
title: errorMsg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let code = 0
|
|
||||||
try {
|
|
||||||
code = error.response.data.status
|
|
||||||
} catch (e) {
|
|
||||||
if (error.toString().indexOf('Error: timeout') !== -1) {
|
|
||||||
Notification.error({
|
|
||||||
title: '网络请求超时',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log(code)
|
|
||||||
if (code) {
|
|
||||||
if (code === 401) {
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
// 用户登录界面提示
|
|
||||||
Cookies.set('point', 401)
|
|
||||||
location.reload()
|
|
||||||
})
|
|
||||||
} else if (code === 403) {
|
|
||||||
router.push({ path: '/401' })
|
|
||||||
} else {
|
|
||||||
const errorMsg = error.response.data.message
|
|
||||||
if (errorMsg !== undefined) {
|
|
||||||
Notification.error({
|
|
||||||
title: errorMsg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Notification.error({
|
|
||||||
title: '接口请求失败',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
export default service
|
|
||||||
@@ -5,7 +5,7 @@ import store from '../store'
|
|||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
import Config from '@/settings'
|
import Config from '@/settings'
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import { setToken } from '@/utils/globalCancelToken.js'
|
|
||||||
// 创建axios实例
|
// 创建axios实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
// baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_BASE_API : '/',
|
// baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_BASE_API : '/',
|
||||||
@@ -23,8 +23,6 @@ service.interceptors.request.use(
|
|||||||
config.headers['loginName'] = 'admin'
|
config.headers['loginName'] = 'admin'
|
||||||
config.headers['token'] = 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyVHlwZSI6Ik1HIiwiZXhwIjoxNjkwMTgwNzE2LCJ1c2VySWQiOiIyNDQiLCJpYXQiOjE2ODg3MDk0ODcsImxvZ2luTmFtZSI6ImFkbWluIn0.lqxxvv2-FcecQngMBorz4MpkB3mIJQDG-IUULQyV-KQ'
|
config.headers['token'] = 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyVHlwZSI6Ik1HIiwiZXhwIjoxNjkwMTgwNzE2LCJ1c2VySWQiOiIyNDQiLCJpYXQiOjE2ODg3MDk0ODcsImxvZ2luTmFtZSI6ImFkbWluIn0.lqxxvv2-FcecQngMBorz4MpkB3mIJQDG-IUULQyV-KQ'
|
||||||
config.headers["userId"] = '244'
|
config.headers["userId"] = '244'
|
||||||
// 添加可取消请求配置
|
|
||||||
config.cancelToken = new axios.CancelToken(c => setToken(c))
|
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
@@ -39,15 +37,6 @@ service.interceptors.response.use(
|
|||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
if (axios.isCancel(error)) {
|
|
||||||
console.log('请求已取消')
|
|
||||||
Notification.error({
|
|
||||||
title: '请求已取消',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return Promise.reject('请求已取消')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 兼容blob下载出错json提示
|
// 兼容blob下载出错json提示
|
||||||
if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) {
|
if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) {
|
||||||
const reader = new FileReader()
|
const reader = new FileReader()
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
import axios from 'axios'
|
|
||||||
import router from '@/router/routers'
|
|
||||||
import { Notification } from 'element-ui'
|
|
||||||
import store from '../store'
|
|
||||||
import { getToken } from '@/utils/auth'
|
|
||||||
import Config from '@/settings'
|
|
||||||
import Cookies from 'js-cookie'
|
|
||||||
|
|
||||||
// 创建axios实例
|
|
||||||
const service = axios.create({
|
|
||||||
baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_PHP_API: '/source',
|
|
||||||
// baseURL: process.env.VUE_APP_PHP_API, // api 的 base_url
|
|
||||||
timeout: Config.timeout // 请求超时时间
|
|
||||||
})
|
|
||||||
|
|
||||||
// request拦截器
|
|
||||||
service.interceptors.request.use(
|
|
||||||
config => {
|
|
||||||
// if (getToken()) {
|
|
||||||
// config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
|
||||||
// }
|
|
||||||
config.headers['Content-Type'] = 'text/html; charset=UTF-8'
|
|
||||||
// config.headers['loginName'] = 'admin'
|
|
||||||
// config.headers['token'] = 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyVHlwZSI6Ik1HIiwiZXhwIjoxNjkwMTgwNzE2LCJ1c2VySWQiOiIyNDQiLCJpYXQiOjE2ODg3MDk0ODcsImxvZ2luTmFtZSI6ImFkbWluIn0.lqxxvv2-FcecQngMBorz4MpkB3mIJQDG-IUULQyV-KQ'
|
|
||||||
// config.headers["userId"] = '244'
|
|
||||||
return config
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// response 拦截器
|
|
||||||
service.interceptors.response.use(
|
|
||||||
response => {
|
|
||||||
return response.data
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log(error);
|
|
||||||
// 兼容blob下载出错json提示
|
|
||||||
if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) {
|
|
||||||
const reader = new FileReader()
|
|
||||||
reader.readAsText(error.response.data, 'utf-8')
|
|
||||||
reader.onload = function (e) {
|
|
||||||
const errorMsg = JSON.parse(reader.result).message
|
|
||||||
Notification.error({
|
|
||||||
title: errorMsg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let code = 0
|
|
||||||
try {
|
|
||||||
code = error.response.data.status
|
|
||||||
} catch (e) {
|
|
||||||
if (error.toString().indexOf('Error: timeout') !== -1) {
|
|
||||||
Notification.error({
|
|
||||||
title: '网络请求超时',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log(code)
|
|
||||||
if (code) {
|
|
||||||
if (code === 401) {
|
|
||||||
store.dispatch('LogOut').then(() => {
|
|
||||||
// 用户登录界面提示
|
|
||||||
Cookies.set('point', 401)
|
|
||||||
location.reload()
|
|
||||||
})
|
|
||||||
} else if (code === 403) {
|
|
||||||
router.push({ path: '/401' })
|
|
||||||
} else {
|
|
||||||
const errorMsg = error.response.data.message
|
|
||||||
if (errorMsg !== undefined) {
|
|
||||||
Notification.error({
|
|
||||||
title: errorMsg,
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Notification.error({
|
|
||||||
title: '接口请求失败',
|
|
||||||
duration: 5000
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
export default service
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
export const $status= {
|
|
||||||
pending: {
|
|
||||||
label: "挂单中",
|
|
||||||
type: "#E6A23C",
|
|
||||||
},
|
|
||||||
using: {
|
|
||||||
label: "开台中",
|
|
||||||
type: "#fa5555",
|
|
||||||
},
|
|
||||||
paying: {
|
|
||||||
label: "结算中",
|
|
||||||
type: "#E6A23C",
|
|
||||||
},
|
|
||||||
idle: {
|
|
||||||
label: "空闲",
|
|
||||||
type: "#3F9EFF",
|
|
||||||
},
|
|
||||||
subscribe: {
|
|
||||||
label: "预定",
|
|
||||||
type: "rgb(34, 191, 100)",
|
|
||||||
},
|
|
||||||
closed: {
|
|
||||||
label: "关台",
|
|
||||||
type: "rgb(221,221,221)",
|
|
||||||
},
|
|
||||||
// opening: {
|
|
||||||
// label: "开台中",
|
|
||||||
// type: "#67C23A",
|
|
||||||
// },
|
|
||||||
cleaning: {
|
|
||||||
label: "待清台",
|
|
||||||
type: "#FAAD14",
|
|
||||||
},
|
|
||||||
unbind:{
|
|
||||||
label: "未绑定",
|
|
||||||
type: "rgb(221,221,221)",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,257 +0,0 @@
|
|||||||
<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(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
|
|
||||||
|
|
||||||
:on-preview="handlePictureCardPreview"
|
|
||||||
:on-remove="handleRemove">
|
|
||||||
<i class="el-icon-plus"></i>
|
|
||||||
</el-upload> -->
|
|
||||||
|
|
||||||
|
|
||||||
<el-upload class="upload-demo" :action="qiNiuUploadApi" list-type="picture-card" :headers="headers"
|
|
||||||
:limit="1" :on-remove="removeEvent" :on-success="successEvent" :file-list="fileList">
|
|
||||||
<i class="el-icon-plus"></i>
|
|
||||||
</el-upload>
|
|
||||||
<div slot="tip" class="el-upload__tip">建议尺寸:520px*680px</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="圆角设置">
|
|
||||||
<el-slider v-model="form.borderRadius" :max="20"></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 clearable 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: "",
|
|
||||||
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(d) {
|
|
||||||
if (!d.imgUrl) {
|
|
||||||
this.form.imgUrl = this.fileList
|
|
||||||
}
|
|
||||||
await adput({
|
|
||||||
imgUrl:d.imgUrl,
|
|
||||||
id: d.id,
|
|
||||||
shopId: this.form.shopId,
|
|
||||||
status: d.status,
|
|
||||||
})
|
|
||||||
this.$message({
|
|
||||||
message: '成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
this.getList()
|
|
||||||
},
|
|
||||||
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>
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<div class="container">
|
|
||||||
<el-form ref="form" :model="form" label-width="140px" label-position="left">
|
|
||||||
<el-form-item label="功能启用">
|
|
||||||
<el-switch v-model="form.enable"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="充值设置">
|
|
||||||
<template>
|
|
||||||
<div class="labelbox">
|
|
||||||
用户消费结账时,成功充值消费
|
|
||||||
<el-input style="width: 80px;margin: 0 15px;" v-model="form.rechargeTimes"></el-input>
|
|
||||||
倍的金额,本单即可享受免单
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="充值门槛">
|
|
||||||
<template>
|
|
||||||
<div class="labelbox">
|
|
||||||
订单支付金额需满
|
|
||||||
<el-input style="width: 80px;margin: 0 15px;" v-model="form.rechargeThreshold"></el-input>
|
|
||||||
元才能使用
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item label="适用门店">
|
|
||||||
<el-radio-group v-model="form.resource">
|
|
||||||
<el-radio label="全部门店"></el-radio>
|
|
||||||
<el-radio label="指定门店"></el-radio>
|
|
||||||
<el-radio label="仅本店使用"></el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item> -->
|
|
||||||
<!-- <el-form-item label="使用方式">
|
|
||||||
<el-checkbox-group v-model="form.useTypeList">
|
|
||||||
<el-checkbox label="堂食" name="dine-in" value="dine-in"></el-checkbox>
|
|
||||||
<el-checkbox label="自取" name="takeout" value="takeout"></el-checkbox>
|
|
||||||
<el-checkbox label="配送" name="takeaway" value="takeaway"></el-checkbox>
|
|
||||||
<el-checkbox label="快递" name="post" value="post"></el-checkbox>
|
|
||||||
</el-checkbox-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否与优惠券共享">
|
|
||||||
<el-switch v-model="form.withCoupon"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否与积分共享">
|
|
||||||
<el-switch v-model="form.withPoints"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="不参与集章">
|
|
||||||
<el-switch v-model="form.childShopIdList"></el-switch>
|
|
||||||
</el-form-item> -->
|
|
||||||
<el-form-item label="充值说明">
|
|
||||||
<el-input type="textarea" v-model="form.rechargeDesc"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="editlist">保存</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { get, edit } from "@/api/bwc";
|
|
||||||
export default {
|
|
||||||
name: 'bwc',
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
form: {
|
|
||||||
id: '',
|
|
||||||
enable: '',
|
|
||||||
rechargeTimes: '',
|
|
||||||
rechargeThreshold: '',
|
|
||||||
withCoupon: '',
|
|
||||||
withPoints: '',
|
|
||||||
rechargeDesc: '',
|
|
||||||
useTypeList: [],
|
|
||||||
childShopIdList: '',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.getlist()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async getlist() {
|
|
||||||
let res = await get({
|
|
||||||
shopId: localStorage.getItem("shopId")
|
|
||||||
})
|
|
||||||
this.form = res
|
|
||||||
},
|
|
||||||
async editlist() {
|
|
||||||
this.form.shopId = localStorage.getItem("shopId")
|
|
||||||
let res = await edit(this.form)
|
|
||||||
this.$message({
|
|
||||||
message: '保存成功',
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
this.form = res
|
|
||||||
},
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.app-container {
|
|
||||||
padding: 12px 20px;
|
|
||||||
height: auto;
|
|
||||||
background-color: #f4f9ff;
|
|
||||||
|
|
||||||
.container {
|
|
||||||
padding: 30px;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: #FFFFFF;
|
|
||||||
|
|
||||||
.labelbox {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #666666;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<div class="head-container flex">
|
|
||||||
<el-button type="primary" icon="el-icon-plus" @click="$refs.addSong.show()">
|
|
||||||
添加歌曲
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<div class="flex">
|
|
||||||
<span>歌手页地址:</span>
|
|
||||||
<a class="cursor-pointer" target="_blank" :href="singgerUrl">{{singgerUrl}}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="head-container" id="table_drag">
|
|
||||||
<el-table :data="tableData.list" v-loading="tableData.loading" row-key="id">
|
|
||||||
<el-table-column label="排序" sortable prop="sort"></el-table-column>
|
|
||||||
<el-table-column label="id" prop="id"></el-table-column>
|
|
||||||
<el-table-column label="歌曲图片" prop="img">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-image :src="scope.row.img"
|
|
||||||
style="width:40px;height: 40px;border-radius: 4px;background-color: #efefef;">
|
|
||||||
<div class="img_error" slot="error">
|
|
||||||
<i class="icon el-icon-document-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="歌曲名称" prop="name"></el-table-column>
|
|
||||||
<el-table-column label="演出歌手" prop="singer"></el-table-column>
|
|
||||||
<el-table-column label="单价" prop="price"></el-table-column>
|
|
||||||
<el-table-column label="点唱次数" prop="salesNumber"></el-table-column>
|
|
||||||
<el-table-column label="歌曲状态" prop="status">
|
|
||||||
<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 label="操作" width="240">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<!-- <el-button type="text" icon="el-icon-rank" v-if="isPcBowser">排序</el-button>
|
|
||||||
<el-button type="text" size="mini" round icon="el-icon-edit" @click="$refs.addSong.show(scope.row)"
|
|
||||||
style="margin-left: 20px !important;">编辑</el-button> -->
|
|
||||||
<el-button type="text" size="mini" round icon="el-icon-edit" @click="$refs.addSong.show(scope.row)">编辑</el-button>
|
|
||||||
<el-popconfirm title="确定删除吗?" @confirm="delHandle([scope.row.id])">
|
|
||||||
<el-button type="text" size="mini" round icon="el-icon-delete" slot="reference">
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</el-popconfirm>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<addSong ref="addSong" @success="addSongSuccess"></addSong>
|
|
||||||
<el-pagination @size-change="paginationSizeChange" :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
|
||||||
@current-change="paginationChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import Sortable from 'sortablejs'
|
|
||||||
import {
|
|
||||||
tbShopSonglist,tbShopSongDel,tbShopSongEdit
|
|
||||||
} from '@/api/application-song'
|
|
||||||
import addSong from './componentsCompoents/add-song.vue'
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
addSong
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
singgerUrl:'',
|
|
||||||
tableData: {
|
|
||||||
page: 0,
|
|
||||||
size: 10,
|
|
||||||
total: 0,
|
|
||||||
loading: false,
|
|
||||||
list: []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
jumpUrl(url){
|
|
||||||
window.open(url)
|
|
||||||
},
|
|
||||||
addSongSuccess() {
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
paginationSizeChange(e){
|
|
||||||
this.tableData.size = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
async showChange(e,row){
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
const data = { ...row }
|
|
||||||
data.status = e
|
|
||||||
await tbShopSongEdit(data, 'put')
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
this.tableData.loading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.tableData.page = 0;
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e - 1
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
async delHandle(ids) {
|
|
||||||
try {
|
|
||||||
await tbShopSongDel(ids)
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `删除成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 获取音乐列表
|
|
||||||
async getTableData() {
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
const res = await tbShopSonglist({
|
|
||||||
page: this.tableData.page+1,
|
|
||||||
size: this.tableData.size,
|
|
||||||
sort: 'id',
|
|
||||||
shopId: localStorage.getItem('shopId')
|
|
||||||
})
|
|
||||||
this.tableData.loading = false
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
const baseUrl=location.hostname==='localhost'? 'https://admintestweb.sxczgkj.cn': location.origin
|
|
||||||
this.singgerUrl = baseUrl+'/song-H5/index.html?t='+res.songUrl
|
|
||||||
} catch (error) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.flex{
|
|
||||||
display: flex;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
.cursor-pointer{
|
|
||||||
cursor: pointer;
|
|
||||||
color: #1890ff!important;
|
|
||||||
transition: all 0.3s;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
.cursor-pointer:hover{
|
|
||||||
opacity: .7;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
<!-- 添加优惠券 -->
|
|
||||||
<template>
|
|
||||||
<el-dialog :title="type == 1 ? '编辑优惠券' : '添加优惠券'" :visible.sync="dialogVisible" @close="reset">
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
|
|
||||||
<el-form-item label="券名称" prop="couponId">
|
|
||||||
<el-select v-model="form.couponId" placeholder="请选择优惠券">
|
|
||||||
<el-option :label="item.title" :value="item.id" v-for="item in coupons" :key="item.id"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数量">
|
|
||||||
<el-input-number v-model="form.couponNum" :min="1"></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" :loading="loading" @click="onSubmitHandle">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { getTbShopCoupon } from '@/api/coupon.js'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
loading: false,
|
|
||||||
coupons: [],
|
|
||||||
type: 1,
|
|
||||||
form: {
|
|
||||||
couponId: '',
|
|
||||||
couponName: '',
|
|
||||||
couponNum: ''
|
|
||||||
},
|
|
||||||
resetForm: {},
|
|
||||||
rules: {
|
|
||||||
couponId: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请选择优惠券',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetForm = { ...this.form }
|
|
||||||
this.getTbShopCoupon()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 提交
|
|
||||||
onSubmitHandle() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
this.form.couponName = this.coupons.find(item => item.id == this.form.couponId).title
|
|
||||||
this.$emit('success', { ...this.form })
|
|
||||||
this.close()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取优惠券列表
|
|
||||||
async getTbShopCoupon() {
|
|
||||||
try {
|
|
||||||
const res = await getTbShopCoupon({
|
|
||||||
shopId: localStorage.getItem('shopId'),
|
|
||||||
type: 1,
|
|
||||||
page: 1,
|
|
||||||
size: 100
|
|
||||||
})
|
|
||||||
this.coupons = res.content
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
reset() {
|
|
||||||
this.form = { ...this.resetForm }
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
show(row) {
|
|
||||||
if (row && row.couponId) {
|
|
||||||
this.type = 1
|
|
||||||
this.form = { ...row }
|
|
||||||
} else {
|
|
||||||
this.type = 2
|
|
||||||
}
|
|
||||||
this.dialogVisible = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<el-form :model="query" inline label-position="left">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input placeholder="邀请人名称/被邀请人/昵称/手机号" v-model="query.search" style="width: 240px;" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-select v-model="query.status" placeholder="状态" style="width: 140px;">
|
|
||||||
<el-option :label="item.label" :value="item.value" v-for="item in statusList"
|
|
||||||
:key="item.value"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item>
|
|
||||||
<el-date-picker v-model="query.createdAt" type="daterange" range-separator="至"
|
|
||||||
start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss">
|
|
||||||
</el-date-picker>
|
|
||||||
</el-form-item> -->
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="queryHandle">查询</el-button>
|
|
||||||
<el-button @click="resetHandle">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table :data="tableData.list" v-loading="tableData.loading">
|
|
||||||
<el-table-column label="邀请人" prop="invitedName">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="scope.row.invitedHeadImg" style="width:40px;height:40px;flex-shrink: 0;"
|
|
||||||
:preview-src-list="avatarUrlList1">
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-folder-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<span>{{ scope.row.invitedName }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="被邀请人" prop="beInvitedName">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="scope.row.beInvitedHeadImg" style="width:40px;height:40px;flex-shrink: 0;"
|
|
||||||
:preview-src-list="avatarUrlList2">
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-folder-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<span>{{ scope.row.beInvitedName }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="邀请状态" prop="status">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<template v-if="scope.row.method == 'get' && scope.row.status == 2">
|
|
||||||
<el-tag type="success" disable-transitions>已邀请成功</el-tag>
|
|
||||||
</template>
|
|
||||||
<template v-else-if="scope.row.method == 'use' && scope.row.status == 3">
|
|
||||||
<el-tag type="success" disable-transitions>已邀请成功</el-tag>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<el-tag type="danger" disable-transitions>未邀请成功</el-tag>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="邀请时间" prop="createTime"></el-table-column>
|
|
||||||
<el-table-column label="生效时间" prop="updateTime">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<template v-if="scope.row.method == 'get'">{{ scope.row.updateTime }}</template>
|
|
||||||
<template v-if="scope.row.method == 'use'">{{ scope.row.rewardTime }}</template>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-pagination :total="tableData.total" @size-change="handleSizeChange" :current-page="tableData.page"
|
|
||||||
:page-size="tableData.size" @current-change="paginationChange"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { byShare, byShopId } from '@/api/inviteFirend.js'
|
|
||||||
const statusList = [
|
|
||||||
{
|
|
||||||
value: 0,
|
|
||||||
label: '非新用户'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 1,
|
|
||||||
label: '未领取'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 2,
|
|
||||||
label: '已领取'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 3,
|
|
||||||
label: '已使用'
|
|
||||||
},
|
|
||||||
]
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
statusList,
|
|
||||||
avatarUrlList1: [],
|
|
||||||
avatarUrlList2: [],
|
|
||||||
shareId: '',
|
|
||||||
query: {
|
|
||||||
search: '',
|
|
||||||
status: ''
|
|
||||||
},
|
|
||||||
resetQuery: '',
|
|
||||||
tableData: {
|
|
||||||
list: [],
|
|
||||||
page: 1,
|
|
||||||
size: 30,
|
|
||||||
loading: false,
|
|
||||||
total: 0
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
filters: {
|
|
||||||
statusFilter(t) {
|
|
||||||
return statusList.find(item => item.value == t).label
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetQuery = { ...this.query }
|
|
||||||
this.byShopId()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 查询
|
|
||||||
queryHandle() {
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.query = { ...this.resetQuery }
|
|
||||||
this.page = 1
|
|
||||||
this.size = 30
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页大小改变
|
|
||||||
handleSizeChange(val) {
|
|
||||||
this.tableData.size = val
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 获取邀请设置
|
|
||||||
async byShopId() {
|
|
||||||
try {
|
|
||||||
const res = await byShopId()
|
|
||||||
this.shareId = res.id
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 获取表格数据
|
|
||||||
async getTableData() {
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
const res = await byShare({
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size,
|
|
||||||
search: this.query.search,
|
|
||||||
status: this.query.status,
|
|
||||||
shareId: this.shareId
|
|
||||||
})
|
|
||||||
this.tableData.loading = false
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
// 头像预览图集合
|
|
||||||
this.avatarUrlList1 = res.content.map(item => item.invitedHeadImg)
|
|
||||||
this.avatarUrlList2 = res.content.map(item => item.beInvitedHeadImg)
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.goods_info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.collect_wrap {
|
|
||||||
display: flex;
|
|
||||||
gap: 14px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
width: 200px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
padding: 20px;
|
|
||||||
|
|
||||||
.icon_wrap {
|
|
||||||
$size: 34px;
|
|
||||||
$border: 6px;
|
|
||||||
width: $size;
|
|
||||||
height: $size;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
border-radius: 50%;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
width: $size + $border;
|
|
||||||
height: $size + $border;
|
|
||||||
border-radius: 50%;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding-left: 10px;
|
|
||||||
|
|
||||||
.m {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.t {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #999;
|
|
||||||
padding-top: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,377 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left">
|
|
||||||
<el-form-item label="开启">
|
|
||||||
<el-switch v-model.trim="form.status" :active-value="1" :inactive-value="0"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<template v-if="form.status">
|
|
||||||
<el-form-item label="标题" prop="title">
|
|
||||||
<el-input v-model="form.title" style="width: 500px;" placeholder="例如:邀请1人可得,双方各得10元优惠券"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="分享封面图" prop="shareImg">
|
|
||||||
<div class="img_list">
|
|
||||||
<div class="item" v-if="form.shareImg">
|
|
||||||
<el-image :src="form.shareImg" style="width: 100%;height: 100%"
|
|
||||||
:preview-src-list="urlList" />
|
|
||||||
<div class="del" @click.stop="form.shareImg = ''">删除</div>
|
|
||||||
</div>
|
|
||||||
<div class="item upload" @click="formImgKey = 'shareImg'; $refs.addImg.show()" v-else>
|
|
||||||
<i class="icon el-icon-plus"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tips">建议尺寸:750*622</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="邀请顶部图" prop="invitedImg">
|
|
||||||
<div class="img_list">
|
|
||||||
<div class="item" v-if="form.invitedImg">
|
|
||||||
<el-image :src="form.invitedImg" style="width: 100%;height: 100%"
|
|
||||||
:preview-src-list="urlList" />
|
|
||||||
<div class="del" @click.stop="form.invitedImg = ''">删除</div>
|
|
||||||
</div>
|
|
||||||
<div class="item upload" @click="formImgKey = 'invitedImg'; $refs.addImg.show()" v-else>
|
|
||||||
<i class="icon el-icon-plus"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tips">建议尺寸:750*622</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="被邀顶部图" prop="beInvitedImg">
|
|
||||||
<div class="img_list">
|
|
||||||
<div class="item" v-if="form.beInvitedImg">
|
|
||||||
<el-image :src="form.beInvitedImg" style="width: 100%;height: 100%"
|
|
||||||
:preview-src-list="urlList" />
|
|
||||||
<div class="del" @click.stop="form.beInvitedImg = ''">删除</div>
|
|
||||||
</div>
|
|
||||||
<div class="item upload" @click="formImgKey = 'beInvitedImg'; $refs.addImg.show()" v-else>
|
|
||||||
<i class="icon el-icon-plus"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tips">建议尺寸:750*622</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="活动日期" prop="startTime">
|
|
||||||
<el-date-picker v-model="createdAt" type="daterange" range-separator="至" start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss" @change="timeChange">
|
|
||||||
</el-date-picker>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="新用户获得券" prop="newCoupons">
|
|
||||||
<div>
|
|
||||||
<el-button type="primary" @click="addRewardHandle('newCoupons')">添加券</el-button>
|
|
||||||
<div class="tips">新用户的定义:没领过该活动券的都属于新用户,不管有没有下过单和是否第一次登录小程序。</div>
|
|
||||||
</div>
|
|
||||||
<el-table :data="form.newCoupons" border style="width: 600px;">
|
|
||||||
<el-table-column label="券ID" prop="couponId"></el-table-column>
|
|
||||||
<el-table-column label="名称" prop="couponName"></el-table-column>
|
|
||||||
<el-table-column label="数量" prop="couponNum"></el-table-column>
|
|
||||||
<el-table-column label="操作">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="text"
|
|
||||||
@click="addRewardHandle('newCoupons', 2, scope.row, scope.$index)">编辑</el-button>
|
|
||||||
<el-button type="text" @click="form.newCoupons.splice(scope.$index, 1)">删除</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="奖励券" prop="invitedNum">
|
|
||||||
<el-input v-model="form.invitedNum" style="width: 350px;"
|
|
||||||
@input="inputFilterInt($event, 'invitedNum')">
|
|
||||||
<template slot="prepend">用户每邀请</template>
|
|
||||||
<template slot="append">人,可获得奖励券</template>
|
|
||||||
</el-input>
|
|
||||||
<el-button type="primary" @click="addRewardHandle('rewardCoupons')">添加券</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="rewardCoupons">
|
|
||||||
<div>
|
|
||||||
<div class="tips">奖励券不受优惠券发放数量影响</div>
|
|
||||||
</div>
|
|
||||||
<el-table :data="form.rewardCoupons" border style="width: 600px;">
|
|
||||||
<el-table-column label="券ID" prop="couponId"></el-table-column>
|
|
||||||
<el-table-column label="名称" prop="couponName"></el-table-column>
|
|
||||||
<el-table-column label="数量" prop="couponNum"></el-table-column>
|
|
||||||
<el-table-column label="操作">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="text"
|
|
||||||
@click="addRewardHandle('rewardCoupons', 2, scope.row, scope.$index)">编辑</el-button>
|
|
||||||
<el-button type="text"
|
|
||||||
@click="form.rewardCoupons.splice(scope.$index, 1)">删除</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="奖励获得方法">
|
|
||||||
<el-radio-group v-model="form.getMethod">
|
|
||||||
<el-radio label="get">新用户领取获得</el-radio>
|
|
||||||
<el-radio label="use">仅新用户使用获得会员</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" :loading="loading" @click="onSubmitHandle">保存</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<addImg ref="addImg" @successEvent="e => form[formImgKey] = e[0].url" />
|
|
||||||
<AddCoupon ref="AddCoupon" @success="addCouponSuccess" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { byShopId, tbShopShare } from '@/api/inviteFirend.js'
|
|
||||||
import addImg from "@/views/product/components/addImages.vue";
|
|
||||||
import AddCoupon from './addCoupon.vue'
|
|
||||||
export default {
|
|
||||||
components: { addImg, AddCoupon },
|
|
||||||
data() {
|
|
||||||
const imgValidate1 = (rule, value, callback) => {
|
|
||||||
if (!this.form.shareImg) {
|
|
||||||
callback(new Error("请上传分享封面图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const imgValidate2 = (rule, value, callback) => {
|
|
||||||
if (!this.form.invitedImg) {
|
|
||||||
callback(new Error("请上传邀请顶部图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const imgValidate3 = (rule, value, callback) => {
|
|
||||||
if (!this.form.beInvitedImg) {
|
|
||||||
callback(new Error("请上传被邀顶部图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const startTimeValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.startTime) {
|
|
||||||
callback(new Error("请选择活动日期"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const newCouponsValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.newCoupons.length) {
|
|
||||||
callback(new Error("请添加新用户获得券"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const rewardCouponsValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.rewardCoupons.length) {
|
|
||||||
callback(new Error("请添加奖励券"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
loading: false,
|
|
||||||
createdAt: [],
|
|
||||||
formImgKey: '',
|
|
||||||
couponKey: '',
|
|
||||||
tableType: '1', // 1添加 2编辑
|
|
||||||
tableEditorIndex: 0, // 编辑时的index
|
|
||||||
form: {
|
|
||||||
status: 1,
|
|
||||||
title: '',
|
|
||||||
shareImg: '',
|
|
||||||
invitedImg: '',
|
|
||||||
beInvitedImg: '',
|
|
||||||
startTime: '',
|
|
||||||
endTime: '',
|
|
||||||
newCoupons: [],
|
|
||||||
invitedNum: '1',
|
|
||||||
rewardCoupons: [],
|
|
||||||
getMethod: 'get'
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
title: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入标题',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
shareImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate1,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
invitedImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate2,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
beInvitedImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate3,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
startTime: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: startTimeValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
newCoupons: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: newCouponsValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
invitedNum: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入邀请人数',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rewardCoupons: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: rewardCouponsValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
urlList: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.byShopId()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 添加完成优惠券
|
|
||||||
addCouponSuccess(e) {
|
|
||||||
if (this.tableType == 1) {
|
|
||||||
this.form[this.couponKey].push({ ...e })
|
|
||||||
} else {
|
|
||||||
// this.form[this.couponKey][this.tableEditorIndex] = { ...e }
|
|
||||||
this.$set(this.form[this.couponKey], this.tableEditorIndex, { ...e })
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 添加奖励券
|
|
||||||
addRewardHandle(key, type = 1, row = {}, index = 0) {
|
|
||||||
this.tableEditorIndex = index
|
|
||||||
this.tableType = type
|
|
||||||
this.couponKey = key
|
|
||||||
if (key == 'rewardCoupons' && !this.form.invitedNum) {
|
|
||||||
this.$refs.form.validateField('invitedNum')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$refs.AddCoupon.show(row)
|
|
||||||
},
|
|
||||||
// 日期回调
|
|
||||||
timeChange(e) {
|
|
||||||
this.form.startTime = e[0]
|
|
||||||
this.form.endTime = e[1]
|
|
||||||
},
|
|
||||||
// 过滤input只能输入整数
|
|
||||||
inputFilterInt(e, key) {
|
|
||||||
if (!e) return
|
|
||||||
setTimeout(() => {
|
|
||||||
this.form[key] = e.replace(/[^\d]/g, '')
|
|
||||||
}, 50)
|
|
||||||
},
|
|
||||||
// 提交
|
|
||||||
onSubmitHandle() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
this.loading = true
|
|
||||||
this.form.shopId = localStorage.getItem('shopId')
|
|
||||||
await tbShopShare(this.form)
|
|
||||||
this.loading = false
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `保存成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
this.loading = false
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取店铺设置
|
|
||||||
async byShopId() {
|
|
||||||
try {
|
|
||||||
const res = await byShopId()
|
|
||||||
if (res.id) {
|
|
||||||
this.form = res
|
|
||||||
this.createdAt = [res.startTime, res.endTime]
|
|
||||||
this.urlList = [res.shareImg, res.invitedImg, res.beInvitedImg]
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.img_list {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: #F5F7FA;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
&.upload {
|
|
||||||
border: 1px dashed #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.del {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.del {
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: rgba(255, 0, 0, 0.6);
|
|
||||||
backdrop-filter: blur(3px);
|
|
||||||
color: #fff;
|
|
||||||
font-size: 12px;
|
|
||||||
transform: translateY(100%);
|
|
||||||
transition: all .2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 20px;
|
|
||||||
color: #ddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,447 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left">
|
|
||||||
<el-form-item label="分享标题" prop="title">
|
|
||||||
<el-input v-model="form.title" style="width: 500px;" placeholder="例如:邀请1人可得,双方各得10元优惠券"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="分享封面" prop="shareImg">
|
|
||||||
<div class="img_list">
|
|
||||||
<div class="item" v-if="form.shareImg">
|
|
||||||
<el-image :src="form.shareImg" style="width: 100%;height: 100%" :preview-src-list="urlList" />
|
|
||||||
<div class="del" @click.stop="form.shareImg = ''">删除</div>
|
|
||||||
</div>
|
|
||||||
<div class="item upload" @click="formImgKey = 'shareImg'; $refs.addImg.show()" v-else>
|
|
||||||
<i class="icon el-icon-plus"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tips">建议尺寸:630*504</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="演示">
|
|
||||||
<div class="preview_wrap">
|
|
||||||
<div class="message_wrap">
|
|
||||||
<div class="msg">
|
|
||||||
<div class="content">
|
|
||||||
<div class="name">
|
|
||||||
<img class="logo" :src="shopInfo.logo">
|
|
||||||
<span class="t">{{ shopInfo.name }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="title">{{ form.title }}</div>
|
|
||||||
<el-image :src="form.shareImg" style="width: 100%;height: 110px;" fit="cover">
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-folder-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<div class="btm">
|
|
||||||
<i class="icon el-icon-link"></i>
|
|
||||||
小程序
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="avatar" src="@/assets/images/avatar.png">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
|
||||||
<i class="icon el-icon-microphone"></i>
|
|
||||||
<div class="ipt"></div>
|
|
||||||
<i class="icon el-icon-picture-outline-round"></i>
|
|
||||||
<i class="icon el-icon-circle-plus-outline"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" :loading="loading" @click="onSubmitHandle">保存</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<addImg ref="addImg" @successEvent="e => form[formImgKey] = e[0].url" />
|
|
||||||
<AddCoupon ref="AddCoupon" @success="addCouponSuccess" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { byShopId, tbShopShare } from '@/api/inviteFirend.js'
|
|
||||||
import addImg from "@/views/product/components/addImages.vue";
|
|
||||||
import AddCoupon from './addCoupon.vue'
|
|
||||||
export default {
|
|
||||||
components: { addImg, AddCoupon },
|
|
||||||
data() {
|
|
||||||
const imgValidate1 = (rule, value, callback) => {
|
|
||||||
if (!this.form.shareImg) {
|
|
||||||
callback(new Error("请上传分享封面图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const imgValidate2 = (rule, value, callback) => {
|
|
||||||
if (!this.form.invitedImg) {
|
|
||||||
callback(new Error("请上传邀请顶部图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const imgValidate3 = (rule, value, callback) => {
|
|
||||||
if (!this.form.beInvitedImg) {
|
|
||||||
callback(new Error("请上传被邀顶部图"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const startTimeValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.startTime) {
|
|
||||||
callback(new Error("请选择活动日期"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const newCouponsValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.newCoupons.length) {
|
|
||||||
callback(new Error("请添加新用户获得券"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const rewardCouponsValidate = (rule, value, callback) => {
|
|
||||||
if (!this.form.rewardCoupons.length) {
|
|
||||||
callback(new Error("请添加奖励券"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
loading: false,
|
|
||||||
createdAt: [],
|
|
||||||
formImgKey: '',
|
|
||||||
couponKey: '',
|
|
||||||
tableType: '1', // 1添加 2编辑
|
|
||||||
tableEditorIndex: 0, // 编辑时的index
|
|
||||||
shopInfo: {
|
|
||||||
name: localStorage.getItem('shopName'),
|
|
||||||
logo: localStorage.getItem('logo')
|
|
||||||
},
|
|
||||||
form: {
|
|
||||||
status: 1,
|
|
||||||
title: '',
|
|
||||||
shareImg: '',
|
|
||||||
invitedImg: '',
|
|
||||||
beInvitedImg: '',
|
|
||||||
startTime: '',
|
|
||||||
endTime: '',
|
|
||||||
newCoupons: [],
|
|
||||||
invitedNum: '1',
|
|
||||||
rewardCoupons: [],
|
|
||||||
getMethod: 'get'
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
title: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入标题',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
shareImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate1,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
invitedImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate2,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
beInvitedImg: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: imgValidate3,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
startTime: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: startTimeValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
newCoupons: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: newCouponsValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
invitedNum: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入邀请人数',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rewardCoupons: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: rewardCouponsValidate,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
urlList: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.byShopId()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 添加完成优惠券
|
|
||||||
addCouponSuccess(e) {
|
|
||||||
if (this.tableType == 1) {
|
|
||||||
this.form[this.couponKey].push({ ...e })
|
|
||||||
} else {
|
|
||||||
// this.form[this.couponKey][this.tableEditorIndex] = { ...e }
|
|
||||||
this.$set(this.form[this.couponKey], this.tableEditorIndex, { ...e })
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 添加奖励券
|
|
||||||
addRewardHandle(key, type = 1, row = {}, index = 0) {
|
|
||||||
this.tableEditorIndex = index
|
|
||||||
this.tableType = type
|
|
||||||
this.couponKey = key
|
|
||||||
if (key == 'rewardCoupons' && !this.form.invitedNum) {
|
|
||||||
this.$refs.form.validateField('invitedNum')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$refs.AddCoupon.show(row)
|
|
||||||
},
|
|
||||||
// 日期回调
|
|
||||||
timeChange(e) {
|
|
||||||
this.form.startTime = e[0]
|
|
||||||
this.form.endTime = e[1]
|
|
||||||
},
|
|
||||||
// 过滤input只能输入整数
|
|
||||||
inputFilterInt(e, key) {
|
|
||||||
if (!e) return
|
|
||||||
setTimeout(() => {
|
|
||||||
this.form[key] = e.replace(/[^\d]/g, '')
|
|
||||||
}, 50)
|
|
||||||
},
|
|
||||||
// 提交
|
|
||||||
onSubmitHandle() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
this.loading = true
|
|
||||||
this.form.shopId = localStorage.getItem('shopId')
|
|
||||||
await tbShopShare(this.form)
|
|
||||||
this.loading = false
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `保存成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
this.loading = false
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取店铺设置
|
|
||||||
async byShopId() {
|
|
||||||
try {
|
|
||||||
const res = await byShopId()
|
|
||||||
if (res.id) {
|
|
||||||
this.form = res
|
|
||||||
this.createdAt = [res.startTime, res.endTime]
|
|
||||||
this.urlList = [res.shareImg, res.invitedImg, res.beInvitedImg]
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.img_list {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: #F5F7FA;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
&.upload {
|
|
||||||
border: 1px dashed #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.del {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.del {
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: rgba(255, 0, 0, 0.6);
|
|
||||||
backdrop-filter: blur(3px);
|
|
||||||
color: #fff;
|
|
||||||
font-size: 12px;
|
|
||||||
transform: translateY(100%);
|
|
||||||
transition: all .2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: block;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 20px;
|
|
||||||
color: #ddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.preview_wrap {
|
|
||||||
width: 300px;
|
|
||||||
height: 368px;
|
|
||||||
background-color: #EDEDED;
|
|
||||||
position: relative;
|
|
||||||
padding: 20px 10px;
|
|
||||||
|
|
||||||
.message_wrap {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
|
|
||||||
.msg {
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.content {
|
|
||||||
width: 180px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 10px 10px 6px;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
$size: 8px;
|
|
||||||
content: "";
|
|
||||||
width: $size;
|
|
||||||
height: $size;
|
|
||||||
border-radius: 1px;
|
|
||||||
background-color: #fff;
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
right: $size / 2 * -1;
|
|
||||||
transform: rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
line-height: 10px;
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.t {
|
|
||||||
font-size: 10px;
|
|
||||||
color: #999;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 16px;
|
|
||||||
padding: 6px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btm {
|
|
||||||
font-size: 10px;
|
|
||||||
color: #999;
|
|
||||||
line-height: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border-top: 1px solid #ececec;
|
|
||||||
padding-top: 6px;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 14px;
|
|
||||||
color: rgb(87, 87, 253);
|
|
||||||
margin-right: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
background-color: #F6F6F6;
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding: 0 10px;
|
|
||||||
gap: 10px;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
width: 100px;
|
|
||||||
height: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 10px;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -50px;
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ipt {
|
|
||||||
flex: 1;
|
|
||||||
height: 30px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 22px;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,349 +0,0 @@
|
|||||||
<!-- 兑换记录 -->
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<el-form :model="query" inline label-position="left">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input placeholder="订单编号/核销码" v-model="query.keywords" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-select v-model="query.pickupMethod" placeholder="领取方式" style="width: 140px;">
|
|
||||||
<el-option label="自取" value="self"></el-option>
|
|
||||||
<el-option label="邮寄" value="post"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-select v-model="query.status" placeholder="状态" style="width: 140px;">
|
|
||||||
<el-option :label="item.label" :value="item.value" v-for="item in statusList"
|
|
||||||
:key="item.value"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-date-picker v-model="query.createdAt" type="daterange" range-separator="至"
|
|
||||||
start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss">
|
|
||||||
</el-date-picker>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="queryHandle">查询</el-button>
|
|
||||||
<el-button @click="resetHandle">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<div class="collect_wrap">
|
|
||||||
<div class="item">
|
|
||||||
<div class="icon_wrap" style="--bg-color:#ADDBBC">
|
|
||||||
<i class="icon el-icon-s-goods"></i>
|
|
||||||
</div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="m">{{ countData.count }}</div>
|
|
||||||
<div class="t">总订单数</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="item">
|
|
||||||
<div class="icon_wrap" style="--bg-color:#8CC4FC">
|
|
||||||
<i class="icon el-icon-s-goods"></i>
|
|
||||||
</div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="m">¥{{ countData.totalAmount }}</div>
|
|
||||||
<div class="t">已支付金额</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table :data="tableData.list" v-loading="tableData.loading">
|
|
||||||
<el-table-column label="订单编号" prop="orderNo" width="200"></el-table-column>
|
|
||||||
<el-table-column label="用户名" prop="memberName" width="200">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="scope.row.avatarUrl" style="width:40px;height:40px;flex-shrink: 0;"
|
|
||||||
:preview-src-list="avatarUrlList">
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-folder-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<span>{{ scope.row.memberName }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="商品" prop="pointsGoodsName" width="200">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="scope.row.goodsImageUrl" style="width:40px;height:40px;flex-shrink: 0;"
|
|
||||||
:preview-src-list="srcList">
|
|
||||||
<div slot="error" class="image-slot">
|
|
||||||
<i class="el-icon-folder-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<span>{{ scope.row.pointsGoodsName }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="使用积分" prop="spendPoints"></el-table-column>
|
|
||||||
<el-table-column label="支付金额" prop="extraPaymentAmount"></el-table-column>
|
|
||||||
<el-table-column label="支付方式" prop="payMethod"></el-table-column>
|
|
||||||
<el-table-column label="实际支付时间" prop="payTime" width="200"></el-table-column>
|
|
||||||
<el-table-column label="下单时间" prop="createTime" width="200"></el-table-column>
|
|
||||||
<el-table-column label="领取方式" prop="pickupMethod">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-tag type="success" effect="plain" disable-transitions
|
|
||||||
v-if="scope.row.pickupMethod == 'self'">自取</el-tag>
|
|
||||||
<el-tag type="info" effect="plain" disable-transitions
|
|
||||||
v-if="scope.row.pickupMethod == 'post'">邮寄
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="状态" prop="status">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-tag type="warning" disable-transitions v-if="scope.row.status == 'waiting'">待自取</el-tag>
|
|
||||||
<el-tag type="success" disable-transitions v-if="scope.row.status == 'done'">已完成</el-tag>
|
|
||||||
<el-tag type="warning" disable-transitions v-if="scope.row.status == 'unpaid'">待支付</el-tag>
|
|
||||||
<el-tag type="info" disable-transitions v-if="scope.row.status == 'cancel'">已取消</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="取消/退款" prop="cancelOrRefundTime" width="200">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<template v-if="scope.row.status == 'cancel'">
|
|
||||||
<div>{{ scope.row.cancelOrRefundTime }}</div>
|
|
||||||
<div>{{ scope.row.cancelOrRefundReason }}</div>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<template v-if="scope.row.status == 'waiting'">
|
|
||||||
<el-popconfirm title="确定核销吗?" @confirm="confirmOrder(scope.row.couponCode)">
|
|
||||||
<el-button type="text" icon="el-icon-finished" slot="reference">待核销</el-button>
|
|
||||||
</el-popconfirm>
|
|
||||||
</template>
|
|
||||||
<el-button type="text" icon="el-icon-finished" disabled v-else>{{
|
|
||||||
scope.row.status | statusFilter }}</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-pagination :total="tableData.total" @size-change="handleSizeChange" :current-page="tableData.page"
|
|
||||||
:page-size="tableData.size" @current-change="paginationChange"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { exchangeRecordPage, exchangeRecordTotal, recordCheckout } from '@/api/points.js'
|
|
||||||
const statusList = [
|
|
||||||
{
|
|
||||||
value: 'unpaid',
|
|
||||||
label: '待支付'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'waiting',
|
|
||||||
label: '待自取'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'done',
|
|
||||||
label: '已完成'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'cancel',
|
|
||||||
label: '已取消'
|
|
||||||
},
|
|
||||||
]
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
statusList,
|
|
||||||
srcList: [],
|
|
||||||
avatarUrlList: [],
|
|
||||||
countData: {
|
|
||||||
count: 0,
|
|
||||||
totalAmount: 0
|
|
||||||
},
|
|
||||||
query: {
|
|
||||||
keywords: '',
|
|
||||||
beginDate: '',
|
|
||||||
endDate: '',
|
|
||||||
status: '',
|
|
||||||
pickupMethod: '',
|
|
||||||
createdAt: []
|
|
||||||
},
|
|
||||||
resetQuery: '',
|
|
||||||
tableData: {
|
|
||||||
list: [],
|
|
||||||
page: 1,
|
|
||||||
size: 30,
|
|
||||||
loading: false,
|
|
||||||
total: 0
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
filters: {
|
|
||||||
statusFilter(t) {
|
|
||||||
return statusList.find(item => item.value == t).label
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetQuery = { ...this.query }
|
|
||||||
this.getTableData()
|
|
||||||
this.exchangeRecordTotal()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 核销
|
|
||||||
async confirmOrder(couponCode) {
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
await recordCheckout({ couponCode: couponCode })
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: '核销成功',
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
this.tableData.loading = false
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 统计
|
|
||||||
async exchangeRecordTotal() {
|
|
||||||
try {
|
|
||||||
const { count, totalAmount } = await exchangeRecordTotal({
|
|
||||||
keywords: this.query.keywords,
|
|
||||||
beginDate: this.query.createdAt[0] || '',
|
|
||||||
endDate: this.query.createdAt[1] || '',
|
|
||||||
status: this.query.status,
|
|
||||||
pickupMethod: this.query.pickupMethod
|
|
||||||
})
|
|
||||||
this.countData.count = count
|
|
||||||
this.countData.totalAmount = totalAmount
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 查询
|
|
||||||
queryHandle() {
|
|
||||||
this.getTableData()
|
|
||||||
this.exchangeRecordTotal()
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.query = { ...this.resetQuery }
|
|
||||||
this.page = 1
|
|
||||||
this.size = 30
|
|
||||||
this.getTableData()
|
|
||||||
this.exchangeRecordTotal()
|
|
||||||
},
|
|
||||||
// 分页大小改变
|
|
||||||
handleSizeChange(val) {
|
|
||||||
this.tableData.size = val
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 获取表格数据
|
|
||||||
async getTableData() {
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
const res = await exchangeRecordPage({
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size,
|
|
||||||
keywords: this.query.keywords,
|
|
||||||
beginDate: this.query.createdAt[0] || '',
|
|
||||||
endDate: this.query.createdAt[1] || '',
|
|
||||||
status: this.query.status,
|
|
||||||
pickupMethod: this.query.pickupMethod
|
|
||||||
})
|
|
||||||
this.tableData.loading = false
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
// 预览图集合
|
|
||||||
this.srcList = res.content.map(item => item.goodsImageUrl)
|
|
||||||
// 头像预览图集合
|
|
||||||
this.avatarUrlList = res.content.map(item => item.avatarUrl)
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.goods_info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.collect_wrap {
|
|
||||||
display: flex;
|
|
||||||
gap: 14px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
width: 200px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
padding: 20px;
|
|
||||||
|
|
||||||
.icon_wrap {
|
|
||||||
$size: 34px;
|
|
||||||
$border: 6px;
|
|
||||||
width: $size;
|
|
||||||
height: $size;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
border-radius: 50%;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
width: $size + $border;
|
|
||||||
height: $size + $border;
|
|
||||||
border-radius: 50%;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding-left: 10px;
|
|
||||||
|
|
||||||
.m {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.t {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #999;
|
|
||||||
padding-top: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,306 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left">
|
|
||||||
<el-form-item label="是否消费赠送积分">
|
|
||||||
<el-switch v-model.trim="form.enableRewards" :active-value="1" :inactive-value="0"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<template v-if="form.enableRewards">
|
|
||||||
<el-form-item label="适用群体">
|
|
||||||
<el-radio-group v-model="form.rewardsGroup">
|
|
||||||
<el-radio label="all">全部</el-radio>
|
|
||||||
<el-radio label="vip">仅会员</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="消费赠送积分" prop="consumeAmount">
|
|
||||||
<el-input v-model="form.consumeAmount" style="width: 250px;"
|
|
||||||
@input="inputFilterInt($event, 'consumeAmount')">
|
|
||||||
<template slot="prepend">每消费</template>
|
|
||||||
<template slot="append">元赠送1积分</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<el-form-item label="开启下单积分抵扣" style="margin-top: 50px;">
|
|
||||||
<el-switch v-model.trim="form.enableDeduction" :active-value="1" :inactive-value="0"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<template v-if="form.enableDeduction">
|
|
||||||
<el-form-item label="适用群体">
|
|
||||||
<el-radio-group v-model="form.deductionGroup">
|
|
||||||
<el-radio label="all">全部</el-radio>
|
|
||||||
<el-radio label="vip">仅会员</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="下单实付抵扣门槛" prop="minPaymentAmount">
|
|
||||||
<el-input v-model="form.minPaymentAmount" style="width: 150px;"
|
|
||||||
@input="inputFilterInt($event, 'minPaymentAmount')">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="下单最高抵扣比例" prop="maxDeductionRatio">
|
|
||||||
<el-input v-model="form.maxDeductionRatio" style="width: 150px;"
|
|
||||||
@input="inputFilterInt($event, 'maxDeductionRatio')">
|
|
||||||
<template slot="append">%</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="下单抵扣积分比例" prop="equivalentPoints">
|
|
||||||
<el-input v-model="form.equivalentPoints" style="width: 220px;"
|
|
||||||
@input="inputFilterInt($event, 'equivalentPoints')">
|
|
||||||
<template slot="prepend">1元等于</template>
|
|
||||||
<template slot="append">积分</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<el-form-item label="开启积分商城" style="margin-top: 50px;">
|
|
||||||
<el-switch v-model.trim="form.enablePointsMall" :active-value="1" :inactive-value="0"></el-switch>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="显示样式" v-if="form.enablePointsMall">
|
|
||||||
<div class="style_wrap">
|
|
||||||
<div class="item style1" :class="{ active: form.browseMode == 'list' }"
|
|
||||||
@click="form.browseMode = 'list'">
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="line"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="line"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="item style2" :class="{ active: form.browseMode == 'grid' }"
|
|
||||||
@click="form.browseMode = 'grid'">
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="line"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" :loading="loading" @click="onSubmitHandle">保存</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { basicSettingGet, basicSettingPost } from '@/api/points.js'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
loading: false,
|
|
||||||
form: {
|
|
||||||
id: '',
|
|
||||||
rewardsGroup: 'all',
|
|
||||||
deductionGroup: 'all',
|
|
||||||
enableRewards: 1,
|
|
||||||
consumeAmount: "",
|
|
||||||
enableDeduction: 1,
|
|
||||||
minPaymentAmount: "",
|
|
||||||
maxDeductionRatio: "",
|
|
||||||
equivalentPoints: "",
|
|
||||||
enablePointsMall: 1,
|
|
||||||
browseMode: 'list'
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
consumeAmount: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
minPaymentAmount: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
maxDeductionRatio: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
equivalentPoints: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.basicSettingGet()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 过滤input只能输入整数
|
|
||||||
inputFilterInt(e, key) {
|
|
||||||
if (!e) return
|
|
||||||
setTimeout(() => {
|
|
||||||
this.form[key] = e.replace(/[^\d]/g, '')
|
|
||||||
}, 50)
|
|
||||||
},
|
|
||||||
// 提交
|
|
||||||
onSubmitHandle() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
this.loading = true
|
|
||||||
this.form.shopId = localStorage.getItem('shopId')
|
|
||||||
await basicSettingPost(this.form)
|
|
||||||
this.loading = false
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `保存成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
this.loading = false
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取店铺设置
|
|
||||||
async basicSettingGet() {
|
|
||||||
try {
|
|
||||||
const res = await basicSettingGet()
|
|
||||||
if (res.id) {
|
|
||||||
this.form = res
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.style_wrap {
|
|
||||||
display: flex;
|
|
||||||
width: 350px;
|
|
||||||
gap: 50px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
flex: 1;
|
|
||||||
padding: 10px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
$color: #3F9EFF;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
border-color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cover {
|
|
||||||
background-color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line {
|
|
||||||
background-color: #D9D9D9;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.style1 {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 20px;
|
|
||||||
|
|
||||||
.row {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.cover {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 6px;
|
|
||||||
padding-left: 10px;
|
|
||||||
|
|
||||||
.line {
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
&:nth-child(1) {
|
|
||||||
width: 80%;
|
|
||||||
flex: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:nth-child(3) {
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.style2 {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
grid-template-rows: repeat(2, 1fr);
|
|
||||||
grid-column-gap: 10px;
|
|
||||||
grid-row-gap: 10px;
|
|
||||||
|
|
||||||
.row:nth-child(1) {
|
|
||||||
grid-area: 1 / 1 / 2 / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row:nth-child(2) {
|
|
||||||
grid-area: 1 / 2 / 2 / 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row:nth-child(3) {
|
|
||||||
grid-area: 2 / 1 / 3 / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row:nth-child(4) {
|
|
||||||
grid-area: 2 / 2 / 3 / 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.cover {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line {
|
|
||||||
height: 4px;
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
<!-- 添加积分商品/优惠券 -->
|
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<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="奖品类型">
|
|
||||||
<el-radio-group v-model="form.goodsCategory">
|
|
||||||
<el-radio label="physical">实物商品</el-radio>
|
|
||||||
<!-- <el-radio label="coupon">优惠券</el-radio> -->
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="商品图片" prop="goodsImageUrl">
|
|
||||||
<div class="img_list">
|
|
||||||
<div class="item" v-if="form.goodsImageUrl" @click="form.goodsImageUrl = ''">
|
|
||||||
<el-image :src="form.goodsImageUrl" style="width: 100%;height: 100%" />
|
|
||||||
<div class="del">删除</div>
|
|
||||||
</div>
|
|
||||||
<div class="item upload" @click="$refs.addImg.show()" v-else>
|
|
||||||
<i class="icon el-icon-plus"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="商品名称" prop="goodsName">
|
|
||||||
<el-input v-model="form.goodsName" placeholder="请输入商品名称" style="width: 300px;"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="所需积分" prop="requiredPoints">
|
|
||||||
<el-input v-model="form.requiredPoints" style="width: 130px;"
|
|
||||||
@input="inputFilterInt($event, 'requiredPoints')">
|
|
||||||
<template slot="append">积分</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="额外价格" prop="extraPrice">
|
|
||||||
<el-input v-model="form.extraPrice" style="width: 130px;"
|
|
||||||
@input="inputFilterFloat($event, 'extraPrice')">
|
|
||||||
<template slot="append">元</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数量">
|
|
||||||
<el-input-number v-model="form.quantity" :min="1"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="排序">
|
|
||||||
<el-input-number v-model="form.sort" :min="0"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否上架">
|
|
||||||
<el-switch v-model.trim="form.status" :active-value="1" :inactive-value="0"></el-switch>
|
|
||||||
</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>
|
|
||||||
<addImg ref="addImg" @successEvent="e => form.goodsImageUrl = e[0].url" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { goodsSettingAdd } from '@/api/points.js'
|
|
||||||
import addImg from "@/views/product/components/addImages.vue";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
addImg
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
const validateCoverImg = (rule, value, callback) => {
|
|
||||||
if (!this.form.goodsImageUrl) {
|
|
||||||
callback(new Error("请上传商品图片"));
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
loading: false,
|
|
||||||
form: {
|
|
||||||
goodsCategory: 'physical',
|
|
||||||
goodsName: '',
|
|
||||||
goodsImageUrl: '',
|
|
||||||
requiredPoints: '',
|
|
||||||
extraPrice: 0,
|
|
||||||
quantity: '',
|
|
||||||
status: 1,
|
|
||||||
sort: 0,
|
|
||||||
goodsDescription: ''
|
|
||||||
},
|
|
||||||
resetForm: '',
|
|
||||||
rules: {
|
|
||||||
goodsName: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
goodsImageUrl: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: validateCoverImg,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
requiredPoints: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
extraPrice: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetForm = { ...this.form }
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 过滤input只能输入整数
|
|
||||||
inputFilterInt(e, key) {
|
|
||||||
if (!e) return
|
|
||||||
setTimeout(() => {
|
|
||||||
this.form[key] = e.replace(/[^\d]/g, '')
|
|
||||||
}, 50)
|
|
||||||
},
|
|
||||||
// 过滤input只能输入数字,并且最多输入两位小数
|
|
||||||
inputFilterFloat(value, key) {
|
|
||||||
if (!value) return
|
|
||||||
// 去除首位小数点
|
|
||||||
if (value.startsWith('.')) {
|
|
||||||
value = value.slice(1);
|
|
||||||
}
|
|
||||||
// 清除非数字和小数点(除了第一个小数点)
|
|
||||||
value = value.replace(/[^\d.]/g, '');
|
|
||||||
// 确保最多只有一个小数点
|
|
||||||
if (value.split('.').length > 2) {
|
|
||||||
value = value.split('.').slice(0, 2).join('.');
|
|
||||||
}
|
|
||||||
// 限制小数位数为两位
|
|
||||||
if (value.split('.')[1] && value.split('.')[1].length > 2) {
|
|
||||||
value = value.split('.')[0] + '.' + value.split('.')[1].slice(0, 2);
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
|
||||||
this.form[key] = value
|
|
||||||
}, 50)
|
|
||||||
},
|
|
||||||
// 提交
|
|
||||||
onSubmitHandle() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
this.loading = true
|
|
||||||
this.form.shopId = localStorage.getItem('shopId')
|
|
||||||
await goodsSettingAdd(this.form)
|
|
||||||
this.loading = false
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `${this.form.id ? '编辑' : '添加'}成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
this.$emit('success')
|
|
||||||
this.close()
|
|
||||||
} catch (error) {
|
|
||||||
this.loading = false
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
reset() {
|
|
||||||
this.form = { ...this.resetForm }
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
show(row) {
|
|
||||||
if (row && row.id) {
|
|
||||||
this.form = { ...row }
|
|
||||||
}
|
|
||||||
this.dialogVisible = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.img_list {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
.item {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: #F5F7FA;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
&.upload {
|
|
||||||
border: 1px dashed #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.del {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.del {
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: rgba(0, 0, 0, 0.3);
|
|
||||||
backdrop-filter: blur(3px);
|
|
||||||
color: #fff;
|
|
||||||
font-size: 12px;
|
|
||||||
transform: translateY(100%);
|
|
||||||
transition: all .2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 20px;
|
|
||||||
color: #ddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div><el-button type="primary" @click="$refs.ShopAdd.show()">添加商品</el-button></div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table :data="tableData.list" v-loading="tableData.loading">
|
|
||||||
<el-table-column label="商品" prop="goodsName">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="scope.row.goodsImageUrl" style="width:40px;height:40px;flex-shrink: 0;"
|
|
||||||
:preview-src-list="srcList" />
|
|
||||||
<span>{{ scope.row.goodsName }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="所需积分" prop="requiredPoints"></el-table-column>
|
|
||||||
<el-table-column label="额外价格「元」" prop="extraPrice"></el-table-column>
|
|
||||||
<el-table-column label="累计兑换次数" prop="totalExchangeCount"></el-table-column>
|
|
||||||
<el-table-column label="库存" prop="quantity"></el-table-column>
|
|
||||||
<el-table-column label="状态" prop="status">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-tag type="success" disable-transitions v-if="scope.row.status == 1">上架</el-tag>
|
|
||||||
<el-tag type="danger" disable-transitions v-if="scope.row.status == 0">下架</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="text" icon="el-icon-edit" @click="editorHandle(scope.row)">编辑</el-button>
|
|
||||||
<el-popconfirm title="确定删除吗?" @confirm="delTableHandle(scope.row.id)">
|
|
||||||
<el-button type="text" icon="el-icon-delete" slot="reference">删除</el-button>
|
|
||||||
</el-popconfirm>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-pagination :total="tableData.total" @size-change="handleSizeChange" :current-page="tableData.page"
|
|
||||||
:page-size="tableData.size" @current-change="paginationChange"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
</div>
|
|
||||||
<!-- 添加积分商品/积分 -->
|
|
||||||
<ShopAdd ref="ShopAdd" @success="resetTable" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import ShopAdd from './shop_add.vue'
|
|
||||||
import { goodsSettingPage, goodsDelete } from '@/api/points.js'
|
|
||||||
export default {
|
|
||||||
components: { ShopAdd },
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
srcList: [],
|
|
||||||
tableData: {
|
|
||||||
sort: 'createdAt,desc',
|
|
||||||
list: [],
|
|
||||||
page: 1,
|
|
||||||
size: 30,
|
|
||||||
loading: false,
|
|
||||||
total: 0
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 编辑 预览
|
|
||||||
editorHandle(row) {
|
|
||||||
this.$refs.ShopAdd.show(row)
|
|
||||||
},
|
|
||||||
// 删除
|
|
||||||
async delTableHandle(id) {
|
|
||||||
try {
|
|
||||||
await goodsDelete(id)
|
|
||||||
this.$message.success('已删除')
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
resetTable() {
|
|
||||||
this.tableData.page = 1
|
|
||||||
this.tableData.size = 30
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
handleSizeChange(val) {
|
|
||||||
this.tableData.size = val
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 获取积分商品列表
|
|
||||||
async getTableData() {
|
|
||||||
try {
|
|
||||||
this.tableData.loading = true
|
|
||||||
const res = await goodsSettingPage({
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size,
|
|
||||||
goodsName: '',
|
|
||||||
goodsCategory: 'physical',
|
|
||||||
status: ''
|
|
||||||
})
|
|
||||||
this.tableData.loading = false
|
|
||||||
this.tableData.list = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
// 预览图集合
|
|
||||||
this.srcList = res.content.map(item => item.goodsImageUrl)
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.head-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.goods_info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,388 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<el-dialog :title="form.id ? '编辑酒品' : '添加酒品'" :visible.sync="dialogVisible" @close="reset">
|
|
||||||
<div class="head-container" v-if="!form.id">
|
|
||||||
<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">
|
|
||||||
<template v-if="form.source == 0">
|
|
||||||
<el-form-item label="酒品名" prop="name">
|
|
||||||
<el-input v-model="form.name" placeholder="请输入酒品名" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="酒品图片">
|
|
||||||
<uploadImg ref="uploadImg" :limit="1" @success="e => form.imgUrl = e[0]"
|
|
||||||
@remove="form.imgUrl = ''" />
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<template v-if="!form.id">
|
|
||||||
<el-form-item label="选择商品" prop="name">
|
|
||||||
<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"
|
|
||||||
@click="productIds.splice(index, 1)">
|
|
||||||
<div class="item" :data-index="index + 1">
|
|
||||||
<el-image :src="item.coverImg" style="width: 100%;height: 100%;"></el-image>
|
|
||||||
</div>
|
|
||||||
<div class="name">{{ item.name }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<el-form-item label="商品">
|
|
||||||
<div class="goods_info">
|
|
||||||
<el-image :src="form.imgUrl" style="width: 50px;height: 50px;"></el-image>
|
|
||||||
<div class="info">{{ form.name }}</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
<el-form-item label="单位">
|
|
||||||
<el-input v-model="form.unit" placeholder="请输入单位" style="width: 200px;" />
|
|
||||||
<!-- <el-select v-model="form.unitId" placeholder="请选择单位" style="width: 200px;" @change="selectUnitt">
|
|
||||||
<el-option :label="item.name" :value="item.id" v-for="item in units" :key="item.id"></el-option>
|
|
||||||
</el-select>
|
|
||||||
<el-button type="primary" plain icon="el-icon-plus"
|
|
||||||
@click="$refs.addUnitRef.show()">添加单位</el-button> -->
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="有效期(天)">
|
|
||||||
<el-input-number v-model="form.period" controls-position="right" step-strictly :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>
|
|
||||||
<addUnit ref="addUnitRef" @success="tbShopUnit" />
|
|
||||||
<shopList ref="shopListRef" @success="slectShop" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { tbShopStorageGood } from '@/api/application'
|
|
||||||
import { queryAllShopUser, tbShopUnit } from '@/api/shop'
|
|
||||||
import uploadImg from '@/components/uploadImg'
|
|
||||||
import addUnit from '@/views/product/components/addUnit'
|
|
||||||
import shopList from '@/components/shopList'
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
uploadImg,
|
|
||||||
addUnit,
|
|
||||||
shopList
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
const nameValidator = (rule, value, callback) => {
|
|
||||||
if (this.form.source == 0) {
|
|
||||||
if (!this.form.name) {
|
|
||||||
callback(new Error('请输入酒名名'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!this.productIds.length) {
|
|
||||||
callback(new Error('请选择商品'))
|
|
||||||
} else {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
tabs: [
|
|
||||||
{
|
|
||||||
value: 0,
|
|
||||||
label: '手动添加'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 1,
|
|
||||||
label: '从商品添加'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
units: [],
|
|
||||||
loading: false,
|
|
||||||
options: [],
|
|
||||||
productIds: [],
|
|
||||||
form: {
|
|
||||||
name: '',
|
|
||||||
imgUrl: '',
|
|
||||||
source: 0,
|
|
||||||
id: '',
|
|
||||||
goods: [
|
|
||||||
{
|
|
||||||
imgUrl: '',
|
|
||||||
name: '',
|
|
||||||
}
|
|
||||||
],
|
|
||||||
period: '',
|
|
||||||
unit: ''
|
|
||||||
},
|
|
||||||
resetForm: '',
|
|
||||||
rules: {
|
|
||||||
name: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: nameValidator,
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetForm = { ...this.form }
|
|
||||||
// this.getTableData()
|
|
||||||
this.tbShopUnit()
|
|
||||||
},
|
|
||||||
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
|
|
||||||
}
|
|
||||||
},
|
|
||||||
selectUnitt(e) {
|
|
||||||
this.form.unit = this.units.find(item => item.id == e).name
|
|
||||||
},
|
|
||||||
// 获取单位
|
|
||||||
async tbShopUnit() {
|
|
||||||
try {
|
|
||||||
const res = await tbShopUnit({
|
|
||||||
shopId: localStorage.getItem('shopId'),
|
|
||||||
sort: 'id',
|
|
||||||
page: 0,
|
|
||||||
size: 100
|
|
||||||
})
|
|
||||||
this.units = res.content
|
|
||||||
} catch (error) { }
|
|
||||||
},
|
|
||||||
// 切换类型
|
|
||||||
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() {
|
|
||||||
this.$refs.form.validate(async valid => {
|
|
||||||
if (valid) {
|
|
||||||
try {
|
|
||||||
if (this.form.source == 0) {
|
|
||||||
// 手动大导入
|
|
||||||
this.form.goods = [{
|
|
||||||
name: this.form.name,
|
|
||||||
imgUrl: this.form.imgUrl
|
|
||||||
}]
|
|
||||||
} else {
|
|
||||||
this.form.goods = this.productIds.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.name,
|
|
||||||
imgUrl: item.coverImg
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
let res = await tbShopStorageGood(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) {
|
|
||||||
this.dialogVisible = true
|
|
||||||
if (obj && obj.id) {
|
|
||||||
this.form = obj
|
|
||||||
if (obj.imgUrl && obj.source == 0) {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.$refs.uploadImg.fileList = [
|
|
||||||
{
|
|
||||||
url: obj.imgUrl
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}, 100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
reset() {
|
|
||||||
if (this.form.source == 0) {
|
|
||||||
this.$refs.uploadImg.clearFiles()
|
|
||||||
}
|
|
||||||
this.form = { ...this.resetForm }
|
|
||||||
this.$refs.form.resetFields()
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.goods_info {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.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>
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="head-container">
|
|
||||||
<div class="head-container">
|
|
||||||
<el-form :model="query" inline>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="$refs.addModal.show()">添加酒品</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" @click="getTableData">查询</el-button>
|
|
||||||
<el-button @click="resetHandle">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-table :data="tableData.data" v-loading="tableData.loading">
|
|
||||||
<el-table-column label="酒名" prop="name">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div style="display: flex;align-items: center;">
|
|
||||||
<el-image :src="scope.row.imgUrl"
|
|
||||||
style="width:40px;height: 40px;border-radius: 4px;background-color: #efefef;">
|
|
||||||
<div class="img_error" slot="error">
|
|
||||||
<i class="icon el-icon-document-delete"></i>
|
|
||||||
</div>
|
|
||||||
</el-image>
|
|
||||||
<span style="margin-left: 10px;">{{ scope.row.name }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="单位" prop="unit">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-tag type="primary">{{ scope.row.unit }}</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="有效期(天)" prop="period"></el-table-column>
|
|
||||||
<el-table-column label="来源" prop="source">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<span v-if="scope.row.source == 0">手动导入</span>
|
|
||||||
<span v-if="scope.row.source == 1">商品导入</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="120">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<div style="display: flex;gap: 10px;">
|
|
||||||
<el-button type="text"
|
|
||||||
@click="$refs.winAddModal.show({ name: scope.row.name, imgUrl: scope.row.imgUrl, expDay: scope.row.period, unit: scope.row.unit }, true)">存酒</el-button>
|
|
||||||
<el-button type="text" @click="$refs.addModal.show(scope.row)">编辑</el-button>
|
|
||||||
<el-popconfirm title="确定删除吗?" @confirm="delHandle(scope.row)">
|
|
||||||
<el-button type="text" slot="reference">删除</el-button>
|
|
||||||
</el-popconfirm>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<div class="head-container">
|
|
||||||
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
|
|
||||||
@current-change="paginationChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
|
|
||||||
</div>
|
|
||||||
<addModal ref="addModal" @success="getTableData" />
|
|
||||||
<winAddModal ref="winAddModal" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { tbShopStorageGoodlist, tbShopStorageGood } from '@/api/application'
|
|
||||||
import addModal from './addModal'
|
|
||||||
import winAddModal from '../winestorage/addModal'
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
addModal,
|
|
||||||
winAddModal
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
statusList: [
|
|
||||||
{
|
|
||||||
value: 0,
|
|
||||||
label: '已取完'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 1,
|
|
||||||
label: '未取完'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
query: {
|
|
||||||
name: ""
|
|
||||||
},
|
|
||||||
tableData: {
|
|
||||||
data: [],
|
|
||||||
page: 0,
|
|
||||||
size: 10,
|
|
||||||
loading: false,
|
|
||||||
total: 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 删除
|
|
||||||
async delHandle(row) {
|
|
||||||
try {
|
|
||||||
let obj = { ...row }
|
|
||||||
obj.isDel = 1
|
|
||||||
await tbShopStorageGood(obj, 'put')
|
|
||||||
this.$notify.success('删除成功')
|
|
||||||
this.getTableData()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 重置查询
|
|
||||||
resetHandle() {
|
|
||||||
this.tableData.page = 0;
|
|
||||||
this.query.name = ''
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 分页回调
|
|
||||||
paginationChange(e) {
|
|
||||||
this.tableData.page = e - 1;
|
|
||||||
this.getTableData()
|
|
||||||
},
|
|
||||||
// 获取商品列表
|
|
||||||
async getTableData() {
|
|
||||||
this.tableData.loading = true
|
|
||||||
try {
|
|
||||||
const res = await tbShopStorageGoodlist({
|
|
||||||
name: this.query.name,
|
|
||||||
page: this.tableData.page,
|
|
||||||
size: this.tableData.size
|
|
||||||
})
|
|
||||||
this.tableData.loading = false
|
|
||||||
this.tableData.data = res.content
|
|
||||||
this.tableData.total = res.totalElements
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-dialog :title="form.id ? '编辑存酒' : '添加存酒'" width="500px" :visible.sync="dialogVisible" @close="reset">
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
|
|
||||||
<template v-if="!form.id">
|
|
||||||
<el-form-item label="选择用户" prop="userid">
|
|
||||||
<el-select v-model="form.userid" placeholder="请输入用户昵称" filterable remote
|
|
||||||
:remote-method="queryAllShopUser" :loading="loading" @change="userChange">
|
|
||||||
<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.name" @change="wineChange" v-if="!wine">
|
|
||||||
<el-option :label="item.name" :value="item.name" v-for="(item, index) in wineList"
|
|
||||||
:key="index"></el-option>
|
|
||||||
</el-select>
|
|
||||||
<div class="goods_info" v-else>
|
|
||||||
<el-image :src="form.imgUrl" style="width: 50px;height: 50px;"></el-image>
|
|
||||||
<div class="info">{{ form.name }}</div>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数量">
|
|
||||||
<el-input-number v-model="form.num" :step="1" step-strictly :min="1"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<el-form-item label="数量" v-else>
|
|
||||||
<el-input-number v-model="num" :step="1" step-strictly :min="1" :max="form.num"></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'
|
|
||||||
import { tbShopStorageGoodlist, storageWin, storagePut } from '@/api/application'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
loading: false,
|
|
||||||
options: [],
|
|
||||||
num: '',
|
|
||||||
wine: false,
|
|
||||||
form: {
|
|
||||||
id: '',
|
|
||||||
imgUrl: '',
|
|
||||||
name: '',
|
|
||||||
nickname: '',
|
|
||||||
num: 1,
|
|
||||||
status: '',
|
|
||||||
telphone: '',
|
|
||||||
unit: '',
|
|
||||||
userid: '',
|
|
||||||
expDay: ''
|
|
||||||
},
|
|
||||||
resetForm: '',
|
|
||||||
rules: {
|
|
||||||
userid: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: ' ',
|
|
||||||
trigger: 'blur'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
wineList: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.resetForm = { ...this.form }
|
|
||||||
this.queryAllShopUser()
|
|
||||||
this.tbShopStorageGoodlist()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 选择用户
|
|
||||||
userChange(e) {
|
|
||||||
let user = this.options.find(item => item.id == e)
|
|
||||||
this.form.nickname = user.nickName
|
|
||||||
this.form.telphone = user.telephone
|
|
||||||
},
|
|
||||||
// 选择酒品
|
|
||||||
wineChange(e) {
|
|
||||||
let wine = this.wineList.find(item => item.name == e)
|
|
||||||
this.form.imgUrl = wine.imgUrl
|
|
||||||
this.form.expDay = wine.period
|
|
||||||
this.form.unit = wine.unit
|
|
||||||
},
|
|
||||||
// 获取酒品列表
|
|
||||||
async tbShopStorageGoodlist() {
|
|
||||||
try {
|
|
||||||
const res = await tbShopStorageGoodlist({
|
|
||||||
page: 0,
|
|
||||||
size: 100
|
|
||||||
})
|
|
||||||
this.wineList = res.content
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 获取用户列表
|
|
||||||
async queryAllShopUser(query = '') {
|
|
||||||
this.loading = true
|
|
||||||
try {
|
|
||||||
const res = await queryAllShopUser({
|
|
||||||
name: 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 {
|
|
||||||
let res = ''
|
|
||||||
if (this.form.id) {
|
|
||||||
res = await storagePut({
|
|
||||||
id: this.form.id,
|
|
||||||
num: this.num,
|
|
||||||
type: 0
|
|
||||||
})
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `取酒成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
res = await storageWin(this.form)
|
|
||||||
this.$notify({
|
|
||||||
title: '成功',
|
|
||||||
message: `存酒成功`,
|
|
||||||
type: 'success'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.$emit('success', res)
|
|
||||||
this.close()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
async show(obj = {}, wine = false) {
|
|
||||||
this.dialogVisible = true
|
|
||||||
if (obj && obj.id) {
|
|
||||||
this.form = { ...obj }
|
|
||||||
}
|
|
||||||
if (obj && obj.name) {
|
|
||||||
this.form.name = obj.name
|
|
||||||
this.form.imgUrl = obj.imgUrl
|
|
||||||
this.form.expDay = obj.expDay
|
|
||||||
this.form.unit = obj.unit
|
|
||||||
}
|
|
||||||
this.wine = wine
|
|
||||||
},
|
|
||||||
close() {
|
|
||||||
this.dialogVisible = false
|
|
||||||
},
|
|
||||||
reset() {
|
|
||||||
this.form = { ...this.resetForm }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.goods_info {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-dialog title="记录" width="500px" :visible.sync="dialogVisible">
|
|
||||||
<el-steps :active="list.length" direction="vertical" :space="100">
|
|
||||||
<el-step :title="item.content" :description="item.time" v-for="item in list" :key="item.id"></el-step>
|
|
||||||
</el-steps>
|
|
||||||
<el-empty description="暂无记录" v-if="!list.length"></el-empty>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { recordList } from '@/api/application'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dialogVisible: false,
|
|
||||||
loading: false,
|
|
||||||
list: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 查询存取酒记录
|
|
||||||
async recordList(storageId) {
|
|
||||||
try {
|
|
||||||
this.loading = true
|
|
||||||
const res = await recordList({ storageId: storageId })
|
|
||||||
this.list = res.content
|
|
||||||
this.loading = false
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
show(id) {
|
|
||||||
this.dialogVisible = true
|
|
||||||
this.recordList(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||