cyl/dev
wangxia 2 years ago
parent ec74d07e68
commit 6d01c7c3cc

@ -8,7 +8,7 @@
<script>
import zhCn from "ant-design-vue/lib/locale-provider/zh_CN";
let sp = document.createElement('script')
sp.src = '//at.alicdn.com/t/c/font_3135652_vt5pe6yxuqg.js'
sp.src = '//at.alicdn.com/t/c/font_3135652_wh8pz6ovidi.js'
document.body.appendChild(sp)
export default {
provide() {

@ -0,0 +1,173 @@
import request from "../utils/request";
import qs from "qs";
let setqs = function (data) {
return qs.stringify(data);
};
// 成员管理:获取成员列表
export function getMemberListApi (data) {
return request({
url: "/yishoudan/user/getAgencyCorpUsers",
method: "post",
data: setqs(data),
});
}
// 成员管理:删除成员
export function deleteMemberApi (data) {
return request({
url: "/yishoudan/user/delAgencyCorpUser",
method: "post",
data: setqs(data),
});
}
// 成员管理:添加成员
export function addMemberApi (data) {
return request({
url: "/yishoudan/user/addAgencyUser",
method: "post",
data: setqs(data),
});
}
// 成员管理:更新成员
export function updateMemberApi (data) {
return request({
url: "/yishoudan/user/updateAgencyCorpUser",
method: "post",
data: setqs(data),
});
}
// 数据统计列表获取
export function dataStatisticsListApi (data) {
return request({
url: "/yishoudan/statistics/agency/teamWithGroup",
method: "post",
// headers: { "Content-Type": "multipart/form-data" },
data: setqs(data),
// data,
});
}
// 数据统计工单详情获取
export function dataStatisticsTeamDetailApi (data) {
return request({
url: "/yishoudan/statistics/agency/teamDetail",
method: "post",
// headers: { "Content-Type": "multipart/form-data" },
data: setqs(data),
});
}
/**
* 成员相关
*
*
*/
// 获取成员分组信息
export function getMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/list",
method: "get",
});
}
// 添加成员分组
export function addMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/add",
method: "post",
data: setqs(data),
});
}
// 更新成员分组
export function updateMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/update",
method: "post",
data: setqs(data),
});
}
// 删除成员分组
export function delMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/del/" + data,
method: "get",
});
}
// 成员管理分组下移
export function moveGroupNextApi (data) {
return request({
url: "/yishoudan/agency/team/next/" + data,
method: "get",
});
}
// 成员管理分组上移
export function moveGroupPrevApi (data) {
return request({
url: "/yishoudan/agency/team/prev/" + data,
method: "get",
});
}
// 大屏显示开关
export function memberShowScreenApi (data) {
return request({
url: "/yishoudan/user/agencyCorpUser/showAgencyScreen",
method: "post",
data: setqs(data),
});
}
// 参与数据统计开关
export function memberJoinDataApi (data) {
return request({
url: "/yishoudan/user/agencyCorpUser/inAgencyStatistics",
method: "post",
data: setqs(data),
});
}
// 获取成员总数
export function getTotalNumApi (data) {
return request({
url: "/yishoudan/user/countAgencyTeam",
method: "get",
// data: setqs(data),
});
}
/**
* 角色相关
*
*
*/
// 获取角色列表
export function getRoleListApi (data) {
return request({
url: "/yishoudan/agency/role/list",
method: "get",
// data: setqs(data),
});
}
// 添加角色
export function addRoleApi (data) {
return request({
url: "/yishoudan/agency/role/add",
method: "post",
data: setqs(data),
});
}
// 修改角色
export function updateRoleApi (data) {
return request({
url: "/yishoudan/agency/role/update",
method: "post",
data: setqs(data),
});
}
// 删除角色
export function delRoleApi (data) {
return request({
url: "/yishoudan/agency/role/del/" + data,
method: "get",
// data: setqs(data),
});
}

@ -184,40 +184,7 @@ export function gettownsManCountApi (data) {
data: setqs(data),
});
}
// 成员管理:获取成员列表
export function getMemberListApi (data) {
return request({
url: "/yishoudan/user/getAgencyCorpUsers",
method: "post",
data: setqs(data),
});
}
// 成员管理:删除成员
export function deleteMemberApi (data) {
return request({
url: "/yishoudan/user/delAgencyCorpUser",
method: "post",
data: setqs(data),
});
}
// 成员管理:添加成员
export function addMemberApi (data) {
return request({
url: "/yishoudan/user/addAgencyUser",
method: "post",
data: setqs(data),
});
}
// 成员管理:更新成员
export function updateMemberApi (data) {
return request({
url: "/yishoudan/user/updateAgencyCorpUser",
method: "post",
data: setqs(data),
});
}
// 数据统计列表获取
export function dataStatisticsListApiold (data) {
return request({
@ -228,84 +195,8 @@ export function dataStatisticsListApiold (data) {
// data,
});
}
// 数据统计列表获取
export function dataStatisticsListApi (data) {
return request({
url: "/yishoudan/statistics/agency/teamWithGroup",
method: "post",
// headers: { "Content-Type": "multipart/form-data" },
data: setqs(data),
// data,
});
}
// 数据统计工单详情获取
export function dataStatisticsTeamDetailApi (data) {
return request({
url: "/yishoudan/statistics/agency/teamDetail",
method: "post",
// headers: { "Content-Type": "multipart/form-data" },
data: setqs(data),
});
}
// 获取成员分组信息
export function getMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/list",
method: "get",
});
}
// 添加成员分组
export function addMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/add",
method: "post",
data: setqs(data),
});
}
// 更新成员分组
export function updateMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/update",
method: "post",
data: setqs(data),
});
}
// 删除成员分组
export function delMemberGroupApi (data) {
return request({
url: "/yishoudan/agency/team/del/" + data,
method: "get",
});
}
// 成员管理分组下移
export function moveGroupNextApi (data) {
return request({
url: "/yishoudan/agency/team/next/" + data,
method: "get",
});
}
// 成员管理分组上移
export function moveGroupPrevApi (data) {
return request({
url: "/yishoudan/agency/team/prev/" + data,
method: "get",
});
}
// 大屏显示开关
export function memberShowScreenApi (data) {
return request({
url: "/yishoudan/user/agencyCorpUser/showAgencyScreen",
method: "post",
data: setqs(data),
});
}
// 大参与数据统计开关
export function memberJoinDataApi (data) {
return request({
url: "/yishoudan/user/agencyCorpUser/inAgencyStatistics",
method: "post",
data: setqs(data),
});
}

@ -1674,7 +1674,7 @@ export default {
// height: 72px;
background-color: #fff;
display: flex;
justify-content: start;
justify-content: end;
// flex-direction: column;
.icon {
width: 90px;
@ -1684,6 +1684,8 @@ export default {
.searchBox {
position: relative;
// margin-left: 100px;
width: 757px;
margin-right: 256px;
line-height: 44px;
z-index: 10;
.hotStore {
@ -1751,7 +1753,7 @@ export default {
// width: 685px;
// height: 44px;
&.ant-input-affix-wrapper {
width: 943px;
// width: 772px;
position: relative;
.ant-input-prefix {
position: absolute;
@ -2952,4 +2954,7 @@ export default {
}
}
}
p{
margin-bottom: 0;
}
</style>

@ -262,11 +262,11 @@ export default {
line-height: 1;
}
div {
width: 100px;
height: 32px;
width: 126px;
height: 40px;
margin-top: 136px;
font-size: 14px;
line-height: 29px;
line-height: 38px;
text-align: center;
border-radius: 999px;
cursor: pointer;

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -7,7 +7,7 @@
</router-link>
</a-breadcrumb-item>
<a-breadcrumb-item>代理列表</a-breadcrumb-item>
</a-breadcrumb>
</a-breadcrumb>
<div class="bodyContainer">
<div class="setMiddle tac setH">
<svg class="svg_icon f320" aria-hidden="true">
@ -16,7 +16,6 @@
<div class="f14 c9" style="transform:translateY(-30px)">页面正在建设中</div>
</div>
</div>
</div>
</template>
@ -54,4 +53,8 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -15,13 +15,12 @@
<!-- <button class="addGroup" @click="addGroupShow = true">添加部门</button> -->
<!-- <a-button class="addmemeber f14" @click="showDetail('add')">
<i class="iconfont icon-fangda mr4"></i> 添加成员
</a-button> -->
</a-button>-->
<a-button class="newScreen">
<router-link target="_blank" to="/largeScreen">新窗口打开</router-link>
</a-button>
<router-link target="_blank" to="/largeScreen">新窗口打开</router-link>
</a-button>
<!-- <button @click="changepage(1)"></button> -->
</div>
</div>
<!-- <div class="middleScreen"> -->
<largeScreen class="screen"></largeScreen>
@ -69,6 +68,8 @@ export default {
<style scoped lang="less">
.data_container {
height: 100%;
padding: 16px;
}
.bodyContainer {
// padding-top: 64px;

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -53,4 +53,8 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -56,5 +56,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -29,44 +29,34 @@
<a-menu :selectedKeys="selectedKeys" class="bgf" mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100%);overflow-x:hidden;">
<a-menu-item key="all" class="fsa bb_after fw500" @click="selectGroup('all')">
全部角色
<i class="the_num f14 tac" style="min-width:12px" @click.stop>19</i>
<i class="the_num f14 tac" style="min-width:12px" @click.stop>{{totalNum}}</i>
</a-menu-item>
</a-menu>
<!-- <div class="bb1 ml12 mr12 mt4 mb4" style="wdith:calc(100% - 24px)"></div> -->
<!-- <div class="f12 c9 ml24 mb8">默认角色11</div> -->
<a-menu :selectedKeys="selectedKeys" class="bgf" mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100%);overflow-x:hidden;">
<template v-for="(item, index) in ['创建人','管理员','成员']">
<a-menu-item :key="item" class="fsa" @click="selectGroup(item)">
<template v-for="(item, index) in copyRoleList">
<a-menu-item :key="item.roleName" class="fsa" @click="selectRole(item)">
<span>
{{item}}
<svg class="svg f20 ml4 mb2" aria-hidden="true">
{{item.roleName}}
<svg class="svg f20 ml4 mb2" v-if="item.roleType == 0" aria-hidden="true">
<use xlink:href="#icon-xitong" />
</svg>
</span>
<i class="the_num tac" style="min-width:12px" @click.stop>3</i>
</a-menu-item>
</template>
</a-menu>
<!-- <div class="bb1 ml12 mr12 mt4 mb4" style="wdith:calc(100% - 24px)"></div> -->
<!-- <div class="f12 c9 ml24 mb8">自定义角色8</div> -->
<a-menu :selectedKeys="selectedKeys" class="bgf" mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100%);overflow-x:hidden;">
<template v-for="(item, index) in ['角色1','角色2']">
<a-menu-item :key="item" class="fsa" @click="selectGroup(item)">
<span>
{{item}}
<svg class="svg f26 ml4 mb2" aria-hidden="true">
<svg class="svg f26 ml4 mb2" v-if="item.roleType == 1" aria-hidden="true">
<use xlink:href="#icon-zidingyi" />
</svg>
</span>
<span class="the_num tac" style="min-width:12px">1</span>
<i class="the_num tac" style="min-width:12px" @click.stop>{{item.userNum}}</i>
</a-menu-item>
</template>
</a-menu>
<!-- <div class="bb1 ml12 mr12 mt4 mb4" style="wdith:calc(100% - 24px)"></div> -->
<!-- <div class="f12 c9 ml24 mb8">自定义角色8</div> -->
</div>
<div v-else>
<a-menu :selectedKeys="selectedKeys" class="bgf" mode="inline" :class="'leftMenu'" style="overflow-y:scroll;height:calc(100%);overflow-x:hidden;">
<a-menu-item key="all" class="fsa bb_after fw500" @click="selectGroup('all')">
全部部门
团队成员
<i class="the_num f14" @click.stop>{{totalNum}}</i>
</a-menu-item>
</a-menu>
@ -98,7 +88,7 @@
</div>
<div class="rightContainer mb24">
<div class="fsa pb14 bb1 mb24">
<div class="f16 fw500">{{ selectedKeys[0] == 'all' ? `全部成员(${totalGroupNum}人)`:selectedKeys[0] + `${subGroupNum}人)` }}</div>
<div class="f16 fw500">{{ selectedKeys[0] == 'all' ? `团队成员(${totalNum}人)`:selectedKeys[0] + `${subGroupNum}人)` }}</div>
<!-- <button class="addGroup" @click="addGroupShow = true">添加部门</button> -->
<a-button class="addmemeber f14" @click="showDetail('add')">
<i class="iconfont icon-fangda mr4"></i> 添加成员
@ -108,7 +98,7 @@
<!-- :expanded-row-keys.sync="expandedRowKeys" -->
<!-- v-if="modalTitle == ''" -->
<div class>
<a-table :columns="columns" :scroll="{x:currWidth}" :data-source="memberList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id" :locale="tablenodata">
<a-table :columns="columns" :scroll="{x:currWidth}" :data-source="memberList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<span slot="nickName" slot-scope="text, record">{{ record.aliasName || record.userName }}</span>
<div slot="inAgencyStatistics" slot-scope="text, record">
@ -251,13 +241,21 @@
</a-select>
</a-form-item>
<!-- v-if="currentMember.agencyRole != 1" -->
<a-form-item label="角色">
<a-select placeholder="请选择角色" :disabled="currentMember.agencyRole == 1" :defaultActiveFirstOption="false" v-decorator="['agencyRole',{ rules: [{ required: true, message: '请选择角色' }] },]" dropdownClassName="groupSelectDrop">
<a-select-option v-for="(item,index) in roleOptions" :value="item.value" class="groupSelectSub fsa" :key="index">
<div>{{item.label}}</div>
<a-form-item label="角色" v-if="currentMember.agencyRoleId == 7261">
<a-select placeholder="请选择角色" :disabled="true" :defaultActiveFirstOption="false" v-decorator="['agencyRoleId',{ rules: [{ required: true, message: '请选择角色' }] },]" dropdownClassName="groupSelectDrop">
<a-select-option v-for="(item,index) in copyRoleList" :value="item.id" class="groupSelectSub fsa" :key="index">
<div>{{item.roleName}}</div>
</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="角色" v-else>
<a-select placeholder="请选择角色" :disabled="currentMember.agencyRoleId == 7261" :defaultActiveFirstOption="false" v-decorator="['agencyRoleId',{ rules: [{ required: true, message: '请选择角色' }] },]" dropdownClassName="groupSelectDrop">
<a-select-option v-for="(item,index) in roleOptions" :value="item.id" class="groupSelectSub fsa" :key="index">
<div>{{item.roleName}}</div>
</a-select-option>
</a-select>
</a-form-item>
<!-- <a-form-item label="角色" class="dn">
<a-radio-group v-decorator="[
'agencyRole',
@ -300,8 +298,9 @@
</template>
<script>
import { getMemberListApi, deleteMemberApi, addMemberApi, getMemberGroupApi, addMemberGroupApi, updateMemberGroupApi, delMemberGroupApi, updateMemberApi, moveGroupNextApi, moveGroupPrevApi, memberShowScreenApi, memberJoinDataApi } from '../../api/userinfo'
import { formatDateYMD, getUserApplyOrderStatusById, getAgencyRoleTypeById, getAgencyPermissionNameById, getAgencyPermissionsByRole, tableWidth } from '../../utils/commonUtil'
import { getMemberListApi, deleteMemberApi, addMemberApi, getMemberGroupApi, addMemberGroupApi, updateMemberGroupApi, delMemberGroupApi, updateMemberApi, moveGroupNextApi, moveGroupPrevApi, memberShowScreenApi, memberJoinDataApi, getTotalNumApi, getRoleListApi } from '../../api/merchantConfig'
import { formatDateYMD, getUserApplyOrderStatusById, getAgencyRoleTypeById, getAgencyPermissionNameById, getAgencyPermissionsByRole, tableWidth, fullCopy } from '../../utils/commonUtil'
export default {
//
@ -368,6 +367,8 @@ export default {
menuType: 'group',
totalGroupNum: 0,
totalNum: 0,
copyRoleList: [],
roleOptions: [],
}
},
//
@ -482,23 +483,16 @@ export default {
]
return columns
},
roleOptions() {
if (this.currentMember.agencyRole == 1) {
return [
{ label: '创建人', value: '1' },
{ label: '管理员', value: '2' },
{ label: '成员', value: '3' },
]
} else {
return [
{ label: '管理员', value: '2' },
{ label: '成员', value: '3' },
]
}
},
},
//
watch: {},
watch: {
menuType(value) {
this.selectedKeys = ['all']
this.pagination.agencyRoleIds = ''
this.pagination.agencyTeamIds = ''
this.getMemberList()
},
},
//
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
@ -509,7 +503,13 @@ export default {
this.loginUserInfo = JSON.parse(localStorage.getItem('LOGIN_DATA'))
}
tableWidth(this, this.columns, 120)
console.log(this.currWidth)
getTotalNumApi().then((res) => {
console.log(res)
this.totalNum = res.data.data
})
this.getMemberList()
this.getMemberGroup()
this.getRoleList()
this.$emit('setTitle', '团队成员')
},
/**
@ -517,8 +517,6 @@ export default {
* 如果 root 实例挂载了一个文档内元素 mounted 被调用时 vm.el 也在文档内
*/
mounted() {
this.getMemberList()
this.getMemberGroup()
window.modalCancel = this.modalCancel
},
//
@ -550,6 +548,18 @@ export default {
getGroup(e) {
console.log(e)
},
getRoleList() {
getRoleListApi().then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.roleOptions = data.data.list
this.copyRoleList = fullCopy(this.roleOptions)
this.roleOptions.shift()
console.log(this.roleOptions)
console.log(this.copyRoleList)
}
})
},
inputpageChange(e) {
const pagenumcount = this.pagination.total / this.pagination.pageSize
console.log(pagenumcount)
@ -596,11 +606,11 @@ export default {
// return a.agencyRole - b.agencyRole
// })
this.memberList.sort((a, b) => {
if (a.agencyRole == b.agencyRole) {
if (a.agencyRoleId == b.agencyRoleId) {
//== id
return b.agencyTeamId - a.agencyTeamId
} else {
return a.agencyRole - b.agencyRole
return a.agencyRoleId - b.agencyRoleId
}
})
this.pagination.total = data.data.recordCount
@ -617,10 +627,10 @@ export default {
if (data.status == 200) {
console.log(data)
this.groupList = data.data.list
this.totalNum = 0
// this.totalNum = 0
this.groupList.forEach((item, index) => {
console.log(item)
this.totalNum += item.userNum
// this.totalNum += item.userNum
if (index > 0) {
item.checked = false
} else {
@ -747,7 +757,7 @@ export default {
setTimeout(() => {
console.log(this.currentMember)
that.form.setFieldsValue({
agencyRole: this.currentMember.agencyRole + '',
agencyRoleId: this.currentMember.agencyRoleId,
aliasName: this.currentMember.aliasName,
tel: this.currentMember.tel,
group: this.currentMember.group,
@ -766,7 +776,7 @@ export default {
this.$nextTick(() => {
console.log(123)
that.form.setFieldsValue({
agencyRole: '3',
agencyRoleId: 7263,
})
})
}
@ -795,6 +805,8 @@ export default {
selectGroup(item) {
console.log(item)
this.selectedKeys = [item.teamName || item]
this.pagination.agencyRoleIds = ''
if (typeof item != 'object') {
this.pagination.agencyTeamIds = ''
} else {
@ -803,6 +815,14 @@ export default {
}
this.getMemberList()
},
selectRole(item) {
console.log(item)
this.selectedKeys = [item.roleName || item]
this.pagination.agencyTeamIds = ''
// agencyRoleIds
this.pagination.agencyRoleIds = item.id + ''
this.getMemberList()
},
modalCancel() {
// console.log(this);
this.modalTitle = ''
@ -900,9 +920,8 @@ export default {
groupChange(e) {
console.log(e)
this.form.setFieldsValue({
agencyRole: e.target.value,
agencyRoleId: e.target.value,
})
this.permission
if (this.form.getFieldValue('agencyRole') == 1) {
this.permission = getAgencyPermissionsByRole(1)
} else {
@ -1019,7 +1038,7 @@ export default {
// margin-top: 16px;
// min-height: calc(100vh - 200px);
height: 100%;
padding: 0px;
padding: 16px;
// background-color: #fff;
border: 1px solid #0000;
}
@ -1109,7 +1128,7 @@ export default {
// height: calc(100vh - 105px);
.leftContainer {
width: 260px;
// min-width: 220px;
min-width: 260px;
height: 100%;
overflow: hidden;
/deep/ .searchbox {

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -13,16 +13,32 @@
<a-breadcrumb-item v-if="secondBreadcrumb">{{secondBreadcrumb}}</a-breadcrumb-item>
</a-breadcrumb>
<div class="contentbody bodyContainer">
<div class="fss">
<div class="searchbox ">
<div class="fsa mb16">
<div class="searchbox fss">
<div class="searchinput">
<a-input-search placeholder="搜索成员" v-model.trim="pagination.keys" allowClear @search="onSearch" @keyup.enter="onSearch" @input="resetsearch"></a-input-search>
</div>
<a-radio-group v-model="menuType" class="pl12 pr12 tac" style="min-width:190px">
<a-radio-button value="fabu" class="changeGroup" style="width:50%">已发布</a-radio-button>
<a-radio-button value="caogao" class="changeGroup" style="width:50%">草稿</a-radio-button>
</a-radio-group>
</div>
<a-radio-group v-model="menuType" class="pl12 pr12 tac" style="width:190px">
<a-radio-button value="fabu" class="changeGroup" style="width:50%">已发布</a-radio-button>
<a-radio-button value="caogao" class="changeGroup" style="width:50%">草稿</a-radio-button>
</a-radio-group>
<a-button class="addmemeber f14" @click="addRole('add')">
<i class="iconfont icon-fangda mr4"></i> 新增内容
</a-button>
</div>
<div>
<a-table :columns="columns" :data-source="contentList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<div slot="status" slot-scope="text, record">
<a-switch :checked="text" @change="showChange(record,'showAgencyScreen')" />
</div>
<div slot="setting" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="showDetail(record)"></a>
<a :class="record.roleType == 1 ?'':'unclick'" class="delete" @click="record.roleType == 1 ? addRole('edit',record):''">预览</a>
<a :class="record.roleType == 1 ?'':'unclick'" @click="record.roleType == 1 ? delRole('del'):''">删除</a>
</div>
</a-table>
</div>
</div>
</div>
@ -56,10 +72,147 @@ export default {
// this.pageSize = pageSize;
// }
},
isspinning:false,
contentList: [
{
mark: '测试标题',
desp: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
cjr: '测试创建人',
fbsj: '2023-10-26 21:00',
status: 0,
},
{
mark: '测试标题',
desp: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
cjr: '测试创建人',
fbsj: '2023-10-26 21:00',
status: 0,
},
{
mark: '测试标题',
desp: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
cjr: '测试创建人',
fbsj: '2023-10-26 21:00',
status: 0,
},
{
mark: '测试标题',
desp: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
cjr: '测试创建人',
fbsj: '2023-10-26 21:00',
status: 0,
},
],
}
},
//
computed: {},
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: 'mark',
key: 'mark',
scopedSlots: { customRender: 'mark' },
ellipsis: true,
width: 300,
},
// {
// title: '',
// dataIndex: 'role',
// key: 'role',
// width: 100,
// ellipsis: true,
// },
{
title: '内容',
dataIndex: 'desp',
key: 'desp',
// 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: 'cjr',
key: 'cjr',
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: 'cjr' },
ellipsis: true,
// sortOrder: sortedInfo.columnKey == "userApplyOrder" && sortedInfo.order,
// ellipsis: true,
width: 90,
},
{
title: '发布时间',
dataIndex: 'fbsj',
key: 'fbsj',
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: 'fbsj' },
ellipsis: true,
// sortOrder: sortedInfo.columnKey == "userApplyOrder" && sortedInfo.order,
// ellipsis: true,
width: 160,
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: 'status' },
ellipsis: true,
// sortOrder: sortedInfo.columnKey == "userApplyOrder" && sortedInfo.order,
// ellipsis: true,
width: 70,
},
{
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: 130,
},
]
return columns
},
},
//
watch: {},
//
@ -81,12 +234,46 @@ export default {
// this.gitBillList()
// }
},
resetsearch() {},
onChange() {},
},
}
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
.searchbox {
width: 280px;
.searchinput {
width: 280px;
}
}
.addmemeber {
border: 0;
padding: 0 12px;
height: 32px;
line-height: 32px;
color: #fff;
background: #1890ff;
border-radius: 4px;
i {
font-size: 12px;
}
&:hover {
background: #40a9ff;
}
}
.setting {
a:nth-child(2) {
}
// a:last-child {
// }
.delete {
border-left: 1px solid #eee;
border-right: 1px solid #eee;
padding: 0 6px 0 6px;
margin: 0 6px 0 6px;
}
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer" >
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -12,37 +12,34 @@
</a-breadcrumb-item>
<a-breadcrumb-item v-if="secondBreadcrumb">{{secondBreadcrumb}}</a-breadcrumb-item>
</a-breadcrumb>
<!-- <div v-if="secondBreadcrumb">
/
{{secondBreadcrumb}}
</div>-->
<div class="contentbody bodyContainer">
<div class="fsa pb16" v-if="secondBreadcrumb == ''">
<div class="f20 fw500">{{secondBreadcrumb || '角色管理'}}</div>
<a-button class="addmemeber f14" @click="addRole('add')" >
<a-button class="addmemeber f14" @click="addRole('add')">
<i class="iconfont icon-fangda mr4"></i> 添加角色
</a-button>
</div>
<div v-if="secondBreadcrumb == ''">
<a-table :columns="columns" :data-source="roleList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id" :locale="tablenodata">
<a-table :columns="columns" :data-source="roleList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<div slot="setting" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="secondBreadcrumb = '角色详情'"></a>
<a class="delete" @click="addRole('edit')"></a>
<a @click="delRole('del')"></a>
<a @click="showDetail(record)"></a>
<a :class="record.roleType == 1 ?'':'unclick'" class="delete" @click="record.roleType == 1 ? addRole('edit',record):''"></a>
<a :class="record.roleType == 1 ?'':'unclick'" @click="record.roleType == 1 ? delRole(record):''"></a>
</div>
</a-table>
<div class="pagecontainer mt16 fss">
<div class="pagecontainer mt16 fss dn">
<a-pagination :current="pagination.pageNum" :page-size-options="pagination.pageSizeOptions" :default-current="1" :defaultPageSize="20" :show-total="total => `${total}`" :total="pagination.total" @change="onChange" size="small" show-size-changer show-quick-jumper />
</div>
</div>
<div v-else-if="secondBreadcrumb == '' || secondBreadcrumb == ''">
<div>
<a-form :form="roleForm" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }" @submit.event="addSubmit">
<a-form :form="roleForm" :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-input placeholder="请输入角色名称" v-decorator="[ 'roleName', { rules: [{ required: true, message: '' }] }, ]" />
</a-form-item>
<a-form-item class="addItem" label="角色描述:">
<a-input placeholder="请输入角色描述" v-decorator="[ 'desp', { rules: [{ required: true, message: '' }] }, ]" />
@ -53,7 +50,7 @@
<a-form-item>
<div class>
<a-select default-value="lucy" class="mr8 ml8" style="width:360px" placeholder=" 请在已有的角色选择" v-decorator="['agencyTeamId',{ rules: [{ required: false, message: ' 请在已有的角色选择' }] },]" dropdownClassName="groupSelectDrop">
<a-select class="mr8 ml8" style="width:360px" placeholder=" 请在已有的角色选择" v-decorator="['agencyTeamId',{ rules: [{ required: false, message: ' 请在已有的角色选择' }] },]" dropdownClassName="groupSelectDrop">
<a-select-option :value="item.roleName" v-for="(item,index) in roleList">{{item.roleName}}</a-select-option>
<!-- <div slot="dropdownRender" slot-scope="menu">
<div v-for="(item,index) in roleList" @click="choiceGroup(item)" class="groupSelectSub fsa" :key="index">
@ -73,17 +70,38 @@
</div>
<a-form-item>
<a-button type class="mr16" @click="cancelAdd"></a-button>
<a-button type="primary" html-type="submit">保存</a-button>
<a-button type="primary" html-type="submit" @click="addSubmit"></a-button>
</a-form-item>
</a-form>
</div>
</div>
<div v-if="secondBreadcrumb == '角色详情' "></div>
<div v-if="secondBreadcrumb == '角色详情' ">
<div class="f20 fw500 pb16 bb1 mb24">角色详情</div>
<div class="fw500 mb16 f16">角色信息</div>
<div style="margin-bottom:24px" class="f14 fss">
<div class="c6">角色名称</div>
<div>{{ currentRole.roleName }}</div>
</div>
<div style="margin-bottom:24px" class="f14 fss">
<div class="c6">角色描述</div>
<div>{{ currentRole.desp }}</div>
</div>
<div class="fw500 mb16 f16">功能权限</div>
<div v-for="(item, key) in authorityList">
<a-checkbox :checked="item.checked" @change="checkboxChange(item,key)">{{item.label}}</a-checkbox>
<br />
<div class="ml24 mt16">
<a-checkbox v-for="(subItem, subIndex) in item.children" :checked="subItem.checked" :disabled="!item.checked" @change="checkboxChange(subItem,key,subIndex)">{{subItem.label}}</a-checkbox>
</div>
<a-divider />
</div>
</div>
</div>
</div>
</template>
<script>
import { getRoleListApi, addRoleApi, updateRoleApi, delRoleApi } from '../../api/merchantConfig'
export default {
//
name: 'RoleManagement',
@ -335,8 +353,8 @@ export default {
// },
{
title: '角色备注',
dataIndex: 'pName',
key: 'pName',
dataIndex: 'desp',
key: 'desp',
// width: 100,
// filters: this.groupList,
// customRender: (text, row, index) => {
@ -382,6 +400,7 @@ export default {
created() {
this.$emit('setTitle', '角色管理')
this.middleauthor = JSON.parse(JSON.stringify(this.authorityList))
this.getRoleList()
console.log(this.middleauthor)
},
/**
@ -430,22 +449,36 @@ export default {
this.getMemberList()
}
},
addRole(type) {
showDetail(val) {
this.secondBreadcrumb = '角色详情'
console.log(val)
this.currentRole = val
},
addRole(type, val) {
this.currentRole = val
if (type == 'add') {
this.secondBreadcrumb = '添加角色'
} else {
this.secondBreadcrumb = '编辑角色'
setTimeout(() => {
this.roleForm.setFieldsValue({
roleName: val.roleName,
desp: val.desp,
})
}, 10)
}
this.$forceUpdate()
},
delRole() {
this.$confirm({
delRole(val) {
let that = this
that.$confirm({
title: '删除',
content: '确定要删除该角色吗?',
centered: true,
onOk(e1, e2) {
console.log(e1)
console.log(e2)
that.delSubmit(val)
return new Promise((res) => {
setTimeout(() => {
res()
@ -455,12 +488,67 @@ export default {
onCancel() {},
})
},
getRoleList() {
getRoleListApi().then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.roleList = data.data.list
}
})
},
/**
* 角色信息表单提交
* 添加角色信息表单提交
*/
addSubmit() {
this.roleForm.validateFields(async (err) => {
console.log(err)
console.log(this.roleForm.getFieldsValue())
if (err == null) {
let formData = this.roleForm.getFieldsValue()
delete formData.agencyTeamId
if (this.secondBreadcrumb == '添加角色') {
addRoleApi({
...formData,
}).then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.secondBreadcrumb = ''
this.$message.success('添加成功')
this.getRoleList()
}
})
} else {
updateRoleApi({
...formData,
recordId: currentRole.id,
}).then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.secondBreadcrumb = ''
this.$message.success('修改成功')
this.getRoleList()
}
})
}
}
})
},
/**
* 删除角色信息表单提交
*/
delSubmit(val) {
console.log(val);
delRoleApi(val.id).then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.secondBreadcrumb = ''
this.$message.success('删除成功')
this.getRoleList()
} else {
this.$message.fail('删除失败')
}
})
},
/**
@ -476,6 +564,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
.addmemeber {
border: 0;
padding: 0 12px;
@ -548,4 +639,8 @@ export default {
}
}
}
.unclick {
color: #ccc;
cursor: not-allowed;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
@ -55,5 +55,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -1,5 +1,5 @@
<template>
<div class="">工作台</div>
<div class="rightContainer">工作台</div>
</template>
<script>
@ -39,5 +39,9 @@ export default {
</script>
<style scoped lang="less">
.rightContainer {
padding: 16px;
}
</style>

@ -131,6 +131,10 @@ export default {
</script>
<style scoped lang="less">
.bocaiTV-container{
padding: 16px;
}
.icon {
width: 1em;
height: 1em;

@ -186,7 +186,8 @@
</template>
<script>
import { dataStatisticsListApi, dataStatisticsTeamDetailApi, getMemberGroupApi } from '../../../../api/userinfo'
import { getMemberGroupApi, dataStatisticsTeamDetailApi, dataStatisticsListApi } from '../../../../api/merchantConfig'
import moment from 'moment'
import { getDateYMD, formatDateYMD, formatDateYMDHM, getUserApplyOrderStatusById, toFixed, tableWidth, fullCopy } from '../../../../utils/commonUtil'
const rowSelection = {
@ -270,7 +271,6 @@ export default {
groupDataList: [],
totalGroupNum: 0,
currentGroup: {},
}
},
//
@ -377,6 +377,30 @@ export default {
ellipsis: true,
width: 120,
},
{
title: '背包指数',
dataIndex: 'finshedGPA',
key: 'finshedGPA',
customRender: (text, row, index) => {
return '*'
},
sorter: (a, b) => a.finshedGPA - b.finshedGPA,
scopedSlots: { customRender: 'finshedGPA' },
ellipsis: true,
width: 120,
},
{
title: '漏斗指数',
dataIndex: 'funnel',
key: 'funnel',
// customRender: (text, row, index) => {
// return toFixed(text)
// },
sorter: (a, b) => a.funnel - b.funnel,
scopedSlots: { customRender: 'funnel' },
ellipsis: true,
width: 120,
},
]
return columns
},
@ -567,10 +591,10 @@ export default {
handler(value) {
let that = this
console.log(value)
if (value == 'group') {
console.log(this.columns)
that.selectedKeys = ['all']
this.selectGroup('all')
that
.getDataStatisticsList()
.then(() => {
@ -606,9 +630,24 @@ export default {
},
ellipsis: true,
})
this.$forceUpdate()
})
}
}
that.selectedKeys = ['all']
this.selectGroup('all')
// if (that.contentListSearchForm.start == that.contentListSearchForm.end) {
// console.log(123123)
// that.dataList.sort((a, b) => {
// return b.funnel - a.funnel
// })
// } else {
// console.log(321312)
// that.dataList.sort((a, b) => {
// return b.entryGPA - a.entryGPA
// })
// }
// that.$forceUpdate()
},
immediate: true,
// setTimeout(()=>{
@ -741,6 +780,8 @@ export default {
console.log(item)
console.log(index)
})
console.log(this.contentListSearchForm.start)
console.log(this.contentListSearchForm.end)
console.log(newList)
if (this.menuType == 'group') {
console.log('isgroup')
@ -749,6 +790,15 @@ export default {
console.log('isrole')
this.dataList = fullCopy(newList)
}
if (this.contentListSearchForm.start == this.contentListSearchForm.end) {
this.dataList.sort((a, b) => {
return b.funnel - a.funnel
})
} else {
this.dataList.sort((a, b) => {
return b.entryGPA - a.entryGPA
})
}
this.groupDataList = fullCopy(data.data.list)
this.totalDataList = fullCopy(newList)
if (this.currentGroup) {
@ -791,14 +841,18 @@ export default {
that.checked3 = false
that.checked4 = false
that.checked5 = false
that.checked6 = false
that.checked7 = false
} else {
that.checked0 = true
that.checked0 = false
that.checked1 = false
that.checked2 = false
that.checked3 = false
that.checked4 = false
that.checked5 = false
that.contentListSearchForm.start = moment().add(-7, 'd').format('YYYY-MM-DD')
that.checked6 = true
that.checked7 = false
that.contentListSearchForm.start = moment().add(-0, 'd').format('YYYY-MM-DD')
that.contentListSearchForm.end = moment().format('YYYY-MM-DD')
}
@ -956,6 +1010,15 @@ export default {
})
}
})
if (this.contentListSearchForm.start == this.contentListSearchForm.end) {
this.dataList.sort((a, b) => {
return b.funnel - a.funnel
})
} else {
this.dataList.sort((a, b) => {
return b.entryGPA - a.entryGPA
})
}
console.log(this.dataList)
} else {
this.currentGroup = {}
@ -966,7 +1029,7 @@ export default {
// this.getDataStatisticsList()
},
onDataSearch() {
this.getDataStatisticsList()
this.getDataStatisticsList()
},
},
}
@ -979,7 +1042,7 @@ table {
.dataStatisticsContainer {
height: 100%;
padding: 16px;
// min-height: 780px;
}
.contentbody {

@ -24,7 +24,7 @@
:data-source="data"
:pagination="false"
@change="onChange"
:locale="tablenodata"
:rowKey="(record) => record.index"
:loading="{
spinning: isspinning,

@ -25,7 +25,7 @@
:pagination="false"
@change="onChange"
:rowKey="(record) => record.index"
:locale="tablenodata"
:loading="{
spinning: isspinning,
tip: '加载中',

@ -36,7 +36,7 @@
<button @click="changepage(1)"></button>
</div>
</div>
<a-table :columns="columns" class="" :data-source="data" :pagination="false" @change="onChange" :loading="{ spinning: isspinning, tip: '加载中', wrapperClassName: 'spinstyle', }" :locale="tablenodata" :rowKey="(record) => record.index">
<a-table :columns="columns" class="" :data-source="data" :pagination="false" @change="onChange" :loading="{ spinning: isspinning, tip: '加载中', wrapperClassName: 'spinstyle', }" :rowKey="(record) => record.index">
<a slot="name" slot-scope="text" style="height:0px">{{ text }}</a>
<a slot="userDetail" style="color: #ff4400;height:0px" slot-scope="text, text1" @click="toDetail(text1)"></a>
</a-table>

@ -1,4 +1,4 @@
@import "http://at.alicdn.com/t/c/font_3135652_vt5pe6yxuqg.css";
@import "http://at.alicdn.com/t/c/font_3135652_wh8pz6ovidi.css";
// 初始化页面样式
body,
@ -9,7 +9,7 @@ h4,
h5,
h6,
hr,
p,
// p,
blockquote,
dl,
dt,
@ -122,9 +122,9 @@ body {
// width: 100vw;
// text-align: center;
}
p {
font-size: 18px;
}
// p {
// font-size: 18px;
// }
i {
font-style: normal;
}
@ -319,7 +319,10 @@ i {
.pl8 {
padding-left: 8px;
}
.pl32{
padding-left: 32px !important;
}
.pr8 {
padding-right: 8px;
}
@ -412,6 +415,9 @@ i {
.f36 {
font-size: 36px !important;
}
.f64{
font-size: 64px !important;
}
.f320 {
font-size: 320px !important;
}
@ -506,6 +512,7 @@ i {
// 公用样式类名
.w {
width: 1200px;
min-width: 1200px;
margin: 0 auto;
}
.mb12 {

@ -4,9 +4,14 @@
<div class="pagetitle" v-if="isLogin && routertitleindex != 0">
<div class="w fsa">
<div class="fss">
<svg class="svg_icon f36" aria-hidden="true">
<use xlink:href="#icon-daotian1" />
<svg class="svg_icon f64" aria-hidden="true">
<use xlink:href="#icon-daotian2" />
</svg>
</div>
<span class="login fsa">
<div class="f14 pr16 mr16" style="line-height:1;border-right:1px solid #979797;cursor:pointer">
<!-- <i class="iconfont icon-qiehuan cf4 f12 mr4"></i>切换到公开版 -->
</div>
<div>
<ul class="fsa titleTag">
<li>
@ -44,11 +49,6 @@
</li>-->
</ul>
</div>
</div>
<span class="login fsa">
<div class="f14 pr16 mr16" style="line-height:1;border-right:1px solid #979797;cursor:pointer">
<!-- <i class="iconfont icon-qiehuan cf4 f12 mr4"></i>切换到公开版 -->
</div>
<span v-if="isLogin" class="logined">
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="loginValue.imgSrc" alt="" v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
@ -56,7 +56,7 @@
<span class="fsa">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<div class="ml4">{{ userbaseInfo.userName }}</div>
<div class="ml4 f16 c6">{{ userbaseInfo.userName || '-' }}</div>
</span>
<div class="loginbox" slot="overlay">
<!-- <div>
@ -126,27 +126,19 @@
</svg>
<!-- </div> -->
<div v-if="!isLogin">
<router-link to="/list" style="display: inline-block; width: 100%">登录</router-link>
<router-link to="/list" style="display: inline-block; width: 100%">注册/登录</router-link>
</div>
<span v-else class="logined">
<div v-else>
<router-link to="/list" style="display: inline-block; width: 100%">进入稻田</router-link>
</div>
<!-- <span class="logined">
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="loginValue.imgSrc" alt="" v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else><i class="iconfont icon-morentouxiang" style="color:#ff4400"></i></span>-->
<span class="fsa f14 cf shadow">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<span class="ml4">{{ userbaseInfo.userName }}</span>
</span>
<div class="loginbox" slot="overlay">
<!-- <div>
<img :src="loginValue.imgSrc" alt v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else class="iconfont icon-morentouxiang avatar"></span>
<span class="username">
{{
loginValue.userName || loginValue.nickName || loginValue.tel
}}
</span>
</div> -->
<router-link to="/accountsetting">
<div>
<span>
@ -163,18 +155,10 @@
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<!-- <router-link to="/accountsetting"
><div>
<span
><i class="iconfont icon-zhanghaoshezhi"></i
>账号设置</span
><i class="iconfont icon-youjiantou"></i>
</div>
</router-link>-->
<button @click="logout">退</button>
</div>
</a-dropdown>
</span>
</span>-->
</div>
<!-- 搜索栏 -->
@ -634,6 +618,7 @@ export default {
.titleSlogan {
position: absolute;
left: 50%;
top: -6px;
// padding-top: 32px;
transform: translateX(-50%);
z-index: 9;
@ -641,10 +626,11 @@ export default {
font-size: 120px;
}
div {
width: 68px;
height: 26px;
// width: 68px;
height: 32px;
padding: 0 16px;
font-size: 14px;
line-height: 24px;
line-height: 30px;
text-align: center;
border-radius: 999px;
cursor: pointer;
@ -663,7 +649,7 @@ export default {
/deep/ .pagetitle {
background-color: #f0f0f0;
padding: 0;
height: 48px;
height: 64px;
display: flex;
align-items: center;
// height: 32px;
@ -671,7 +657,8 @@ export default {
// font-size: 16px;
.titleactive {
// font-size: 18px;
font-weight: normal;
font-weight: bold;
// font-weight: normal;
color: #ff4400;
}
.w {
@ -681,14 +668,14 @@ export default {
// line-height: 36px;
.titleTag {
font-size: 14px;
font-size: 16px;
display: flex;
margin-left: 150px;
li {
font-weight: 400;
color: #333;
margin-right: 24px;
line-height: 48px;
font-weight: normal;
color: #666;
margin-right: 32px;
line-height: 64px;
// text-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.05);
a {

@ -1,90 +1,105 @@
<template>
<div class>
<div>
<div class="topmenu" style="display: flex;justify-content: space-between;background-color: #fff; box-shadow: 1px 1px 2px #e8e8e8; position: fixed; top: 0; z-index: 100">
<div style>
<div class="logo" style="box-shadow: none; min-width: 160px; max-width: 160px; margin-left: -8px">
<div @click.stop="clearOpenkey" style="cursor: pointer; border-right: 1px solid #eee;">
<router-link to="/main">
<!-- <img src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/daotianLogo.svg" alt /> -->
<svg class="svg_icon f24" aria-hidden="true">
<use xlink:href="#icon-bocai1" />
</svg>
<!-- <router-link :to="{name:'home'}"><img src="http://matripeweb.oss-cn-hangzhou.aliyuncs.com/antd/adminLogo.svg" alt=""> -->
<h1>稻田商家后台</h1>
<!-- style="position: relative;top: -1px;" -->
</router-link>
</div>
<a-layout id="components-layout-demo-responsive">
<a-layout-sider :width="pLeft" breakpoint="lg" :collapsedWidth="collapsedWidth" @breakpoint="onBreakpoint" :trigger="collapsed ? 'null' : ''" v-model="collapsed" class="leftMenu ant-layout-sider-has-trigger" style="z-index: 100">
<div class="logo" style="box-shadow: none;margin-left: -8px">
<div @click.stop="clearOpenkey" style="cursor: pointer;">
<router-link to="/main">
<!-- <img src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/daotianLogo.svg" alt /> -->
<svg class="svg_icon f24" aria-hidden="true" :class="collapsed ? 'ml4' : ''">
<use xlink:href="#icon-bocai1" />
</svg>
<!-- <router-link :to="{name:'home'}"><img src="http://matripeweb.oss-cn-hangzhou.aliyuncs.com/antd/adminLogo.svg" alt=""> -->
<h1 v-if="!collapsed" style>稻田商家后台</h1>
<!-- style="position: relative;top: -1px;" -->
</router-link>
</div>
<a-menu :selectedKeys="[$route.name]" :openKeys.sync="openKeys" @click="handleClick" class mode="inline" style="overflow-y:scroll;height:calc(100vh - 49px);overflow-x:hidden">
<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" />
<a-badge dot v-if="myStatisticRedDot && item.name == 'myStatistic'">
<span class="nav-text" v-text="item.title"></span>
</a-badge>
<span v-else class="nav-text" v-text="item.title"></span>
</router-link>
</a-menu-item>
<a-sub-menu :key="item.name" v-if="item.path == ''">
<span slot="title">
<i class="iconfont f12 mr8" :class="item.icon" />
<span v-text="item.title"></span>
</span>
<a-menu-item-group>
<a-menu-item class="f14" :key="child.name" v-for="(child, idx) in item.children">
<!-- <router-link :to="{name:child.name}" :target="child.title == '监控页' ? '_blank' : '_self'"> -->
<router-link :to="{ name: child.name }">{{ child.title }}</router-link>
</a-menu-item>
</a-menu-item-group>
</a-sub-menu>
</template>
</a-menu>
</div>
<div class="flex1" style="z-index: 999">
<div class="logined mr24 fsa" style="height:48px;line-height:48px;">
<div class="fl">
<span class="f16 ml16 fw500 c085">{{ currentPage }}</span>
</div>
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="userbaseInfo.imgSrc" alt="" v-if="userbaseInfo.imgSrc !== ''" style="border-radius: 50%" />
<span v-else><i class="iconfont icon-morentouxiang" style="color:#ff4400"></i></span>-->
<span class="fsa f14">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<div class="ml4">{{ userbaseInfo.userName }}</div>
<a-menu :selectedKeys="[$route.name]" :openKeys.sync="openKeys" @click="handleClick" class mode="inline" style="overflow-y:scroll;height:calc(100vh - 49px);overflow-x:hidden">
<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" />
<span class="nav-text" v-if="!collapsed" v-text="item.title"></span>
</router-link>
</a-menu-item>
<a-sub-menu :key="item.name" v-if="item.path == ''">
<span slot="title">
<i class="iconfont f12 mr8" :class="item.icon" />
<span v-text="item.title" v-if="!collapsed"></span>
</span>
<div class="loginbox backTable" slot="overlay">
<router-link to="/accountsetting">
<div>
<span>
<i class="iconfont icon-gerenzhongxin"></i>个人中心
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/main">
<div>
<span>
<i class="iconfont icon-shangjiahoutai"></i>返回首页
<a-menu-item-group>
<a-menu-item class="f14" :key="child.name" v-for="(child, idx) in item.children">
<!-- <router-link :to="{name:child.name}" :target="child.title == '监控页' ? '_blank' : '_self'"> -->
<router-link :to="{ name: child.name }">{{ child.title }}</router-link>
</a-menu-item>
</a-menu-item-group>
</a-sub-menu>
</template>
</a-menu>
<div class="ant-layout-sider-trigger" :style="{ width: pLeft }">
<a-icon v-if="hideIcon" class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click="onTrigger" />
</div>
</a-layout-sider>
<a-layout>
<a-layout-header class="header" :style="{ paddingLeft: pLeft , width:`calc(80% - ${pLeft})`}">
<div class="topmenu" :style="{ width:`calc(100% - ${pLeft})`}" style="display: flex;justify-content: space-between;background-color: #fff; box-shadow: 1px 1px 2px #e8e8e8; position: fixed; top: 0; z-index: 100">
<div class="flex1" style="z-index: 999">
<div class="logined mr24 fsa" style="height:48px;line-height:48px;">
<div class="fl">
<span class="f16 ml16 fw500 c085">{{ currentPage }}</span>
</div>
<div class="fsa">
<a-button class="mr20">
<router-link to="/list">职位列表</router-link>
</a-button>
<a-dropdown overlayClassName="logindropdown" placement="bottomRight">
<!-- <img :src="userbaseInfo.imgSrc" alt="" v-if="userbaseInfo.imgSrc !== ''" style="border-radius: 50%" />
<span v-else><i class="iconfont icon-morentouxiang" style="color:#ff4400"></i></span>-->
<span class="fsa f14">
<span class="iconfont icon-morentouxiang mr4 f32" v-if="!userbaseInfo.imgSrc"></span>
<img :src="userbaseInfo.imgSrc" class="mr4" style="border-radius:50%;width:32px;height:32px;" alt v-else />
<div class="ml4">{{ userbaseInfo.aliasName || userbaseInfo.userName}}</div>
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<button @click="logout">退</button>
<div class="loginbox backTable" slot="overlay">
<router-link to="/accountsetting">
<div>
<span>
<i class="iconfont icon-gerenzhongxin"></i>个人中心
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/main">
<div>
<span>
<i class="iconfont icon-shangjiahoutai"></i>返回首页
</span>
<i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<button @click="logout">退</button>
</div>
</a-dropdown>
</div>
</div>
</a-dropdown>
</div>
</div>
</div>
</div>
<a-layout-content class="trans" style="padding-top: 64px;">
<!-- <div id="littleUse" style="margin-top: 48px"> -->
<router-view @setTitle="setTitle"></router-view>
<!-- </div> -->
</a-layout-content>
<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>
</a-layout-header>
<a-layout-content class="trans" :style="{ margin: '2px 0 0 0', paddingLeft: pLeft, paddingTop: pTop }">
<!-- <div id="littleUse" style="margin-top: 48px"> -->
<router-view @setTitle="setTitle"></router-view>
<!-- </div> -->
</a-layout-content>
<a-layout-footer :style="{ marginLeft: pLeft }" class="tac" style="textalign: center">
<span class="c025">Copyright © 2015 - 2021 Matripe. All Rights Reserved.</span>
</a-layout-footer>
</a-layout>
</a-layout>
<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>
@ -114,7 +129,7 @@ export default {
icon: 'icon-houtaishouye',
component: '',
path: 'HomePage',
title: '后台首页',
title: '后台首页-',
menuName: 'HomePage',
level: 1,
menuType: 1,
@ -127,7 +142,7 @@ export default {
icon: 'icon-zhiweiguanli',
component: '',
path: '',
title: '职位管理',
title: '职位管理-',
menuName: 'dashboard',
level: 1,
menuType: 1,
@ -140,7 +155,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '职位列表',
title: '职位列表-',
menuName: '职位列表',
},
{
@ -151,7 +166,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '佣金配置',
title: '佣金配置-',
menuName: '佣金配置',
},
],
@ -164,7 +179,7 @@ export default {
icon: 'icon-laoxiangguanli',
component: '',
path: '',
title: '老乡管理',
title: '老乡管理-',
menuName: 'TownsmanManagement',
level: 1,
menuType: 1,
@ -177,7 +192,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '老乡列表',
title: '老乡列表-',
menuName: '老乡列表',
},
],
@ -190,7 +205,7 @@ export default {
icon: 'icon-dailiguanli',
component: '',
path: '',
title: '代理管理',
title: '代理管理-',
menuName: 'AgencyManagement',
level: 1,
menuType: 1,
@ -203,7 +218,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '代理列表',
title: '代理列表-',
menuName: '代理列表',
},
],
@ -258,7 +273,7 @@ export default {
icon: '',
component: 'home',
path: '/home',
title: '通讯录',
title: '通讯录-',
menuName: '通讯录',
level: 2,
menuType: 1,
@ -312,7 +327,7 @@ export default {
icon: 'icon-gongdanguanli',
component: '',
path: '',
title: '工单管理',
title: '工单管理-',
menuName: 'OrderManagement',
level: 1,
menuType: 1,
@ -325,7 +340,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '工单列表',
title: '工单列表-',
menuName: '工单列表',
},
],
@ -338,7 +353,7 @@ export default {
icon: 'icon-zhangdanzhongxin',
component: '',
path: '',
title: '账单中心',
title: '账单中心-',
menuName: 'BillCenter',
level: 1,
menuType: 1,
@ -351,7 +366,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '我的账单',
title: '我的账单-',
menuName: '我的账单',
},
],
@ -407,7 +422,7 @@ export default {
icon: 'icon-neirongguanli',
component: '',
path: '',
title: '内容管理',
title: '内容管理-',
menuName: 'container',
level: 1,
menuType: 1,
@ -420,7 +435,7 @@ export default {
icon: '',
component: 'home',
path: '/home',
title: '通知中心',
title: '通知中心-',
menuName: 'container',
level: 2,
menuType: 1,
@ -460,7 +475,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '企微配置',
title: '企微配置-',
menuName: '企微配置',
},
{
@ -471,7 +486,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '导航配置',
title: '导航配置-',
menuName: '导航配置',
},
],
@ -484,7 +499,7 @@ export default {
icon: 'icon-qiyeshezhi',
component: '',
path: '',
title: '企业设置',
title: '企业设置-',
menuName: 'GlobalConfig',
level: 1,
menuType: 1,
@ -497,7 +512,7 @@ export default {
icon: 'home',
component: '',
path: 'http://www.idaotian.com/box/btv/#/',
title: '企业信息',
title: '企业信息-',
menuName: '企业信息',
},
],
@ -510,7 +525,7 @@ export default {
icon: 'icon-fuwushichang',
component: '',
path: 'ServiceMarket',
title: '服务市场',
title: '服务市场-',
menuName: 'ServiceMarket',
level: 1,
menuType: 1,
@ -519,6 +534,11 @@ export default {
openKeys: ['dashboard'],
userbaseInfo: JSON.parse(localStorage.getItem('LOGIN_DATA')),
currentPage: '',
pLeft: '200px',
pTop: '47px',
collapsedWidth: 48,
collapsed: false,
hideIcon: true,
}
},
//
@ -547,18 +567,38 @@ export default {
}
})
this.openKeys = _openKey
// if (this.$route.meta.menuName != '' && this.$route.meta.menuName != undefined && this.$route.meta.menuName != null) {
// var _openKey = []
// if (this.$route.meta.menuName != this.$route.name) {
// //
// _openKey.push(this.$route.meta.menuName, this.$route.name)
// } else {
// _openKey.push(this.$route.name)
// }
// }
},
//
methods: {
onTrigger(a) {
this.collapsed = !this.collapsed
if (this.collapsed) {
this.pLeft = '48px'
} else {
this.pLeft = '200px'
}
},
onBreakpoint(broken) {
// console.log(broken + "=======");
// debugger;
if (broken) {
this.pLeft = '48px'
} else {
this.pLeft = '200px'
}
},
onCollapse(collapsed, type) {
if (collapsed || type == 'clickTrigger') {
this.hideIcon = false
this.collapsedWidth = 0
this.pLeft = 0
} else {
this.hideIcon = true
this.collapsedWidth = 48
// this.pLeft = '80px'
}
},
handleClick(e) {
console.log(e)
this.openKeys = e.keyPath
@ -606,7 +646,7 @@ body {
}
.ant-menu {
border-right: 1px solid #eee !important;
// border-right: 1px solid #eee !important;
&::-webkit-scrollbar {
width: 0 !important;
}
@ -628,11 +668,11 @@ header.header,
overflow: auto;
background-color: #f5f5f5;
transition: all 0.2s;
padding: 18px;
padding-right: 36px;
padding-bottom: 0;
// padding: 18px;
// padding-right: 36px;
// padding-bottom: 0;
// padding-right: 32px;
margin-left: 152px !important;
// margin-left: 192px !important;
}
.header {
@ -767,7 +807,6 @@ header.header,
color: unset;
}
.topmenu {
width: 100%;
height: 48px;
}
@ -821,4 +860,54 @@ header.header,
position: unset;
// bottom: 0;
}
/deep/.ant-breadcrumb {
.ant-breadcrumb-link {
a:hover {
color: unset !important;
}
}
}
.ant-layout-sider-trigger {
color: rgba(0, 0, 0, 0.65);
background: #fff;
border-top: 1px solid #f0f0f0;
border-right: 1px solid #e0e0e0;
text-align: left;
.trigger {
font-size: 18px;
line-height: 48px;
padding: 0 24px;
cursor: pointer;
transition: color 0.3s;
padding-left: 16px;
}
.trigger:hover,
.c1890 {
color: #1890ff;
}
}
.leftMenu {
height: 100vh;
background: #fff;
/*box-shadow: 1px 1px 2px #ddd;*/
position: fixed;
left: 0;
z-index: 2;
border-right: 1px solid #e8e8e8;
}
.ant-menu-inline-collapsed {
width: 48px;
> .ant-menu-item {
padding: 0 16px !important;
}
> .ant-menu-submenu {
> .ant-menu-submenu-title {
}
}
}
/deep/.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
padding: 0 16px !important;
}
</style>

Loading…
Cancel
Save