Commit 0a7a88e8 authored by xd's avatar xd

后台管理系统完成

parent e0df22c6
......@@ -101,11 +101,11 @@ export function getHistoryList(data) {
}
// 添加子部门
export function addGroup(data) {
export function addGroup(params) {
return request({
url: '/admin/auth/addressbook/orgnization/save',
method: 'post',
params:data
params
})
}
......@@ -118,6 +118,7 @@ export function getHistoryList(data) {
})
}
// 获取企业微信部门
export function getAllPeopleList(params) {
return request({
url: '/admin/auth/addressbook/orgnization/getClerkByWXDeptId',
......@@ -125,10 +126,27 @@ export function getHistoryList(data) {
params
})
}
// 获取企业微信人员
export function getWxAllDeptList(params) {
return request({
url: '/admin/auth/addressbook/orgnization/getAllInWX',
method: 'get',
params
})
}
// 获取部门详情
export function getDeptDetail(params) {
return request({
url: '/admin/auth/addressbook/orgnization/getById',
method: 'get',
params
})
}
// 编辑部门
export function editDept(params) {
return request({
url: '/admin/auth/addressbook/orgnization/update',
method: 'put',
params
})
}
\ No newline at end of file
......@@ -17,16 +17,7 @@
/>
</el-form-item>
<el-form-item label="上级部门:" prop="parentId">
<!-- <div class="block">
<el-cascader
v-model="addForm.parentId"
placeholder="请选择上级部门"
:options="parentDeptList"
filterable
style="width: 50%;"
></el-cascader>
</div> -->
<el-cascader :props="props" :options="parentDeptList" filterable ></el-cascader>
<el-cascader v-model="addForm.parentId" :options="orgTree" :props="deptOption" :show-all-levels="false" clearable style="width: 50%;" @change="handleDpetChange"></el-cascader>
</el-form-item>
<el-form-item label="门店名称:" prop="oyStallName">
<el-input
......@@ -36,7 +27,13 @@
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="门店Id:" prop="oyStallCode">
<el-form-item label="是否设置详细信息:">
<el-radio-group v-model="detail" @change="handleDetailChange">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="门店Id:" prop="oyStallCode" v-if="detail == 1">
<el-input
size="small"
v-model="addForm.oyStallCode"
......@@ -44,7 +41,7 @@
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="门店会员id:" prop="oyStallMemberId">
<el-form-item label="门店会员id:" prop="oyStallMemberId" v-if="detail == 1">
<el-input
size="small"
v-model="addForm.oyStallMemberId"
......@@ -52,15 +49,16 @@
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="设置主管:" prop="supervisor">
<el-cascader
v-model="addForm.supervisor"
placeholder="请选择主管"
:options="options"
:props="{ multiple: true }"
filterable
style="width: 50%;">
</el-cascader>
<el-form-item label="设置主管:" prop="clerkId" v-if="detail == 1">
<el-cascader :props="props" v-model="deptId" :options="parentDeptList" :show-all-levels="false" filterable style="width: 30%;margin-right:15px;" @change="handleParentChange" ></el-cascader>
<el-select v-model="addForm.clerkId" filterable multiple placeholder="请选择" style="width: 30%;" clearble>
<el-option
v-for="item in peopleList"
:key="item.id"
:label="item.userName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -73,7 +71,7 @@
</template>
<script>
import { addGroup, getWxAllDeptList, getAllMemberList,getGroupById,getAllPeopleList } from "@/api/in/mail";
import { addGroup, getWxAllDeptList, getAllMemberList,getGroupById,getAllPeopleList,getOrgTree } from "@/api/in/mail";
import { log } from "util";
export default {
......@@ -112,11 +110,14 @@ export default {
oyStallName: '',
oyStallMemberId: '',
oyStallCode: '',
supervisor: []
clerkId: []
},
detail: 2,
deptId: '',
// 上级部门
parentDeptList: [],
peopleList: [],
orgTree: [],
rules: {
label: [
{ required: true, message: "请输入部门名称", trigger: "blur" },
......@@ -126,58 +127,103 @@ export default {
parentId: [{ required: true, message: "请选择上级部门", trigger: "change" }]
},
props: {
deptOption: {
value: 'id',
children: 'children',
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level } = node;
setTimeout(() => {
const nodes = Array.from({ length: level + 1 })
const nodes = Array.from(level)
.map(item => ({
value: level.id,
label: level.label,
leaf: level >= 2
}));
}))
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
},
props: {
value: 'id',
children: 'children',
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level } = node;
setTimeout(() => {
const nodes = Array.from(level)
.map(item => ({
value: level.id,
label: level.label,
leaf: level >= 2
}))
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
}
}
},
created() {
this.getList();
this. getGroupMember()
this.getOrgTree()
},
methods: {
getList() {
handleDpetChange(val) {
console.log(val,'val')
},
getOrgTree() {
getOrgTree().then(res => {
this.orgTree = [res.data.organizations]
});
},
handleDetailChange(val) {
this.deptId = ''
this.addForm.clerkId = []
this.peopleList = []
if(val == 1) {
this.getDeptList()
}
},
handleParentChange(val) {
this.addForm.clerkId = []
if(this.detail == 1) {
this.getGroupMember(val)
}
},
getDeptList() {
getWxAllDeptList()
.then(res => {
console.log(res,'全部部门')
this.parentDeptList = res.data
})
.catch(err => {
console.log(err);
console.log(err)
});
},
handleAddCancel() {
this.$emit("handleAddCancel");
this.$emit("handleAddCancel")
},
handleAddFinish() {
addGroup(this.params).then(res => {
// console.log(res)
});
const clerkIds = this.addForm.clerkId+""
let data = Object.assign(this.addForm,{ clerkIds })
delete data.clerkId
addGroup(data).then(res => {
console.log(res)
})
// console.log(addGroup)
this.$emit("handleAddFinish");
this.$emit("handleAddFinish")
},
// 获取所有人员
getGroupMember() {
let id = ''
getGroupMember(id) {
getAllPeopleList({ id }).then(res => {
console.log(res,'人员')
this.peopleList = res.data
});
})
},
/* handleNodeClick(item, node, self) {
// console.log(item,node,self)
......
<template>
<div class="ct">
<el-dialog
title="创建子部门"
:visible.sync="editDialog"
width="58%"
:show-close="false"
:close-on-click-modal="false"
>
<el-form :model="addForm" label-width="auto" ref="addStore" :rules="rules" >
<el-form-item label="部门名称:" prop="label">
<el-input
size="small"
v-model="addForm.label"
placeholder="请输入部门名称"
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="上级部门:" prop="parentId">
<el-cascader v-model="addForm.parentId" :options="orgTree" :props="deptOption" :show-all-levels="false" clearable style="width: 50%;" @change="handleDpetChange"></el-cascader>
</el-form-item>
<el-form-item label="门店名称:" prop="oyStallName">
<el-input
size="small"
v-model="addForm.oyStallName"
placeholder="请输入门店名称"
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="是否设置详细信息:">
<el-radio-group v-model="detail" @change="handleDetailChange">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="门店Id:" prop="oyStallCode" v-if="detail == 1">
<el-input
size="small"
v-model="addForm.oyStallCode"
placeholder="请输入门店Id"
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="门店会员id:" prop="oyStallMemberId" v-if="detail == 1">
<el-input
size="small"
v-model="addForm.oyStallMemberId"
placeholder="门店会员id:"
style="width: 50%;"
/>
</el-form-item>
<el-form-item label="设置主管:" prop="clerkId" v-if="detail == 1">
<el-cascader :props="props" v-model="deptId" :options="parentDeptList" :show-all-levels="false" filterable style="width: 30%;margin-right:15px;" @change="handleParentChange" ></el-cascader>
<el-select v-model="addForm.clerkId" filterable multiple placeholder="请选择" style="width: 30%;" clearble>
<el-option
v-for="item in peopleList"
:key="item.id"
:label="item.userName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleEditCancel" size="small">取 消</el-button>
<el-button type="primary" @click="handleEditFinish" size="small">确 定</el-button>
</span>
</el-dialog>
<div></div>
</div>
</template>
<script>
import { editDept, getWxAllDeptList, getAllMemberList,getGroupById,getAllPeopleList,getOrgTree,getDeptDetail } from "@/api/in/mail";
import { log } from "util";
export default {
props: {
editDialog: {
type: Boolean,
default: false
},
groupId: {
type: String,
default: ''
}
},
data() {
// 中英文验证规则
const nameValidate = (rule, value, callback) => {
let reg = /^[a-zA-Z\u4e00-\u9fa5]+$/
if (!reg.test(value)) {
callback(new Error("含有非法字符(只能输入字母、汉字)!"))
} else {
callback()
}
}
return {
treeData: [],
group_name: "",
shop_code: "",
showTree: false,
params: {
d_name: "",
d_parentId: "",
code: ""
},
checked: false,
////
addForm: {
label: '',
parentId: '',
oyStallName: '',
oyStallMemberId: '',
oyStallCode: '',
clerkId: []
},
detail: 2,
deptId: '',
// 上级部门
parentDeptList: [],
peopleList: [],
orgTree: [],
rules: {
label: [
{ required: true, message: "请输入部门名称", trigger: "blur" },
{ validator: nameValidate, trigger: "blur" },
{ max: 50, message: "长度在50个字符以内", trigger: "blur" }
],
parentId: [{ required: true, message: "请选择上级部门", trigger: "change" }]
},
deptOption: {
value: 'id',
children: 'children',
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level } = node;
setTimeout(() => {
const nodes = Array.from(level)
.map(item => ({
value: level.id,
label: level.label,
leaf: level >= 2
}))
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
},
props: {
value: 'id',
children: 'children',
lazy: true,
emitPath: false,
checkStrictly: true,
lazyLoad (node, resolve) {
const { level } = node;
setTimeout(() => {
const nodes = Array.from(level)
.map(item => ({
value: level.id,
label: level.label,
leaf: level >= 2
}))
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
}
}
},
created() {
this.getOrgTree()
this.getDetail()
},
methods: {
getDetail() {
getDeptDetail({id:this.groupId}).then(res=> {
console.log(res,"详情")
this.addForm.clerkId = clerkId
this.addForm = res.data.organization
if(this.addForm.oyStallCode !== '' || this.addForm.oyStallMemberId !== '' || this.addForm.clerkId !== []) {
this.detail = 1
}
const clerkId = []
const deptId = ''
this.deptId = res.data.supervisors[0].departmentId
res.data.supervisors.forEach(item => {
clerkId.push(item.id)
})
this.$set(this.addForm,'clerkId',clerkId)
this.addForm.clerkId = clerkId
this.getDeptList()
this.getGroupMember(this.deptId)
})
},
handleDpetChange(val) {
console.log(val,'val')
},
getOrgTree() {
getOrgTree().then(res => {
this.orgTree = [res.data.organizations]
});
},
handleDetailChange(val) {
this.deptId = ''
this.addForm.clerkId = []
this.peopleList = []
if(val == 1) {
this.getDeptList()
}
},
handleParentChange(val) {
this.addForm.clerkId = []
if(this.detail == 1) {
this.getGroupMember(val)
}
},
getDeptList() {
getWxAllDeptList()
.then(res => {
console.log(res,'全部部门')
this.parentDeptList = res.data
})
.catch(err => {
console.log(err)
});
},
handleEditCancel() {
this.$emit("handleEditCancel")
},
handleEditFinish() {
const clerkIds = this.addForm.clerkId+""
let data = Object.assign(this.addForm,{ clerkIds })
delete data.clerkId
editDept(data).then(res => {
console.log(res)
})
this.$emit("handleEditFinish")
},
// 获取所有人员
getGroupMember(id) {
getAllPeopleList({ id }).then(res => {
console.log(res,'人员')
this.peopleList = res.data
})
},
/* handleNodeClick(item, node, self) {
// console.log(item,node,self)
this.params.d_parentId = item.id;
this.paramsForShow.father_name = item.label;
},
checkChange(item, node, self) {},
showTreeData() {
this.showTree = !this.showTree;
},
*/
}
};
</script>
<style scoped>
.tree >>> .is-leaf + .el-checkbox .el-checkbox__inner {
display: inline-block;
}
.tree >>> .el-checkbox .el-checkbox__inner {
display: none;
}
.choose {
padding: 16px;
font-size: 16px;
font-weight: bold;
color: rgba(56, 56, 56, 1);
box-sizing: border-box;
}
.title {
display: flex;
align-items: center;
justify-content: space-between;
/* border-bottom: 1px solid #f8f8f8; */
padding-bottom: 10px;
}
.transfer-footer {
margin-left: 20px;
padding: 6px 5px;
}
.ct >>> .el-dialog__header {
border-bottom: 1px solid #f8f8f8;
}
.ct >>> .el-dialog__body {
padding: 20px 40px;
}
.ct >>> .el-transfer-panel {
width: 250px;
}
.circle {
width: 30px;
height: 30px;
line-height: 30px;
border-radius: 50%;
border: 1px solid rgba(208, 2, 27, 1);
position: relative;
}
.circle >>> .icon {
width: 28px;
height: 28px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.br {
border-top: 1px solid #f8f8f8;
border-bottom: 1px solid #f8f8f8;
padding: 24px 0;
}
.config_item {
display: flex;
flex-direction: row;
align-items: center;
}
.config_name:before {
content: "* ";
color: red;
}
.config_name {
width: 80px;
text-align: center;
margin-right: 10px;
}
.config_value {
width: 230px;
}
.father_group {
margin: 10px 0;
width: 228px;
height: 38px;
border-radius: 4px;
border: 1px solid #dcdfe6;
position: relative;
}
.arrow_down {
width: 0;
height: 0;
border-width: 5px;
border-style: solid;
border-color: #ccc transparent transparent transparent;
position: absolute;
right: 10px;
top: 20px;
}
.arrow_up {
width: 0;
height: 0;
border-width: 5px;
border-style: solid;
border-color: transparent transparent #ccc transparent;
position: absolute;
right: 10px;
top: 15px;
}
.tree_data {
margin-left: 90px;
}
.father_name_text {
line-height: 38px;
padding-left: 15px;
}
.tips {
width: 100%;
text-align: center;
color: red;
margin: 5px 0;
}
</style>
......@@ -37,7 +37,7 @@
<div class="line lines">
<div >
<el-button class="button button_group" size="small" @click="addChild">添加子部门</el-button>
<el-button class="button button_group" size="small" @click="addChild">编辑部门</el-button>
<el-button class="button button_group" size="small" @click="editChild">编辑部门</el-button>
<el-button class="button buttondark" :disabled="groupId ? false : true" size="small" @click="deleteChild">删除部门</el-button
>
</div>
......@@ -111,6 +111,14 @@
@handleAddCancel="addDialogShow = false"
@handleAddFinish="addFinish"
></add-dialog>
<edit-dialog
v-if="editDialogShow"
:groupId="groupId"
:editDialog="editDialogShow"
@handleEditCancel="editDialogShow = false"
@handleEditFinish="editFinish"
></edit-dialog>
<delete-dialog
v-if="deleteDialogShow"
:daleteDialog="deleteDialogShow"
......@@ -124,6 +132,7 @@
<script>
import MoveDialog from "./components/move";
import AddDialog from "./components/addGroup";
import EditDialog from "./components/editGroup";
import DeleteDialog from "./components/deleteGroup";
import {
getOrgTree,
......@@ -154,6 +163,7 @@ export default {
},
moveDialogShow: false,
addDialogShow: false,
editDialogShow: false,
deleteDialogShow: false,
counterDialog: false,
storeDialog: false,
......@@ -179,7 +189,8 @@ export default {
components: {
MoveDialog,
AddDialog,
DeleteDialog
DeleteDialog,
EditDialog
},
created() {
this.getOrgTree();
......@@ -250,7 +261,7 @@ export default {
getMailList(page,ctPage) {
this.groupName = ''
this.formData.keywords = ''
this.title = "全部"
this.groupName = "全部"
this.type = this.sType = 1;
this.page.currentPage = ctPage
this.groupId = ''
......@@ -267,7 +278,7 @@ export default {
this.groupName = ''
this.formData.keywords = ''
this.page.currentPage = ctPage
this.title = "未分组"
this.groupName = "未分组"
this.type = this.sType = 2;
this.groupId = ''
let params = {
......@@ -355,11 +366,19 @@ export default {
addChild() {
this.addDialogShow = true
},
editChild() {
this.editDialogShow = true
},
addFinish() {
this.addDialogShow = false
this.getOrgTree();
this.getMailList(1,1);
},
editFinish() {
this.editDialogShow = false
this.getOrgTree()
this.getMailList(1,1)
},
deleteChild() {
this.deleteDialogShow = true
},
......
......@@ -3,7 +3,7 @@ import qs from 'qs'
export function getUserInfoByUserId(params) {
return requestCF({
url: '/admin/auth/addressbook/clerk/getByUserIdOrUserName',
url: '/admin/auth/addressbook/clerk/getStallCodeByClerkId',
method: 'get',
params
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment