cyl/dev
wangxia 2 years ago
parent 1d64ca3c2a
commit 21aca05df3

@ -15,16 +15,16 @@
<div class="searchinput">
<a-input-search placeholder="搜索成员" v-model.trim="pagination.keys" enter-button allowClear @search="onSearch" @keyup.enter="onSearch" @input="resetsearch"></a-input-search>
</div>
<i class="iconfont icon-fangda ml12 c6 curp" @click="addGroupShow = true" style="line-height:32px"></i>
<i class="iconfont icon-fangda ml12 c6 curp" @click="[addGroupShow = true,isEdit = false]" style="line-height:32px"></i>
</div>
<a-menu :selectedKeys="selectedKeys" :openKeys.sync="openKeys" @click="handleClick" class mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100vh - 49px);overflow-x:hidden">
<a-menu :selectedKeys="selectedKeys" @click="getGroup" class="bgf" mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100%);overflow-x:hidden;">
<template v-for="(item, index) in groupList">
<a-menu-item :key="item.teamName" class="fsa" @click="selectGroup(item)">
<a-menu-item :key="item.teamName" class="fsa showdot" @click="selectGroup(item)">
{{item.teamName}}
<a-dropdown overlayClassName="groupdropdown" trigger="['click']" placement="bottomCenter">
<i class="iconfont icon-gengduo3" @click.stop></i>
<a-dropdown overlayClassName="groupdropdown" :trigger="['click']" placement="bottomCenter">
<i class="iconfont icon-gengduo3 thedot" @click.stop></i>
<div class="groupdropdownbox backTable" slot="overlay">
<div @click="[addGroupShow = true,idEdit = true,recordId = item.id]">修改名称</div>
<div @click="[addGroupShow = true,isEdit = true,recordId = item.id,groupName=item.teamName]">修改名称</div>
<div @click="delGroup(item)"></div>
<div>上移</div>
<div>下移</div>
@ -35,59 +35,129 @@
</a-menu>
</div>
<div class="rightContainer">
<div class="fsa pb14 bb1 mb16">
<div class="f20 fw500">分组116</div>
<div class="fsa pb14 bb1 mb24">
<div class="f20 fw500">{{modalTitle ? modalTitle : "分组116人"}}</div>
<!-- <button class="addGroup" @click="addGroupShow = true">添加分组</button> -->
<a-button class="addmemeber f14" @click="showDetail('add')">
<a-button class="addmemeber f14" v-if="modalTitle == ''" @click="showDetail('add')">
<i class="iconfont icon-fangda"></i> 添加成员
</a-button>
<!-- <button @click="changepage(1)"></button> -->
</div>
<!-- :expanded-row-keys.sync="expandedRowKeys" -->
<a-table :columns="columns" :data-source="memberList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '',wrapperClassName: 'spinstyle',
}" :locale="tablenodata">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<span slot="nickName" slot-scope="text, record">
<!-- <i class="iconfont icon-chengyuan"></i> -->
<svg class="svg_icon" v-if="record.agencyRole == 3" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chengyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 2" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-guanliyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 1" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chuangjianren" />
</svg>
{{ record.aliasName || record.userName }}
<!-- <span>{{ record.tel?''+ record.tel + '':'' }}</span> -->
</span>
<div slot="join">
<a-switch default-checked @change="onChange" />
<div v-if="modalTitle == ''">
<a-table :columns="columns" :data-source="memberList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id" :locale="tablenodata">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<span slot="nickName" slot-scope="text, record">
<!-- <i class="iconfont icon-chengyuan"></i> -->
<svg class="svg_icon" v-if="record.agencyRole == 3" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chengyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 2" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-guanliyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 1" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chuangjianren" />
</svg>
{{ record.aliasName || record.userName }}
<!-- <span>{{ record.tel?''+ record.tel + '':'' }}</span> -->
</span>
<div slot="join">
<a-switch default-checked @change="onChange" />
</div>
<div slot="bigScreen">
<a-switch default-checked @change="onChange" />
</div>
<div slot="setting" v-if="!record.children" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="showDetail('detail', record)">详情</a>
<a v-if="loginUserInfo.agencyRole != 3" class="delete" @click="showDetail('edit', record)"></a>
<a v-if="loginUserInfo.agencyRole != 3" @click="deleteMemeber(record)"></a>
</div>
</a-table>
<div class="pagecontainer mt16">
<a-pagination :current="+pagination.pageNum" :default-current="1" :defaultPageSize="8" :total="pagination.total" @change="onChange" />
<div class="ant-pagination-options-quick-jumper f14 ml12">
<span>{{ pagination.total }}</span>跳至
<input ref="pageinput" type="text" @keyup.enter="inputpageChange" @blur="inputpageChange" />
</div>
</div>
<div slot="bigScreen">
<a-switch default-checked @change="onChange" />
</div>
<div v-else-if="modalTitle == '' || modalTitle == ''">
<a-form :form="form" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
<div class="fw500 mb16 f16">成员基础信息</div>
<a-form-item class="addItem" label="备注名">
<a-input placeholder="请输入备注名" v-decorator="[ 'aliasName', { rules: [{ required: true, message: '' }] }, ]" />
</a-form-item>
<a-form-item class="addItem" label="手机号">
<a-input placeholder="请输入手机号" v-decorator="['tel', {rules: [{ required: true, message: '' },{ type: 'regexp', validator: validateServiceName, message: '', }, ], validateTrigger: 'submit',validateFirst:true }, ]" :max-length="11" />
</a-form-item>
<a-divider />
<div class="fw500 mb16 f16">
<div class="por" style="width:404px">
角色
<div class="addRole">
<i class="iconfont icon-fangda ml12 c6 curp"></i>添加角色
</div>
</div>
</div>
<a-form-item class="addItem">
<a-radio-group v-decorator="[
'agencyRole',
{ rules: [{ required: true, message: '请选择角色' }] },
]" :options="options" @change="groupChange" />
</a-form-item>
<a-divider />
<div class="fw500 mb16 f16">成员分组</div>
<a-form-item>
<a-radio-group v-decorator="['agencyTeamId',{ rules: [{ required: false, message: '请选择分组' }] },]">
<a-radio :value="item.id" v-for="item in groupList" @change="onGroupChange(item)" :key="item.id">{{item.teamName}}</a-radio>
</a-radio-group>
</a-form-item>
<a-divider />
<a-row>
<div class="fw500 mb16 f16">权限</div>
<a-checkbox @change="onChange"></a-checkbox>
<a-checkbox @change="onChange"></a-checkbox>
</a-row>
<a-divider />
<a-button key="back" @click="modalCancel"></a-button>
<a-button key="submit" class="ml16 mr16" type="primary" :loading="loading" @click="handleSubmit"></a-button>
</a-form>
</div>
<div v-else-if="modalTitle == ''">
<div class="fw500 mb16 f16">成员基础信息</div>
<div style="margin-bottom:24px" class="f14 fss">
<div class="c6">备注名</div>
<div>{{ currentMember.aliasName || currentMember.userName }}</div>
</div>
<div slot="setting" v-if="!record.children" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="showDetail('detail', record)">详情</a>
<a v-if="loginUserInfo.agencyRole != 3" class="delete" @click="showDetail('edit', record)"></a>
<a v-if="loginUserInfo.agencyRole != 3" @click="deleteMemeber(record)"></a>
<div style="margin-bottom:24px" class="f14 fss">
<div class="c6">手机号</div>
<div>{{ currentMember.tel }}</div>
</div>
</a-table>
<div class="pagecontainer mt16">
<a-pagination :current="+pagination.pageNum" :default-current="1" :defaultPageSize="8" :total="pagination.total" @change="onChange" />
<div class="ant-pagination-options-quick-jumper f14 ml12">
<span>{{ pagination.total }}</span>跳至
<input ref="pageinput" type="text" @keyup.enter="inputpageChange" @blur="inputpageChange" />
<a-divider />
<div class="fw500 mb16 f16">角色</div>
<div style="margin-bottom:24px" class="f14">
<div>{{ currentMember.role }}</div>
</div>
<a-divider />
<div class="fw500 mb16 f16">成员分组</div>
<div style="margin-bottom:24px" class="f14">
<div>{{ currentMember.agencyTeamName }}</div>
</div>
<a-divider />
<div class="fw500 mb16 f16">权限</div>
<div style="margin-bottom:24px" class="f14">
<div>{{ currentMember.permission }}</div>
</div>
<a-divider />
</div>
</div>
</div>
<a-modal :title="modalTitle" v-model="visible" centered id="demo" @cancel="modalCancel" width="640px" destroyOnClose class="detailWindow">
<!-- <a-modal :title="modalTitle" v-model="visible" centered id="demo" @cancel="modalCancel" width="640px" destroyOnClose class="detailWindow">
<template slot="footer" v-if="this.modalTitle != '成员详情'">
<a-button key="back" @click="modalCancel"></a-button>
<a-button key="submit" class="ml16 mr16" type="primary" :loading="loading" @click="handleSubmit"></a-button>
<!-- <button style="background-color: #fff; border-color: #d9d9d9" @click="modalCancel"></button>
<button style="background-color: #f40;color: #fff;border: none;margin-left: 16px;margin-right: 16px;" @click="handleSubmit"></button>-->
</template>
<template slot="footer" v-else>
<span></span>
@ -128,11 +198,11 @@
<div v-for="(item,index) in groupList" @click="choiceGroup(item)" class="groupSelectSub fsa" :key="index">
<div>{{item.teamName}}</div>
<div>
<span @click="[addGroupShow = true,idEdit = true,recordId = item.id]">修改</span>
<span @click="[addGroupShow = true,isEdit = true,recordId = item.id]">修改</span>
<span @click.stop="delGroup(item)">删除</span>
</div>
</div>
<div class="bt1" style="padding: 9px 16px; cursor: pointer;" @mousedown="e => e.preventDefault()" @click="[addGroupShow = true,idEdit = false]">添加新分组</div>
<div class="bt1" style="padding: 9px 16px; cursor: pointer;" @mousedown="e => e.preventDefault()" @click="[addGroupShow = true,isEdit = false]">添加新分组</div>
</div>
</a-select>
</a-form-item>
@ -148,11 +218,14 @@
</a-row>
</a-form>
</template>
</a-modal>
<a-modal :title="idEdit?'编辑分组':'添加分组'" v-model="addGroupShow" centered id="demo" @cancel="addGroupShow = false" @ok="addMemberGroup" width="400px" destroyOnClose class="addGroupModal">
<a-input placeholder="请输入分组名" v-model="groupName"></a-input>
</a-modal> -->
<a-modal :title="isEdit?'编辑分组':'添加分组'" v-model="addGroupShow" centered id="demo" @cancel="addGroupShow = false" @ok="addMemberGroup" width="640px" :destroyOnClose='true' class="addGroupModal">
<div class="fsc setMiddle mt20" style="width:420px">
<div class="mr12 c6">分组名称:</div>
<a-input placeholder="请输入分组名" v-model="groupName" class="flex1"></a-input>
</div>
<template slot="footer">
<a-button key="back" @click="addGroupShow = false">取消</a-button>
<a-button key="back" @click="[addGroupShow = false,groupName = '']">取消</a-button>
<a-button key="submit" type="primary" :loading="loading" @click="addMemberGroup"></a-button>
</template>
</a-modal>
@ -169,17 +242,7 @@
<script>
import { getMemberListApi, deleteMemberApi, addMemberApi, getMemberGroupApi, addMemberGroupApi, updateMemberGroupApi, delMemberGroupApi, updateMemberApi } from '../../api/userinfo'
import { formatDateYMD, getUserApplyOrderStatusById, getAgencyRoleTypeById, getAgencyPermissionNameById, getAgencyPermissionsByRole } from '../../utils/commonUtil'
const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => {
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows)
},
onSelect: (record, selected, selectedRows) => {
console.log(record, selected, selectedRows)
},
onSelectAll: (selected, selectedRows, changeRows) => {
console.log(selected, selectedRows, changeRows)
},
}
export default {
//
name: '',
@ -222,7 +285,7 @@ export default {
memberList: [],
visible: false,
currentMember: {},
modalTitle: '新建成员',
modalTitle: '',
options: [
// { label: "", value: "1" },
{ label: '管理员', value: '2' },
@ -232,13 +295,12 @@ export default {
permission: 'job:list,apply:add,apply:list,apply:user,user:pwd,user:tel',
expandedRowKeys: [],
groupList: [],
rowSelection,
showGroup: false,
addGroupShow: false,
delGroupShow: false,
groupName: '', //
loading: false,
idEdit: false,
isEdit: false, //
selectedKeys: ['待分组'],
}
},
@ -267,11 +329,6 @@ export default {
scopedSlots: { customRender: 'nickName' },
ellipsis: true,
width: 120,
onFilter: (value, record) => {
console.log(value)
console.log(record)
return record.aliasName.indexOf(value) === 0
},
},
// {
// title: '',
@ -285,7 +342,7 @@ export default {
dataIndex: 'agencyTeamId',
key: 'agencyTeamId',
// width: 100,
filters: this.groupList,
// filters: this.groupList,
customRender: (text, row, index) => {
let text1
this.groupList.forEach((item) => {
@ -375,6 +432,24 @@ export default {
this.getMemberList()
}
},
/**
* 添加成员分组选择切换
*/
onGroupChange(e) {
console.log(e)
this.form.setFieldsValue({
agencyTeamId: e.teamName,
})
this.agencyTeamId = e.id
},
/**
* 分组列表选择
*
*
*/
getGroup(e) {
console.log(e)
},
inputpageChange(e) {
const pagenumcount = this.pagination.total / this.pagination.pageSize
console.log(pagenumcount)
@ -410,7 +485,6 @@ export default {
this.pagination.total = data.data.recordCount
}
})
console.log(data)
} catch (error) {
console.log(error)
}
@ -439,7 +513,7 @@ export default {
if (that.groupName.trim == '') {
return
} else {
if (this.idEdit) {
if (this.isEdit) {
updateMemberGroupApi({ teamName: this.groupName, recordId: this.recordId }).then(({ data }) => {
console.log(data)
if (data.status == 200) {
@ -528,8 +602,8 @@ export default {
let that = this
if (type == 'edit') {
this.currentMember = e
this.modalTitle = '编辑'
this.visible = true
this.modalTitle = '编辑成员'
// this.visible = true
setTimeout(() => {
console.log(this.currentMember)
that.form.setFieldsValue({
@ -537,16 +611,16 @@ export default {
aliasName: this.currentMember.aliasName,
tel: this.currentMember.tel,
group: this.currentMember.group,
agencyTeamId: this.currentMember.agencyTeamName,
agencyTeamId: this.currentMember.agencyTeamId,
})
}, 200)
} else if (type == 'detail') {
this.currentMember = e
this.modalTitle = '成员详情'
this.visible = true
// this.visible = true
} else {
this.modalTitle = '新建成员'
this.visible = true
this.modalTitle = '添加成员'
// this.visible = true
this.$nextTick(() => {
console.log(123)
that.form.setFieldsValue({
@ -581,9 +655,10 @@ export default {
},
modalCancel() {
// console.log(this);
this.visible = false
this.permission = getAgencyPermissionsByRole()
this.permissionName = getAgencyPermissionNameById(this.permission)
this.modalTitle = ''
// this.visible = false
// this.permission = getAgencyPermissionsByRole()
// this.permissionName = getAgencyPermissionNameById(this.permission)
},
handleSubmit() {
console.log('issubmit')
@ -591,7 +666,7 @@ export default {
this.form.validateFields(async (err) => {
console.log(err)
if (err == null) {
if (this.modalTitle == '编辑') {
if (this.modalTitle == '编辑成员') {
try {
let { data } = await updateMemberApi({
...this.form.getFieldsValue(),
@ -605,6 +680,7 @@ export default {
this.visible = false
this.permission = getAgencyPermissionsByRole()
this.permissionName = getAgencyPermissionNameById(this.permission)
this.modalTitle = ''
this.getMemberList()
} else {
this.$message.warning(data.msg)
@ -626,6 +702,7 @@ export default {
this.visible = false
this.permission = getAgencyPermissionsByRole(1)
this.permissionName = getAgencyPermissionNameById(this.permission)
this.modalTitle = ''
this.getMemberList()
} else {
this.$message.warning(data.msg)
@ -775,10 +852,13 @@ export default {
display: flex;
justify-content: space-between;
padding-left: 0;
overflow: hidden;
padding-bottom: 0px;
// overflow: hidden;
height: calc(100vh - 105px);
.leftContainer {
width: 260px;
height: 100%;
overflow: hidden;
/deep/ .searchbox {
display: flex;
justify-content: space-between;
@ -792,10 +872,17 @@ export default {
width: 0;
}
}
.thedot {
display: none;
}
.showdot:hover .thedot {
display: block;
}
}
.rightContainer {
flex: 1;
padding-left: 16px;
overflow: hidden;
.addmemeber {
border: 0;
padding: 0 12px;
@ -808,6 +895,23 @@ export default {
font-size: 12px;
}
}
.addRole {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
color: #1890ff;
i {
// transform: translateY(4px);
margin-right: 4px;
font-weight: 400;
color: #1890ff;
}
}
.addItem {
width: 404px;
}
}
/deep/ .ant-table-placeholder {
@ -881,11 +985,26 @@ export default {
// .addGroupModal {
/deep/ .ant-modal {
.ant-modal-header {
text-align: center;
border-bottom: none;
// text-align: center;
// border-bottom: none;
height: 40px;
line-height: 40px;
padding: 10px 16px;
.ant-modal-title{
font-weight: bold;
}
}
.ant-modal-body {
min-height: 170px;
}
.ant-modal-close-x {
height: 40px;
width: 50px;
line-height: 40px;
}
.ant-modal-footer {
border-top: none;
// border-top: none;
}
// .ant-btn:not(.ant-btn-primary):hover,
// .ant-btn:not(.ant-btn-primary):focus {
@ -899,7 +1018,7 @@ export default {
// &:hover {
// opacity: 0.8;
// }
// }
// }
}
// }
.detailWindow {

@ -0,0 +1,633 @@
<template>
<div class>
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
<a-icon type="home" />
</router-link>
</a-breadcrumb-item>
<a-breadcrumb-item>角色管理</a-breadcrumb-item>
</a-breadcrumb>
<div class="contentbody bodyContainer">
<div class="fsa pb14 bb1 mb24">
<div class="f20 fw500">角色管理</div>
<a-button class="addmemeber f14" @click="showDetail('add')">
<i class="iconfont icon-fangda"></i> 添加成员
</a-button>
</div>
<a-table :columns="columns" :data-source="roleList" :scroll='{y:480}' :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id" :locale="tablenodata">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<span slot="nickName" slot-scope="text, record">
<!-- <i class="iconfont icon-chengyuan"></i> -->
<svg class="svg_icon" v-if="record.agencyRole == 3" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chengyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 2" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-guanliyuan" />
</svg>
<svg class="svg_icon" v-if="record.agencyRole == 1" aria-hidden="true" style="width:32px">
<use xlink:href="#icon-chuangjianren" />
</svg>
{{ record.aliasName || record.userName }}
<!-- <span>{{ record.tel?''+ record.tel + '':'' }}</span> -->
</span>
<div slot="join">
<a-switch default-checked @change="onChange" />
</div>
<div slot="bigScreen">
<a-switch default-checked @change="onChange" />
</div>
<div slot="setting" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="showDetail('detail', record)">详情</a>
<a v-if="loginUserInfo.agencyRole != 3" class="delete" @click="showDetail('edit', record)"></a>
<a v-if="loginUserInfo.agencyRole != 3" @click="deleteMemeber(record)"></a>
</div>
</a-table>
<div class="pagecontainer mt16">
<a-pagination :current="+pagination.pageNum" :default-current="1" :defaultPageSize="8" :total="pagination.total" @change="onChange" />
<div class="ant-pagination-options-quick-jumper f14 ml12">
<span>{{ pagination.total }}</span>跳至
<input ref="pageinput" type="text" @keyup.enter="inputpageChange" @blur="inputpageChange" />
</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
name: 'MemberManagement',
//
components: {},
//
props: {},
//
data() {
return {
pagination: {
pageNum: 1,
pageSize: 8,
total: null, //
status: 0,
keys: null,
// searchTag: 1,
},
isspinning: false,
roleList: [
{
roleDesp: '',
roleCreateTime: '2023-10-20 14:27:17',
classify: 0,
aliasName: '',
userNum: 21,
labelId: 672,
pName: '',
roleId: 145,
roleName: '稻田内测用户',
sort: 1,
roleType: 1,
labelName: '稻田内测用户',
},
{
roleDesp: '',
roleCreateTime: '2023-10-12 09:34:33',
classify: 0,
aliasName: '',
userNum: 2,
labelId: 670,
pName: '工厂职位,工单列表',
roleId: 144,
roleName: '询单客服',
sort: 2,
roleType: 1,
labelName: '询单客服',
},
{
roleDesp: '',
roleCreateTime: '2023-09-22 11:46:25',
classify: 1,
aliasName: '',
userNum: 2,
labelId: 667,
pName: '',
roleId: 143,
roleName: '管理角色',
sort: 3,
roleType: 1,
labelName: '管理角色',
},
{
roleDesp: '',
roleCreateTime: '2023-09-06 20:05:46',
classify: 1,
aliasName: '',
userNum: 1,
labelId: 662,
pName: '品牌列表,职位要求,职位特色,企业列表,总包列表,工单列表,工厂职位,工单列表,项目相册,更新助手,职位分类,逾期工单,热推职位',
roleId: 142,
roleName: '跟单客服',
sort: 4,
roleType: 1,
labelName: '跟单客服',
},
{
roleDesp: '',
roleCreateTime: '2023-08-19 18:30:20',
classify: 1,
aliasName: '',
userNum: 0,
labelId: 658,
pName: '品牌列表,职位要求,职位特色,工作台,分析页,龙虎榜,用户列表,企业列表,总包列表,后台内容,代理列表,代理线索,矩阵官网,伯才官网,一手单官网,工单列表,工厂职位,老乡列表,项目页,工厂职位,代理列表,工单列表,项目通告,项目通知,位置管理,项目相册,官网表单,账单管理,数据大屏,更新助手,项目概况,职位分类,内容管理,呼叫数据,逾期工单,热推职位,频道管理,轮播配置,活动页面,图片模板,图片模板',
roleId: 141,
roleName: '新管理员',
sort: 5,
roleType: 1,
labelName: '新管理员',
},
{
roleDesp: '',
roleCreateTime: '2023-08-11 10:48:15',
classify: 1,
aliasName: '',
userNum: 0,
labelId: 656,
pName: '品牌列表,职位要求,职位特色,工作台,企业列表,总包列表,后台内容,代理列表,代理线索,矩阵官网,伯才官网,一手单官网,工单列表,工厂职位,工单列表,项目相册,官网表单,数据看板,更新助手,项目概况,职位分类,内容管理,呼叫数据,逾期工单,热推职位,频道管理,轮播配置,活动页面,图片模板,图片模板',
roleId: 140,
roleName: '开发测试',
sort: 6,
roleType: 1,
labelName: '开发测试',
},
{
roleDesp: '',
roleCreateTime: '2023-07-31 16:03:23',
classify: 0,
aliasName: '',
userNum: 8,
labelId: 655,
pName: '代理列表',
roleId: 139,
roleName: '电话客服',
sort: 7,
roleType: 1,
labelName: '渠道拓展',
},
{
roleDesp: '',
roleCreateTime: '2023-01-29 13:53:17',
classify: 0,
aliasName: '',
userNum: 18,
labelId: 636,
pName: '',
roleId: 138,
roleName: '成员通用',
sort: 8,
roleType: 1,
labelName: '成员通用',
},
{
roleDesp: '交付中心主管',
roleCreateTime: '2020-06-09 16:26:25',
classify: 1,
aliasName: '',
userNum: 6,
labelId: 408,
pName: '品牌列表,职位要求,职位特色,工作台,分析页,龙虎榜,企业列表,总包列表,代理列表,工单列表,工厂职位,老乡列表,项目页,工厂职位,代理列表,工单列表,项目通告,项目通知,位置管理,项目相册,数据看板,数据大屏,更新助手,项目概况,职位分类,热推职位',
roleId: 106,
roleName: '项目主管',
sort: 9,
roleType: 1,
labelName: '项目主管',
},
{
roleDesp: '',
roleCreateTime: '2022-04-27 10:40:43',
classify: 1,
aliasName: '',
userNum: 5,
labelId: 616,
pName: '代理列表,工单列表,平台数据,渠道运营,代理数据,数据看板',
roleId: 136,
roleName: '渠道主管',
sort: 10,
roleType: 1,
labelName: '渠道主管',
},
{
roleDesp: '',
roleCreateTime: '2022-02-24 19:58:45',
classify: 0,
aliasName: '',
userNum: 12,
labelId: 612,
pName: '工厂职位,代理列表,工单列表',
roleId: 135,
roleName: '客户经理',
sort: 11,
roleType: 1,
labelName: '客户经理',
},
{
roleDesp: '',
roleCreateTime: '2020-08-30 10:12:30',
classify: 1,
aliasName: '',
userNum: 1,
labelId: 452,
pName: '品牌列表,职位要求,职位特色,劳动合同,业务合同,合同模板,合同企业,工资条,工作台,分析页,龙虎榜,复盘,用户列表,成员列表,企业列表,总包列表,代理列表,代理线索,工单列表,工厂职位,老乡列表,代理列表,项目相册,账单管理,数据看板,数据大屏,更新助手,内容管理,呼叫数据,逾期工单',
roleId: 117,
roleName: '财务',
sort: 12,
roleType: 1,
labelName: '财务',
},
{
roleDesp: '',
roleCreateTime: '2022-06-10 14:12:00',
classify: 0,
aliasName: '',
userNum: 0,
labelId: 622,
pName: '短信验证码,修改用户操作次数,校验姓名、身份证号,校验姓名、银行卡号',
roleId: 137,
roleName: '开发角色01',
sort: 13,
roleType: 1,
labelName: '开发角色01',
},
{
roleDesp: '',
roleCreateTime: '2021-12-27 19:36:07',
classify: 0,
aliasName: '',
userNum: 1,
labelId: 607,
pName: '品牌列表,工作台,项目列表【旧】,工单管理-襄县渠道管理代理列表1.0,推广明细,企业列表,总包列表,代理入口',
roleId: 133,
roleName: '门店店长',
sort: 14,
roleType: 1,
labelName: '门店店长',
},
{
roleDesp: '',
roleCreateTime: '2021-10-26 13:56:05',
classify: 0,
aliasName: '',
userNum: 10,
labelId: 588,
pName: '品牌列表,职位要求,职位特色,企业列表,总包列表,工厂职位,工单列表,项目相册,更新助手,职位分类',
roleId: 132,
roleName: '项目经理',
sort: 15,
roleType: 1,
labelName: '项目经理',
},
{
roleDesp: '安置专员角色',
roleCreateTime: '2021-10-14 09:37:00',
classify: 0,
aliasName: '',
userNum: 2,
labelId: 586,
pName: '',
roleId: 130,
roleName: '安置专员',
sort: 16,
roleType: 1,
labelName: '安置专员',
},
{
roleDesp: '',
roleCreateTime: '2021-10-13 16:20:01',
classify: 0,
aliasName: '',
userNum: 2,
labelId: 585,
pName: '简历采集,推荐工作,跟进入职,跟进离职,需求维护,需求列表,需求地图,品牌列表,职位要求,职位特色,工作台,在职维护,项目列表【旧】,企业列表,总包列表,后台内容,代理列表,工单列表,工厂职位',
roleId: 129,
roleName: '产品经理',
sort: 17,
roleType: 1,
labelName: '产品经理',
},
{
roleDesp: '白名单的角色,扫码、报名后,只要绑定了代理一定会触发推广事件和佣金,且佣金免审核自动发送到余额',
roleCreateTime: '2021-10-07 17:20:01',
classify: 0,
aliasName: '',
userNum: 3,
labelId: 584,
pName: '',
roleId: 128,
roleName: '代理佣金白名单',
sort: 18,
roleType: 1,
labelName: '代理佣金白名单',
},
{
roleDesp: '线下代理点拓展',
roleCreateTime: '2021-08-31 15:23:45',
classify: 0,
aliasName: '',
userNum: 2,
labelId: 582,
pName: '工作台项目列表【旧】渠道管理代理列表1.0,推广明细,企业列表,代理入口',
roleId: 126,
roleName: '招工经理',
sort: 19,
roleType: 1,
labelName: '招工经理',
},
{
roleDesp: '设计',
roleCreateTime: '2021-08-18 18:00:44',
classify: 1,
aliasName: '',
userNum: 3,
labelId: 580,
pName: '品牌列表,工作台,企业列表,项目相册,更新助手',
roleId: 125,
roleName: '平面设计',
sort: 20,
roleType: 1,
labelName: '平面设计',
},
{
roleDesp: '试用期',
roleCreateTime: '2021-05-12 10:27:09',
classify: 0,
aliasName: '',
userNum: 0,
labelId: 561,
pName: '工厂职位',
roleId: 124,
roleName: '试用',
sort: 21,
roleType: 1,
labelName: '试用',
},
{
roleDesp: '注册用户,无后台权限',
roleCreateTime: '2017-04-18 14:16:41',
classify: 0,
aliasName: '',
userNum: 7225,
labelId: 1,
pName: '',
roleId: 45,
roleName: 'A',
sort: 22,
roleType: 1,
labelName: 'A',
},
{
roleDesp: '',
roleCreateTime: '2020-11-18 20:12:40',
classify: 0,
aliasName: '',
userNum: 3,
labelId: 479,
pName: '工作台',
roleId: 122,
roleName: '新人',
sort: 23,
roleType: 1,
labelName: '新人',
},
{
roleDesp: '原”在线客服“、”流量专员“',
roleCreateTime: '2019-11-15 18:04:13',
classify: 0,
aliasName: '简历专员',
userNum: 4,
labelId: 433,
pName: '简历采集,需求列表,需求地图,复盘',
roleId: 102,
roleName: '简历专员',
sort: 24,
roleType: 1,
labelName: '简历专员',
},
{
roleDesp: '',
roleCreateTime: '2018-02-03 10:10:05',
classify: 0,
aliasName: '',
userNum: 7,
labelId: 207,
pName: '推荐工作,需求列表,需求地图,我的统计,复盘',
roleId: 87,
roleName: '职业顾问',
sort: 25,
roleType: 1,
labelName: '职业顾问',
},
{
roleDesp: '',
roleCreateTime: '2017-10-27 22:08:21',
classify: 0,
aliasName: '',
userNum: 5,
labelId: 165,
pName: '跟进入职,旧在职维护,跟进离职,需求维护,需求列表,需求地图,工资核对,品牌列表,劳动合同,服务交付,工作台,在职维护,复盘,项目列表【旧】',
roleId: 84,
roleName: '项目执行',
sort: 26,
roleType: 1,
labelName: '项目执行',
},
{
roleDesp: '',
roleCreateTime: '2020-11-03 18:25:54',
classify: 0,
aliasName: '',
userNum: 3,
labelId: 468,
pName: '劳动合同,工资条,服务交付,工作台,在职维护,在职维护',
roleId: 119,
roleName: '服务专员',
sort: 27,
roleType: 1,
labelName: '服务专员',
},
{
roleDesp: 'BD负责商务拓展',
roleCreateTime: '2017-04-15 22:01:27',
classify: 0,
aliasName: '',
userNum: 5,
labelId: 27,
pName: '工单列表,更新助手,项目概况',
roleId: 41,
roleName: '项目客服',
sort: 28,
roleType: 1,
labelName: '项目客服',
},
{
roleDesp: '',
roleCreateTime: '2020-03-12 10:13:18',
classify: 0,
aliasName: '',
userNum: 1,
labelId: 355,
pName: '需求列表需求地图业务管理分发管理业务日历简历中心渠道来源1.0,简历生产,服务交付,工作台,龙虎榜,简历公海,在职维护,匹配失败,旧服务工单,复盘,工单时间,服务工单,等待分发,彩蛋配置',
roleId: 104,
roleName: '平台运营',
sort: 29,
roleType: 1,
labelName: '平台运营',
},
{
roleDesp: '',
roleCreateTime: '2020-11-16 19:39:20',
classify: 1,
aliasName: '',
userNum: 2,
labelId: 477,
pName: '品牌列表,职位要求,职位特色,企业列表,工厂职位,项目相册,更新助手,职位分类,内容管理,热推职位,频道管理,轮播配置,活动页面,图片模板',
roleId: 121,
roleName: '内容运营',
sort: 30,
roleType: 1,
labelName: '内容运营',
},
{
roleDesp: '',
roleCreateTime: '2020-09-14 18:34:47',
classify: 0,
aliasName: '',
userNum: 4,
labelId: 458,
pName: '用户列表,成员列表,后台内容',
roleId: 118,
roleName: '公司人事',
sort: 31,
roleType: 1,
labelName: '公司人事',
},
{
roleDesp: '超级管理员',
roleCreateTime: '2017-04-13 15:27:02',
classify: 1,
aliasName: '',
userNum: 10,
labelId: 12,
pName: '简历采集推荐工作跟进入职旧在职维护跟进离职需求维护需求列表需求地图工资核对我的统计业务管理分发管理业务日历跟进入职在职管理离职管理简历中心渠道来源1.0简历生产角色管理菜单品牌列表职位要求职位特色劳动合同业务合同合同模板合同企业工资条职业顾问提成来源列表系统操作日志短信验证码修改用户操作次数校验姓名、身份证号校验姓名、银行卡号修改用户身份证照片修改用户OpenID修改模板对应的企业修改人员对应的企业合同生成PDF测试服务交付工作台龙虎榜简历公海在职维护匹配失败旧服务工单复盘线索管理线索挖掘休眠线索工单时间在职维护旧需求列表服务工单等待分发彩蛋配置项目收款结算花名库配置项',
roleId: 11,
roleName: 'admin',
sort: 32,
roleType: 0,
labelName: 'admin',
},
],
}
},
//
computed: {
columns() {
const columns = [
{
title: '排序',
dataIndex: 'index',
key: 'index',
customRender: (text, row, index) => {
if (row.children) {
return ''
} else {
return index + 1
}
},
// ellipsis: true,
width: 60,
},
{
title: '角色',
dataIndex: 'roleName',
key: 'roleName',
scopedSlots: { customRender: 'roleName' },
ellipsis: true,
width: 120,
},
// {
// title: '',
// dataIndex: 'role',
// key: 'role',
// width: 100,
// ellipsis: true,
// },
{
title: '权限',
dataIndex: 'pName',
key: 'pName',
// width: 100,
// filters: this.groupList,
// customRender: (text, row, index) => {
// let text1
// this.groupList.forEach((item) => {
// if (item.id == text) {
// text1 = item.teamName
// }
// })
// return text1
// },
ellipsis: true,
},
// {
// title: '',
// dataIndex: 'permission',
// key: 'permission',
// ellipsis: true,
// },
{
title: '操作',
dataIndex: 'setting',
key: 'setting',
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: 'setting' },
ellipsis: true,
// sortOrder: sortedInfo.columnKey == "userApplyOrder" && sortedInfo.order,
// ellipsis: true,
width: 140,
},
]
return columns
},
},
//
watch: {},
//
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created() {
this.$emit('setTitle', '角色管理')
},
/**
* el 被新创建的 vm.el 替换并挂载到实例上去之后调用该钩子
* 如果 root 实例挂载了一个文档内元素 mounted 被调用时 vm.el 也在文档内
*/
mounted() {},
//
methods: {},
}
</script>
<style scoped lang="less">
.addmemeber {
border: 0;
padding: 0 12px;
height: 32px;
line-height: 32px;
color: #fff;
background: #1890ff;
border-radius: 4px;
i {
font-size: 12px;
}
}
</style>

@ -0,0 +1,40 @@
<template>
<div class="">内容管理</div>
</template>
<script>
export default {
//
name: 'ContentManagement',
//
components: {},
//
props: {},
//
data () {
return {
}
},
//
computed: {},
//
watch: {},
//
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created () {},
/**
* el 被新创建的 vm.el 替换并挂载到实例上去之后调用该钩子
* 如果 root 实例挂载了一个文档内元素 mounted 被调用时 vm.el 也在文档内
*/
mounted () {},
//
methods: {}
}
</script>
<style scoped lang="less">
</style>

@ -0,0 +1,40 @@
<template>
<div class="">工作台</div>
</template>
<script>
export default {
//
name: 'WorkBench',
//
components: {},
//
props: {},
//
data () {
return {
}
},
//
computed: {},
//
watch: {},
//
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created () {},
/**
* el 被新创建的 vm.el 替换并挂载到实例上去之后调用该钩子
* 如果 root 实例挂载了一个文档内元素 mounted 被调用时 vm.el 也在文档内
*/
mounted () {},
//
methods: {}
}
</script>
<style scoped lang="less">
</style>

@ -83,8 +83,8 @@
<a @click="getBillInfo(text1,30)" style="color:#576B95;text-decoration:underline" slot="passed" slot-scope="text, text1">{{text}}</a>
<a @click="getBillInfo(text1,40)" style="color:#576B95;text-decoration:underline" slot="entry" slot-scope="text, text1">{{text}}</a>
<a @click="getBillInfo(text1,50)" style="color:#576B95;text-decoration:underline" slot="obJob" slot-scope="text, text1">{{text}}</a>
<a @click="getBillInfo(text1,60)" style="color:#576B95;text-decoration:underline" slot="entryGPA" slot-scope="text, text1">{{text}}</a>
<a @click="getBillInfo(text1,70)" style="color:#576B95;text-decoration:underline" slot="finshedGPA" slot-scope="text, text1">{{text}}</a>
<a @click="getBillInfo(text1,60)" style="color:#576B95;text-decoration:underline" slot="entryGPA" slot-scope="text, text1">{{toFixed(text)}}</a>
<a @click="getBillInfo(text1,70)" style="color:#576B95;text-decoration:underline" slot="finshedGPA" slot-scope="text, text1">{{toFixed(text)}}</a>
</a-table>
</div>
</div>
@ -338,9 +338,9 @@ export default {
title: '入职绩点',
dataIndex: 'entryGPA',
key: 'entryGPA',
customRender: (text, row, index) => {
return toFixed(text)
},
// customRender: (text, row, index) => {
// return toFixed(text)
// },
scopedSlots: { customRender: 'entryGPA' },
ellipsis: true,
width: 90,
@ -349,9 +349,9 @@ export default {
title: '交付绩点',
dataIndex: 'finshedGPA',
key: 'finshedGPA',
customRender: (text, row, index) => {
return toFixed(text)
},
// customRender: (text, row, index) => {
// return toFixed(text)
// },
scopedSlots: { customRender: 'finshedGPA' },
ellipsis: true,
width: 90,

@ -292,7 +292,7 @@ const routes = [
{
path: "/merchantBack",
name: "merchantBack",
redirect: "merchantBack/memberInfo",
redirect: "merchantBack/workBench",
component: () => import("../views/merchantBack.vue"),
children: [
@ -318,6 +318,21 @@ const routes = [
name: "DataScreen",
component: () => import("../components/merchantManagement/dataScreen.vue"),
},
{
path: "memberManagement",
name: "MemberManagement",
component: () => import("../components/merchantManagement/memberManagement.vue"),
},
{
path: "workBench",
name: "WorkBench",
component: () => import("../components/merchantManagement/workBench.vue"),
},
{
path: "notificationCenter",
name: "NotificationCenter",
component: () => import("../components/merchantManagement/notificationCenter.vue"),
},
]
},
{

@ -404,6 +404,20 @@ i {
align-items: center;
justify-content: space-between;
}
.fss{
display: flex;
align-items: center;
justify-content: start;
}
.fsc{
display: flex;
align-items: center;
justify-content: center;
}
.setMiddle{
margin-left: 50%;
transform: translateX(-50%);
}
.flex1 {
flex: 1;
}
@ -418,6 +432,12 @@ i {
.curp {
cursor: pointer;
}
.por{
position: relative;
}
.poa{
position: absolute;
}
//通用类名样式结束
//svg图标

@ -17,7 +17,7 @@
<template v-for="(item, index) in roles">
<a-menu-item :key="item.name" v-if="item.path != '' && item.level < 3">
<router-link :to="{ name: item.name }">
<i class="iconfont f12 mr8" :class="item.icon"/>
<i class="iconfont f12 mr8" :class="item.icon" />
<a-badge dot v-if="myStatisticRedDot && item.name == 'myStatistic'">
<span class="nav-text" v-text="item.title"></span>
</a-badge>
@ -26,7 +26,7 @@
</a-menu-item>
<a-sub-menu :key="item.name" v-if="item.path == ''">
<span slot="title">
<i class="iconfont f12 mr8" :class="item.icon"/>
<i class="iconfont f12 mr8" :class="item.icon" />
<span v-text="item.title"></span>
</span>
<a-menu-item-group>
@ -89,11 +89,8 @@
<router-view @setTitle="setTitle"></router-view>
<!-- </div> -->
</a-layout-content>
<div style="height: 64px;background-color: #f5f5f5;line-height: 64px;color: #999;font-size: 14px;text-align: center;padding-left: 152px;">
Copyright © 2015 - 2021 Matripe. All Rights Reserved.
</div>
<div class="backFooter" style="height: 64px;background-color: #f5f5f5;line-height: 64px;color: #999;font-size: 14px;text-align: center;padding-left: 152px;">Copyright © 2015 - 2021 Matripe. All Rights Reserved.</div>
</div>
<!-- <notice @parentPageCallBack="showMessageFromChild" ref="child"></notice> -->
</div>
@ -118,7 +115,7 @@ export default {
{
id: 294,
parentId: '',
name: ' dashboard',
name: 'dashboard',
url: ' ',
icon: 'icon-yibiaopan',
component: '',
@ -142,6 +139,17 @@ export default {
// menuType: 1,
// children: '',
// },
{
id: -110,
parentId: 294,
name: 'WorkBench',
url: 'http://www.idaotian.com/box/btv/#/',
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '工作台',
menuName: '工作台',
},
{
id: -110,
parentId: 294,
@ -183,98 +191,96 @@ export default {
level: 1,
menuType: 1,
children: [
{
id: 295,
parentId: 294,
name: 'MemberInfo',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '团队成员',
menuName: 'teammanagement',
level: 2,
menuType: 1,
children: '',
},
{
id: 296,
parentId: 294,
name: 'DataStatistics3',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '角色管理(空)',
menuName: 'teammanagement',
level: 2,
menuType: 1,
children: '',
},
{
id: 295,
parentId: 294,
name: 'MemberInfo',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '团队成员',
menuName: 'teammanagement',
level: 2,
menuType: 1,
children: '',
},
{
id: 296,
parentId: 294,
name: 'MemberManagement',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '角色管理',
menuName: 'teammanagement',
level: 2,
menuType: 1,
children: '',
},
],
},
{
id: 294,
parentId: '',
name: 'group',
url: ' ',
icon: 'icon-shujutongji',
component: '',
path: '',
title: '数据统计',
menuName: 'group',
level: 1,
menuType: 1,
children: [
{
id: 295,
parentId: 294,
name: 'DataStatistics',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '团队数据',
menuName: 'group',
level: 2,
menuType: 1,
children: '',
},
],
},
{
id: 294,
parentId: '',
name: 'container',
url: ' ',
icon: 'icon-neirongguanli',
component: '',
path: '',
title: '内容管理',
menuName: 'container',
level: 1,
menuType: 1,
children: [
{
id: 295,
parentId: 294,
name: 'NotificationCenter',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '通知中心',
menuName: 'container',
level: 2,
menuType: 1,
children: '',
},
],
},
{
id: 294,
parentId: '',
name: 'group',
url: ' ',
icon: 'icon-shujutongji',
component: '',
path: '',
title: '数据统计',
menuName: 'group',
level: 1,
menuType: 1,
children: [
{
id: 295,
parentId: 294,
name: 'DataStatistics',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '团队数据',
menuName: 'group',
level: 2,
menuType: 1,
children: '',
},
],
},
{
id: 294,
parentId: '',
name: 'container',
url: ' ',
icon: 'icon-neirongguanli',
component: '',
path: '',
title: '内容管理',
menuName: 'container',
level: 1,
menuType: 1,
children: [
{
id: 295,
parentId: 294,
name: 'DataStatistics2',
url: '/memberInfo',
icon: '',
component: 'home',
path: '/home',
title: '通知中心(空)',
menuName: 'container',
level: 2,
menuType: 1,
children: '',
},
],
},
],
openKeys: [],
openKeys: ['dashboard'],
userbaseInfo: JSON.parse(localStorage.getItem('LOGIN_DATA')),
currentPage: '',
}
@ -547,4 +553,8 @@ header.header,
color: #1890ff !important;
}
}
.backFooter {
position: unset;
// bottom: 0;
}
</style>

Loading…
Cancel
Save