新增坐席列表页面

This commit is contained in:
张运江 2025-02-08 16:09:50 +08:00
parent 748ffc3a4c
commit bcefe9d3c8
4 changed files with 314 additions and 0 deletions

View File

@ -0,0 +1,144 @@
<template>
<div>
<el-dialog
title="坐席绑定"
:visible="true"
width="400px"
append-to-body
:close-on-click-modal="false"
@close="handleClose">
<div class="dialog-content">
<el-form ref="ruleForm"
:model="userInfo"
:rules="rulesClient"
label-width="80px"
class="demo-ruleForm">
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="用户" prop="name">
<el-select v-model="userInfo.userId" placeholder="请选择">
<el-option
v-for="item in userList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" align="middle">
<el-col :span="24">
<el-form-item label="坐席电话" prop="remark">
<el-select v-model="userInfo.seatTelephone" placeholder="请选择">
<el-option
v-for="item in phoneList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()">取消</el-button>
<el-button type="primary" @click="handleSubmit()">确认</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import systemManageApi from "@/services/systemManage";
export default {
name: 'addOrEditRoleDialog',
props: {
addOrEditRoleConfig: {
type: Boolean,
default: () => {
return false
}
},
},
data() {
return {
userInfo:{
userId:'',//
seatTelephone:'',//
},
rulesClient: {
userId: [
{ required: true, message: '请选择用户', trigger: 'change',},
],
seatTelephone: [
{ required: true, message: '请选择坐席电话', trigger: 'change',},
],
},
phoneList: [],
userList: [],
}
},
mounted () {
this.getSeatPhone()
this.getSeatUnbindUser()
},
methods: {
getSeatPhone() {
systemManageApi.getSeatPhone({}).then(res => {
if (!res.code) {
this.phoneList = res || []
}
})
},
getSeatUnbindUser() {
systemManageApi.getSeatUnbindUser({}).then(res => {
if (!res.code) {
this.userList = res || []
}
})
},
handleSubmit() {
if(!this.$clickThrottle()) { return }
let _this=this;
this.$refs.ruleForm.validate((valid) => {
if(valid) {
systemManageApi.seatUnbind(_this.userInfo).then(res => {
this.$message({
showClose: true,
message: '绑定成功!',
type: 'success'
});
this.$parent.getSeatList(1)
this.handleClose()
})
}
})
},
handleClose() {
this.$emit('update:addOrEditRoleConfig', false)
},
}
}
</script>
<style lang="scss" scoped>
.dialog-content{
padding: $size16;
max-height:500px
}
::v-deep .el-dialog__header{
border-bottom: 1px solid $border-color-lighter !important;
}
::v-deep .el-dialog__footer{
border-top: 1px solid $border-color-lighter !important;
}
</style>

View File

@ -0,0 +1,140 @@
<template>
<div class="layout-content-wrap background-color-fff border-radius-8">
<div class="border-b-solid-lighter-1 p-h-24">
<div class="flex-row justify-content-between height-56 align-items-center">
<div class="color-text-primary f22">坐席列表</div>
<div class="color-text-regular f14" >
<el-button type="primary" @click="handleAddForm" size="small">新增</el-button>
</div>
</div>
</div>
<div class="layout-tabs-content-box">
<div class="">
<el-table ref="monthlyPlanTable"
:data="tableData"
:header-cell-style="{background:'#F5F7FA'}"
row-key="id"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column
v-for="(item, i) in tableHead"
:key="i"
:prop="item.prop"
:label="item.label"
:width="item.width"
:show-overflow-tooltip="item.showOverflowTooltip"
:formatter="item.formatter"
>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<div class="flex-row">
<div class="f14 color-1960F4 cursor-pointer mr-8" @click="handleAddForm(scope)">解绑</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="text-center p-v-24">
<el-pagination
@size-change="getRoleList"
@current-change="getRoleList"
:current-page="queryData.current"
:page-size="queryData.size"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</div>
<!-- 新增-编辑 -->
<addOrEditRoleDialog v-if="addOrEditRoleConfig" :addOrEditRoleConfig.sync="addOrEditRoleConfig" />
</div>
</template>
<script>
import systemManageApi from "@/services/systemManage";
export default {
components: {
addOrEditRoleDialog: () => import('./components/addOrEditRoleDialog.vue'),
},
data() {
return {
tableData:[],
tableHead: [
{
prop: "userShowName",
label: "用户名称",
showOverflowTooltip: false,
formatter: this.formatTable,
},
{
prop: "seatTelephone",
label: "座席电话",
showOverflowTooltip: false,
formatter: this.formatTable,
},
{
prop: "bindTime",
label: "绑定时间",
showOverflowTooltip: false,
formatter: this.formatTable,
},
],
queryData: {
current: 1,
size: 10,
},
total: 0,
addOrEditRoleConfig:null,//
}
},
created() {
this.getSeatList(1)
},
methods: {
getSeatList(val){
if(val!=undefined){this.queryData.current = val}
systemManageApi.getSeatList(this.queryData).then(res => {
if (!res.code) {
this.tableData = res.records;
this.total = res.total;
}
})
},
//
handleAddForm(){
this.addOrEditRoleConfig = true
},
//
handleDelete(scope){
this.$confirm("此操作将永久删除该角色, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
if(!this.$clickThrottle()) { return }//
systemManageApi.deleteRoleById({ id: scope.row.id }).then((res) => {
this.$message.success("成功");
this.getRoleList(1)
});
}).catch(() => {});
},
formatTable(row, column, cellValue, index) {
return cellValue || "-";
},
}
}
</script>
<style lang="scss" scoped>
.el-table--fit {
border:1px solid $border-color-lighter !important;
border-bottom: 0!important;
}
</style>

View File

@ -99,6 +99,12 @@ const routes = [
component: () => import("@/pages/system-management/department-management"), component: () => import("@/pages/system-management/department-management"),
meta: { title: "团队管理", icon: 'menu-department-management' }, meta: { title: "团队管理", icon: 'menu-department-management' },
}, },
{
path: "/system-management/take-management",
name: "/system-management/take-management",
component: () => import("@/pages/system-management/take-management"),
meta: { title: "坐席管理", icon: 'menu-take-management' },
},
] ]
}, },

View File

@ -77,6 +77,30 @@ const systemLogApi = {
//========================end::角色相关====================================== //========================end::角色相关======================================
//========================start::坐席相关======================================
// 角色列表
getSeatList: data => {
return service.service.post(`${apiAdmin}system/user/seat/page`, data)
},
// 座席绑定
seatBind: data => {
return service.service.post(`${apiAdmin}system/user/seat/bind`, data)
},
// 座席绑定
seatUnbind: data => {
return service.service.post(`${apiAdmin}system/user/seat/unbind`, data)
},
// 获取坐席电话
getSeatPhone: data => {
return service.service.get(`${apiAdmin}system/user/seat/phone`, data)
},
// 获取未绑定坐席用户
getSeatUnbindUser: data => {
return service.service.post(`${apiAdmin}system/user/seat/unbind/user`, data)
},
//========================end::坐席相关======================================
//========================start::菜单管理====================================== //========================start::菜单管理======================================
// 菜单列表 // 菜单列表
getResourceList: data => { getResourceList: data => {