Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gxpt_web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pseer
gxpt_web
Commits
3e593dcf
Commit
3e593dcf
authored
Mar 19, 2024
by
YG8999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
房间添加门禁密码
门店添加分配客服 操作日志添加操作来源
parent
0b18a9e9
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
278 additions
and
10 deletions
+278
-10
index.js
src/router/index.js
+14
-0
index.vue
src/views/system/log/index.vue
+29
-5
index.vue
src/views/system/room/index.vue
+1
-0
consumerService.vue
src/views/system/store/consumerService.vue
+215
-0
index.vue
src/views/system/store/index.vue
+17
-4
selectConsumer.vue
src/views/system/store/selectConsumer.vue
+2
-1
No files found.
src/router/index.js
View file @
3e593dcf
...
...
@@ -149,6 +149,20 @@ export const dynamicRoutes = [
]
},
{
path
:
'/share/store-customer-service'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'system:store:edit'
],
children
:
[
{
path
:
'clean/:storeId(
\\
d+)'
,
component
:
()
=>
import
(
'@/views/system/store/consumerService'
),
name
:
'CleanConsumer'
,
meta
:
{
title
:
'分配客服'
,
activeMenu
:
'/system/store'
}
}
]
},
{
path
:
'/order/order-index'
,
component
:
Layout
,
hidden
:
true
,
...
...
src/views/system/log/index.vue
View file @
3e593dcf
...
...
@@ -130,7 +130,7 @@
<el-table-column
label=
"所属房间"
align=
"center"
prop=
"roomName"
/>
<el-table-column
label=
"设备id"
align=
"center"
prop=
"devId"
/>
<el-table-column
label=
"请求序列号"
align=
"center"
prop=
"seq"
width=
"180"
/>
<el-table-column
label=
"消息类型"
align=
"center"
prop=
"mqttType"
:formatter=
"(row) => filedFormatter(row.mqttType)"
/
>
<!--
<el-table-column
label=
"消息类型"
align=
"center"
prop=
"mqttType"
:formatter=
"(row) => filedFormatter(row.mqttType)"
/>
--
>
<el-table-column
label=
"消息描述"
align=
"center"
prop=
"mqttDescribe"
/>
<el-table-column
label=
"回复结果"
align=
"center"
prop=
"result"
>
<template
slot-scope=
"scope"
>
...
...
@@ -138,7 +138,13 @@
</
template
>
</el-table-column>
<!-- <el-table-column label="消息主体参数" align="center" prop="payload" />-->
<el-table-column
label=
"消息主题"
align=
"center"
prop=
"topic"
width=
"180"
/>
<!-- <el-table-column label="消息主题" align="center" prop="topic" width="180"/>-->
<el-table-column
label=
"重复次数"
align=
"center"
prop=
"afreshNum"
/>
<el-table-column
label=
"操作来源"
align=
"center"
prop=
"source"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.device_source_type"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作人"
align=
"center"
prop=
"createBy"
/>
<el-table-column
label=
"记录时间"
align=
"center"
prop=
"createTime"
width=
"100"
>
<
template
slot-scope=
"scope"
>
...
...
@@ -214,6 +220,18 @@
<
/el-row
>
<
el
-
row
:
gutter
=
"20"
>
<
el
-
col
:
span
=
"12"
>
<
el
-
form
-
item
label
=
"重复次数"
prop
=
"afreshNum"
>
<
el
-
input
v
-
model
=
"form.afreshNum"
placeholder
=
"请输入消息主题"
/>
<
/el-form-item
>
<
/el-col
>
<
el
-
col
:
span
=
"12"
>
<
el
-
form
-
item
label
=
"操作来源"
prop
=
"source"
>
<
el
-
input
v
-
model
=
"form.source"
/>
<
/el-form-item
>
<
/el-col
>
<
/el-row
>
<
el
-
row
:
gutter
=
"20"
>
<
el
-
col
:
span
=
"12"
>
<
el
-
form
-
item
label
=
"消息主题"
prop
=
"topic"
>
<
el
-
input
v
-
model
=
"form.topic"
placeholder
=
"请输入消息主题"
/>
<
/el-form-item
>
...
...
@@ -245,7 +263,7 @@ import {allList} from "@/api/system/store";
export
default
{
name
:
"Log"
,
dicts
:
[
'device_log_result'
],
dicts
:
[
'device_log_result'
,
'device_source_type'
],
data
()
{
return
{
stores
:
[],
...
...
@@ -340,7 +358,9 @@ export default {
updateBy
:
null
,
updateTime
:
null
,
remark
:
null
,
result
:
null
result
:
null
,
source
:
null
,
afreshNum
:
null
}
;
this
.
resetForm
(
"form"
);
}
,
...
...
@@ -372,7 +392,8 @@ export default {
const
id
=
row
.
id
||
this
.
ids
getLog
(
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
.
result
=
this
.
deviceLogResultFormat
(
response
.
data
.
result
)
this
.
form
.
result
=
this
.
deviceLogResultFormat
(
response
.
data
.
result
);
this
.
form
.
source
=
this
.
deviceLogSourceFormat
(
response
.
data
.
source
);
this
.
open
=
true
;
this
.
title
=
"查看设备操作日志"
;
}
);
...
...
@@ -419,6 +440,9 @@ export default {
// 回复结果字典翻译
deviceLogResultFormat
(
value
)
{
return
this
.
selectDictLabel
(
this
.
dict
.
type
.
device_log_result
,
value
);
}
,
deviceLogSourceFormat
(
value
)
{
return
this
.
selectDictLabel
(
this
.
dict
.
type
.
device_source_type
,
value
);
}
}
}
;
...
...
src/views/system/room/index.vue
View file @
3e593dcf
...
...
@@ -103,6 +103,7 @@
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"所属门店"
align=
"center"
prop=
"storeName"
/>
<el-table-column
label=
"房间名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"门禁密码"
align=
"center"
prop=
"password"
/>
<el-table-column
label=
"房间类型"
align=
"center"
prop=
"roomType"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.store_room_type"
:value=
"scope.row.roomType"
/>
...
...
src/views/system/store/consumerService.vue
0 → 100644
View file @
3e593dcf
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"用户昵称"
prop=
"nickName"
>
<el-input
v-model=
"queryParams.nickName"
placeholder=
"请输入用户昵称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"手机号"
prop=
"phone"
>
<el-input
v-model=
"queryParams.phone"
placeholder=
"请输入手机号"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<!--
<el-form-item
label=
"会员性别"
prop=
"sex"
>
-->
<!--
<el-input-->
<!-- v-model="queryParams.sex"-->
<!-- placeholder="请输入会员性别"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!--
</el-form-item>
-->
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"openSelectUser"
v-hasPermi=
"['system:store:add']"
>
添加管理员
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"danger"
plain
icon=
"el-icon-circle-close"
size=
"mini"
:disabled=
"multiple"
@
click=
"cancelAuthUserAll"
v-hasPermi=
"['system:store:remove']"
>
批量取消
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-close"
size=
"mini"
@
click=
"handleClose"
>
关闭
</el-button>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<el-table
v-loading=
"loading"
:data=
"consumerList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"账号"
align=
"center"
prop=
"account"
/>
<el-table-column
label=
"用户昵称"
align=
"center"
prop=
"nickName"
/>
<el-table-column
label=
"手机号"
align=
"center"
prop=
"phone"
/>
<el-table-column
label=
"角色类型"
align=
"center"
prop=
"roleType"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.wechat_role_type"
:value=
"scope.row.roleType"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"性别"
align=
"center"
prop=
"sex"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.sys_user_sex"
:value=
"scope.row.sex"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-circle-close"
@
click=
"cancelAuthUser(scope.row)"
v-hasPermi=
"['system:store:remove']"
>
取消分配
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<select-consumer
ref=
"select"
:storeId=
"queryParams.storeId"
:position=
"queryParams.position"
@
ok=
"handleQuery"
/>
</div>
</template>
<
script
>
import
{
allocatedUserList
,
authUserCancel
,
authUserCancelAll
}
from
"@/api/system/store"
;
import
selectConsumer
from
"./selectConsumer"
;
export
default
{
name
:
"CleanConsumer"
,
dicts
:
[
'sys_user_sex'
,
'wechat_role_type'
],
components
:
{
selectConsumer
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 选中用户组
consumerIds
:
[],
// 非多个禁用
multiple
:
true
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 用户表格数据
consumerList
:
[],
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
storeId
:
undefined
,
nickName
:
undefined
,
phone
:
undefined
,
position
:
3
}
};
},
created
()
{
const
storeId
=
this
.
$route
.
params
&&
this
.
$route
.
params
.
storeId
;
this
.
queryParams
.
position
=
3
;
if
(
storeId
)
{
this
.
queryParams
.
storeId
=
storeId
;
this
.
getList
();
}
},
methods
:
{
/** 查询授权用户列表 */
getList
()
{
this
.
loading
=
true
;
this
.
queryParams
.
position
=
3
;
allocatedUserList
(
this
.
queryParams
).
then
(
response
=>
{
this
.
consumerList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
}
);
},
// 返回按钮
handleClose
()
{
const
obj
=
{
path
:
"/share/store"
};
this
.
$tab
.
closeOpenPage
(
obj
);
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"queryForm"
);
this
.
handleQuery
();
},
// 多选框选中数据
handleSelectionChange
(
selection
)
{
this
.
consumerIds
=
selection
.
map
(
item
=>
item
.
id
)
this
.
multiple
=
!
selection
.
length
},
/** 打开授权用户表弹窗 */
openSelectUser
()
{
this
.
$refs
.
select
.
show
();
},
/** 取消授权按钮操作 */
cancelAuthUser
(
row
)
{
const
storeId
=
this
.
queryParams
.
storeId
;
this
.
$modal
.
confirm
(
'确认要取消分配客服"'
+
row
.
nickName
+
'"吗?'
).
then
(
function
()
{
return
authUserCancel
({
consumerId
:
row
.
id
,
storeId
:
storeId
,
position
:
3
});
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"取消成功"
);
}).
catch
(()
=>
{
});
},
/** 批量取消授权按钮操作 */
cancelAuthUserAll
(
row
)
{
const
storeId
=
this
.
queryParams
.
storeId
;
const
consumerIds
=
this
.
consumerIds
.
join
(
","
);
this
.
$modal
.
confirm
(
'是否取消选中分配客服数据项?'
).
then
(
function
()
{
return
authUserCancelAll
({
storeId
:
storeId
,
consumerIds
:
consumerIds
,
position
:
3
});
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"取消成功"
);
}).
catch
(()
=>
{
});
}
}
};
</
script
>
src/views/system/store/index.vue
View file @
3e593dcf
...
...
@@ -91,14 +91,14 @@
<el-table
v-loading=
"loading"
:data=
"storeList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"门店名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"门店名称"
align=
"center"
prop=
"name"
width=
"100px"
/>
<el-table-column
label=
"门店类型"
align=
"center"
prop=
"storeType"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.store_type"
:value=
"scope.row.storeType"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"美团店铺id"
align=
"center"
prop=
"openShopUuid"
/>
<el-table-column
label=
"抖音店铺id"
align=
"center"
prop=
"tiktokPoiId"
/>
<el-table-column
label=
"美团店铺id"
align=
"center"
prop=
"openShopUuid"
width=
"150px"
/>
<el-table-column
label=
"抖音店铺id"
align=
"center"
prop=
"tiktokPoiId"
width=
"150px"
/>
<el-table-column
label=
"宣传图片"
align=
"center"
prop=
"images"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.images.length"
style=
"display: flex;flex-direction: row;justify-content: center;width: 100%;"
>
...
...
@@ -125,7 +125,7 @@
</
template
>
</el-table-column>
<!-- <el-table-column label="备注" align="center" prop="remark"/>-->
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"200px"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
...
...
@@ -158,6 +158,15 @@
v-hasPermi=
"['system:store:edit']"
>
分配管理员
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleConsumerService(scope.row)"
v-hasPermi=
"['system:store:edit']"
>
分配客服
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -566,6 +575,10 @@ export default {
const
storeId
=
row
.
id
;
this
.
$router
.
push
(
"/share/store-position/clean/"
+
storeId
);
},
handleConsumerService
:
function
(
row
)
{
const
storeId
=
row
.
id
;
this
.
$router
.
push
(
"/share/store-customer-service/clean/"
+
storeId
);
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
...
...
src/views/system/store/selectConsumer.vue
View file @
3e593dcf
...
...
@@ -86,7 +86,8 @@ export default {
pageSize
:
10
,
storeId
:
undefined
,
nickName
:
undefined
,
phone
:
undefined
phone
:
undefined
,
position
:
undefined
}
};
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment