You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bsdgy-front/src/pages/user/AccountManager.vue

549 lines
22 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="div-page">
<template>
<Row class="search-row">
<!-- <span class="search-span">账户名</span>-->
<i-input placeholder="搜索用户名/账户" class="left-15 search-select" @on-enter="listAccountInfoFunction" v-model="searchContent"/>
<span class="search-span">角色</span>
<Select filterable placeholder="请选择角色" v-model="selectedRoleId" class="left-15 search-select"
@on-change="onRoleChangeLister">
<Option v-for="item in roleList" :value="item.id" :key="item.id">{{ item.name }}</Option>
</Select>
<span class="left-15 txt-font-a">零售公司</span>
<Select v-model="selectedCompanyId" filterable class="left-15 txt-font-a search-select"
@on-change="companySelect">
<Option v-for="item in companyList" :value="item.id" :key="item.id">{{ item.name }}</Option>
</Select>
<span class="left-15 txt-font-a">店铺</span>
<Select filterable placeholder="全部" v-model="selectedShopId" class="left-15 txt-font-a search-select"
@on-change="downShopChange">
<Option v-for="item in shopList" :value="item.id" :key="item.id">{{ item.name }}</Option>
</Select>
<Button type="primary" class="search-btn" @click="listAccountInfoFunction">查询</Button>
<div class="search-div-btn">
<Button type="primary" class="search-btn"
@click="addOneAccount()">+添加账户
</Button>
<Button type="primary" class="search-btn" @click="exportData" :loading="loading"></Button>
</div>
</Row>
</template>
<Table :loading="loading" :columns="columns1" :data="data1" class="table-account" size="small"></Table>
<Page :total="totalSize" :current="pageNum" :page-size="pageSize" show-elevator show-total
placement="top" @on-change="handlePage" class-name="ks-page"></Page>
<Modal
v-model="modal13"
title="删除提示"
@on-cancel="cancel" align="center">
<p style="margin-top: 20px;margin-bottom: 20px">确定要删除此账户吗?删除后不可恢复</p>
<div slot="footer" style="text-align: center;margin-bottom: 10px;margin-top: 10px">
<Button style="width: 100px;" @click="modal13 = false">取消删除</Button>
<Button type="error" style="width: 100px;margin-left: 20px" @click="ok"></Button>
</div>
</Modal>
</div>
</template>
<script>
import accountManagement from "../../services/account/AccountManagement";
import zeroExtend from "../../services/customer/zeroExtend";
import staff from "../../services/staff/staff";
import IncreaseData from "../../services/generalize/IncreaseData";
export default {
data() {
return {
userId: JSON.parse(sessionStorage.getItem("loginInfo")).userId,
loading: false,
modal13: false,
roleList: [
{
id: '0',
name: '全部',
},
{
id: '1',
name: '系统管理员',
},
{
id: '2',
name: '运营人员',
},
{
id: '3',
name: '店长',
},
{
id: '4',
name: '导购',
},
],
columns1: [
{
type: 'index2',
width: 80,
title: "序号",
align: 'center',
render: (h, params) => {
return h('span', params.index + (this.pageNum - 1) * this.pageSize + 1);
}
},
{
title: '用户名',
key: 'userName'
},
{
title: '别名',
key: 'abbreviation'
},
{
title: '系统账号',
key: 'account'
},
{
title: '手机号',
key: 'mobil',
},
{
title: '系统角色',
key: 'roleName'
},
{
title: '零售公司',
key: 'companyName'
},
{
title: '零售公司编码',
key: 'companyCode'
},
{
title: '店铺',
key: 'shopName'
},
{
title: '店铺编码',
key: 'shopCode'
},
{
title: '操作',
key: 'operation',
render: (h, params) => {
let that = this;
return h('div', [
h('span', {
style: {
background: 'white',
border: '0',
color: '#3496EB',
marginRight: '15px',
cursor: 'pointer'
},
on: {
click: () => {
this.$router.push({
path: '/account/management/modify',
query: {
accountId: params.row.accountId,
userId: params.row.userId,
userName: params.row.userName,
account: params.row.account,
password: params.row.password,
confirmPassword: params.row.confirmPassword,
roleId: params.row.roleId,
roleCode: params.row.roleCode,
shopId: params.row.shopId,
companyId: params.row.orgId,
mobil: params.row.mobil,
}
});
}
}
}, '修改'),
h('span', {
style: {
background: 'white',
border: '0',
color: 'red',
marginRight: '15px',
cursor: 'pointer'
},
on: {
click: () => {
that.modal13 = true;
that.updateAccountId = that.data1[params.index].accountId;
that.updateUserId = that.data1[params.index].userId;
}
}
}, '删除')
])
}
},
],
data1: [],
selectedRoleId: 0,
//分页内容
totalSize: 0,
pageNum: 1,
pageSize: 10,
//搜索内容
searchContent: '',
updateAccountId: 0,
updateUserId: 0,
item: null,
companyList: [], // 零售公司列表
selectedCompanyId: 0, // 选中的零售公司ID
organizationalList: [],
selectedShopId: 0, // 店铺ID
shopList: [], // 店铺列表
}
},
mounted: function () {
this.getSelectList();
this.listRoleInfo();
// this.listOfShop();
// 绑定enter事件
this.enterKeyup();
},
methods: {
//切页处理
handlePage: function (value) {
this.pageNum = value;
this.listAccountInfoFunction();
},
//添加单个账户
addOneAccount() {
this.$router.push({
path: '/account/management/add',
});
},
//查询所有角色
listRoleInfo() {
let that = this;
that.roleList = [];
accountManagement.listRoleInfoApi({}, function (data) {
data = data.data;
if (data.code === '0001') {
that.$Message.error("查询角色失败!");
return;
}
if (data.code === '0000') {
data = data.results;
that.roleList.push({
id: "0",
name: "全部"
});
for (let i = 0; i < data.length; i++) {
let row = data[i];
that.roleList.push(row);
}
if (that.$route.query != null) {
that.item = that.$route.query;
//别的页面跳转过来
if (that.item.id === undefined) {
that.selectedRoleId = "0";
} else {
that.selectedRoleId = that.item.id;
}
} else {
that.selectedRoleId = "0";
}
that.listAccountInfoFunction();
}
})
},
//查询所有店铺
listOfShop() {
let that = this;
that.shopList = [];
let request = {
userId: this.userId
};
accountManagement.listAllShopApi(request, function (data) {
data = data.data;
that.loading = false;
if (data.code === '0001') {
that.$Message.error("查询店铺失败!");
return;
}
if (data.code === '0000') {
that.shopList.push({
id: '-1',
name: "全部"
});
that.selectedShopId = '-1';
data = data.results;
for (let i = 0; i < data.length; i++) {
let row = data[i];
that.shopList.push(row);
}
that.listAccountInfoFunction();
}
}, function () {
that.loading = false;
});
},
/**基础数据区域list、零售公司list、好友list*/
getSelectList: function () {
let that = this;
let request = {
userId: this.userId,
};
zeroExtend.getSelectListRequest(request, function (data) {
if (data.data.code !== "0000") {
that.$Message.error("系统异常");
}
data = data.data.results;
if (data) {
that.organizationalList = data;
that.companyList = that.organizationalList.filter(item => item.level === 2);
}
//插入全部选项
that.insertAllOption();
});
},
insertAllOption: function () {
if (this.companyList.length === 0 || this.companyList[0].id !== 0) {
this.companyList.splice(0, 0, {"id": 0, "name": "全部"});
}
if (this.shopList.length === 0 || this.shopList[0].id !== 0) {
this.shopList.splice(0, 0, {"id": 0, "name": "全部"});
}
},
//搜索账号内容
listAccountInfoFunction: function () {
this.loading = true;
let that = this;
let request = {
searchContent: that.searchContent,
pageNum: that.pageNum,
pageSize: that.pageSize,
roleId: that.selectedRoleId,
companyId: that.selectedCompanyId,
shopId: that.selectedShopId
};
accountManagement.listAccountInfoApi(request, function (data) {
that.loading = false;
that.data1 = [];
data = data.data;
if (data.code === '0001') {
that.$Message.error("系统繁忙!");
return
}
if (data.code === '0000') {
if (data) {
let row = data.results.list;
that.totalSize = data.results.total;
for (let i = 0; i < row.length; i++) {
let entity = row[i];
if (!entity.channel) {
entity.channel = '--';
}
if (!entity.account) {
entity.account = '--';
}
if (!entity.userName) {
entity.userName = '--';
}
if (!entity.roleName) {
entity.roleName = '--';
}
if (!entity.shopName) {
entity.shopName = '--';
}
that.data1.push(entity);
}
if (row === null || row.length === 0) {
that.totalSize = 0;
}
}
}
}, function () {
that.loading = false;
});
},
//删除账号
remove() {
let that = this;
let request = {
accountId: that.updateAccountId,
userId: that.updateUserId
};
accountManagement.removeAccountApi(request, function (data) {
if (data.data.code === '0001') {
that.$Message.info("删除失败");
return
}
if (data.data.code === '0000') {
that.$Message.info("删除成功");
that.pageNum = 1;
that.listAccountInfoFunction();
}
})
},
cancel() {
},
ok() {
this.modal13 = false;
this.remove();
},
enterKeyup() {
document.addEventListener("keyup", this.buttonOperation);
},
buttonOperation() {
const code = event.keyCode
? event.keyCode
: event.which
? event.which
: event.charCode;
if (code === 13) {
this.pageNum = 1;
this.listAccountInfoFunction();
} else if (code !== 13 && code === 1) {
this.pageNum = 1;
this.listAccountInfoFunction();
}
},
// 角色选择改变事件
onRoleChangeLister: function (value) {
let val = value;
},
//零售公司选择
companySelect: function (value) {
this.selectedCompanyId = value;
//加载店铺
this.downShopData(this.selectedCompanyId);
this.selectedStore = 0;
this.shopList = [];
},
// 店铺选择
downShopChange: function (value) {
let val = value;
let that = this;
this.selectedStore = val;
},
downShopData: function (selected) {
let that = this;
let companyId = selected;
if (!selected) {
companyId = that.companyId;
}
let customerIds = [];
this.customerList = [];
if (companyId === 0) {
//
that.selectedShopId = 0;
} else {
this.customerList = this.organizationalList.filter(item => item.parentId === companyId && item.level === 3);
this.insertAllOption();
}
customerIds = this.customerList.map(item => item.id);
let request = {userId: that.userId, customerIds: customerIds, companyId: companyId};
staff.downShopData(request, function (data) {
data = data.data.results;
if (data) {
that.shopList = [{"id": 0, "name": "全部"}];
for (let i = 0; i < data.length; i++) {
let entity = data[i];
if (entity) {
that.shopList.push(entity);
}
}
}
})
},
//零推广导出
exportData: function () {
this.loading = true;
let that = this;
let request = {
searchContent: that.searchContent,
pageNum: that.pageNum,
pageSize: that.totalSize,
roleId: that.selectedRoleId,
companyId: that.selectedCompanyId,
shopId: that.selectedShopId
};
accountManagement.listAccountInfoApi(request, function (data) {
that.loading = false;
data = data.data;
if (data.code === '0001') {
return
}
if (data.code === '0000') {
if (data) {
let row = data.results.list;
if (row && row.length > 0) {
let originAllData = [];
for (let i = 0; i < row.length; i++) {
let entity = row[i];
entity.index = i + 1;
originAllData.push(entity);
}
let title = "账号";
require.ensure([], () => {
const {export_json_to_excel} = require('../../excel/Export2Excel');
const tHeader = ['序号', '用户名', '别名', '账号', '手机号码', '角色', '零售公司', '零售公司编码', '店铺名称', '店铺编码'];
// 属性名
const filterVal = ['index', 'userName', 'abbreviation', 'account', 'mobil', 'roleName', 'companyName', 'companyCode', 'shopName', 'shopCode'];
// 数据
//把data里的tableData存到list
const data = that.formatJson(filterVal, originAllData);
export_json_to_excel(tHeader, data, title);
});
}
}
}
}, function () {
that.loading = false;
});
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
},
}
</script>
<style scoped>
.left-15 {
margin-left: 15px;
}
.div-page {
margin-top: 20px;
margin-left: 20px;
}
.search-row {
background-color: #F7F8FA;
line-height: 80px;
}
.search-btn {
margin-left: 30px;
}
.search-btn-add-row {
text-align: right;
padding-right: 20px;
}
.table-account {
margin-top: 30px;
}
</style>