From 72f14ac421734761836416640985d83ddf7a9c12 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期四, 13 七月 2023 18:50:16 +0800
Subject: [PATCH] 成员管理&角色权限页面
---
src/views/backgroundConfig/memberManage/AddMemberManageDialog.vue | 435 ++++++++++++++++++++++
src/components/makepager/TableCommonView.vue | 2
src/views/backgroundConfig/memberManage/index.vue | 127 +++++-
src/views/backgroundConfig/rolePermssion/index.vue | 10
src/views/backgroundConfig/memberManage/TreeLeft.vue | 146 +++++++
src/views/backgroundConfig/memberManage/EditDepartmentDialog.vue | 103 +++++
src/views/backgroundConfig/rolePermssion/AddRolePermssionDialog.vue | 316 ++++++++++++++++
7 files changed, 1,110 insertions(+), 29 deletions(-)
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index 5583db0..af881ec 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -23,7 +23,7 @@
:width="item.width"
:min-width="item.min"
show-overflow-tooltip
- sortable
+ :sortable="item.sortable"
>
<template slot-scope="scope">
<span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
diff --git a/src/views/backgroundConfig/memberManage/AddMemberManageDialog.vue b/src/views/backgroundConfig/memberManage/AddMemberManageDialog.vue
new file mode 100644
index 0000000..c302762
--- /dev/null
+++ b/src/views/backgroundConfig/memberManage/AddMemberManageDialog.vue
@@ -0,0 +1,435 @@
+<template>
+ <div class="add-member-manage">
+ <el-dialog
+ :title="editCommonConfig.title + '鎴愬憳绠$悊'"
+ :visible.sync="editConfig.visible"
+ :width="dialogWidth"
+ :before-close="handleClose"
+ >
+ <el-form
+ ref="form"
+ :model="editConfig.infomation"
+ :rules="rules"
+ label-position="right"
+ label-width="308px"
+ size="mini"
+ style="height: 70vh; overflow-x: hidden"
+ >
+ <!-- 淇℃伅 -->
+ <div class="basic-info">
+ <!-- 鎴愬憳淇℃伅 -->
+ <div class="basic-info-title">鎴愬憳淇℃伅</div>
+ <div class="basic-info-view">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璐﹀彿" prop="account">
+ <el-input v-model="editConfig.infomation.account"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄惁绠$悊鍛�" prop="isAdmin">
+ <el-switch v-model="editConfig.infomation.isAdmin" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="瀵嗙爜" prop="password">
+ <el-input v-model="editConfig.infomation.password"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀵嗙爜纭" prop="passwordConfirm">
+ <el-input v-model="editConfig.infomation.passwordConfirm"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="濮撳悕" prop="name">
+ <el-input v-model="editConfig.infomation.name"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐪熷疄濮撳悕" prop="realName">
+ <el-input v-model="editConfig.infomation.realName"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閮ㄩ棬" prop="department">
+ <div class="custom-name">
+ <el-input v-model="editConfig.infomation.department"></el-input>
+ <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
+ <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
+ </div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐘舵��" prop="state">
+ <el-select v-model="editConfig.infomation.state" placeholder="璇烽�夋嫨" size="mini">
+ <el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎵嬫満" prop="phone">
+ <el-input v-model="editConfig.infomation.phone"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢佃瘽" prop="telephone">
+ <el-input v-model="editConfig.infomation.telephone"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="Email" prop="email">
+ <el-input v-model="editConfig.infomation.email"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浼佷笟寰俊閫氳褰曡处鍙�" prop="wechat">
+ <el-input v-model="editConfig.infomation.wechat"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀹℃壒濮旀墭" prop="approvalDelegation">
+ <el-select v-model="editConfig.infomation.approvalDelegation" placeholder="璇烽�夋嫨" size="mini">
+ <el-option
+ v-for="item in approvalDelegationOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="灏忕▼搴忛�氳璐﹀彿" prop="miniProgram">
+ <el-input v-model="editConfig.infomation.miniProgram"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閽夐拤閫氳褰曚俊鍑芥垨" prop="dingtalk">
+ <el-input v-model="editConfig.infomation.dingtalk"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀹℃壒濮旀墭浜�" prop="approvalPrincipal">
+ <div class="custom-name">
+ <el-input v-model="editConfig.infomation.approvalPrincipal"></el-input>
+ <div class="common-select-btn">
+ <i class="el-icon-circle-plus-outline"></i>
+ </div>
+ </div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鑱屼綅绾у埆" prop="positionLevel">
+ <CommonSelectView
+ :common-value="editConfig.infomation.positionLevel"
+ :common-options="positionLevelOptions"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞" prop="notes">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 2, maxRows: 4 }"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="editConfig.infomation.notes"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍏ヨ亴鏃ユ湡" prop="employeeDate">
+ <el-date-picker v-model="editConfig.infomation.employeeDate" type="date" placeholder="閫夋嫨鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓汉澶村儚" prop="avatar">
+ <el-button type="text"><i class="el-icon-paperclip"></i>娣诲姞</el-button>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜戜箣瀹堕�氳璐﹀彿" prop="cloudHome">
+ <el-input v-model="editConfig.infomation.cloudHome"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="娴嬪畾" prop="determine">
+ <el-input v-model="editConfig.infomation.determine"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <!-- 瑙掕壊涓庢潈闄� -->
+ <div class="basic-info-title">瑙掕壊涓庢潈闄�</div>
+ <div class="address-view">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="瑙掕壊鏉冮檺" prop="rolePermssion">
+ <el-select v-model="editConfig.infomation.rolePermssion" placeholder="璇烽�夋嫨" size="mini">
+ <el-option
+ v-for="item in rolePermssionOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓氬姟鏁版嵁鑼冨洿" prop="dataScope">
+ <el-button type="text">鏁版嵁鑼冨洿璁剧疆</el-button>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item prop="role1">
+ <template slot="label">
+ <div style="display: flex; float: right">
+ <div style="font-size: 16px"><i class="el-icon-question"></i></div>
+ <span style="margin-left: 5px">缂栬緫鍏朵粬鎴愬憳鍗曟嵁鎵嬫満</span>
+ </div>
+ </template>
+ <el-switch v-model="editConfig.infomation.role1" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="缂栬緫鑷繁鍗曟嵁鎵嬫満" prop="role2">
+ <el-switch v-model="editConfig.infomation.role2" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎵嬫満鍙风爜鏄剧ず鏍峰紡鎺у埗" prop="role3">
+ <el-switch v-model="editConfig.infomation.role3" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄剧ず鍚堝悓鏈嶅姟淇℃伅" prop="role4">
+ <el-switch v-model="editConfig.infomation.role4" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄剧ず鍏蜂綋鏈嶅姟鍒版湡鏃�" prop="role5">
+ <el-switch v-model="editConfig.infomation.role5" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄剧ず瀹㈡埛鏈嶅姟鍗曞巻鍙茶褰�" prop="role6">
+ <el-switch v-model="editConfig.infomation.role6" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍗曟嵁鐩稿叧淇℃伅鏌ヨ鎵�鏈夊叧鑱旀暟鎹�" prop="role7">
+ <el-switch v-model="editConfig.infomation.role7" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="甯傚満娲诲姩鐩稿叧淇℃伅鏌ヨ鎵�鏈夋暟鎹�" prop="role8">
+ <el-switch v-model="editConfig.infomation.role8" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <!-- 鍏朵粬璁剧疆 -->
+ <div class="basic-info-title">鍏朵粬璁剧疆</div>
+ <div class="basic-info-view">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鐧诲綍鏃跺惎鐢ㄦ墜鏈虹煭淇¢獙璇�" prop="other1">
+ <el-switch v-model="editConfig.infomation.other1" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ 闇�璐拱骞惰缃煭淇¤处鎴�
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄惁鍏佽鎺ㄩ�佺Щ鍔ㄧ鎻愰啋" prop="other2">
+ <el-switch v-model="editConfig.infomation.other2" active-color="#2E68DB" inactive-color="#AEB9CA">
+ </el-switch>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <!-- 闄勪欢淇℃伅 -->
+ <div class="basic-info-title">闄勪欢淇℃伅</div>
+ <div class="basic-info-view">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="闄勪欢" prop="">
+ <template slot="label">
+ <div style="display: flex; float: right">
+ <div style="font-size: 16px">
+ <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+ </div>
+ <span style="margin-left: 5px">闄勪欢</span>
+ </div>
+ </template>
+ <div class="annex-view">
+ <div @click="addAnnexClick">
+ <div style="display: flex; float: right">
+ <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+ <span>娣诲姞</span>
+ </div>
+ </div>
+ <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" size="small" @click="editConfig.visible = false">淇� 瀛�</el-button>
+ <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import CommonSelectView from "@/components/makepager/CommonSelectView"
+export default {
+ name: "AddMemberManageDialog",
+ props: {
+ editCommonConfig: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ title: "鏂板缓",
+ infomation: {
+ account: "",
+ isAdmin: "",
+ password: "",
+ passwordConfirm: "",
+ name: "",
+ realName: "",
+ department: "",
+ state: "",
+ phone: "",
+ telephone: "",
+ email: "",
+ wechat: "",
+ approvalDelegation: "",
+ miniProgram: "",
+ dingtalk: "",
+ approvalPrincipal: "",
+ positionLevel: "",
+ notes: "",
+ employeeDate: "",
+ avatar: "",
+ cloudHome: "",
+ determine: "",
+ rolePermssion: "",
+ dataScope: "",
+ role1: "",
+ role2: "",
+ role3: "",
+ role4: "",
+ role5: "",
+ role6: "",
+ role7: "",
+ role8: "",
+ other1: "",
+ other2: ""
+ }
+ }
+ }
+ }
+ },
+ components: { CommonSelectView },
+ computed: {},
+ data() {
+ return {
+ dialogWidth: "80%",
+ editConfig: this.editCommonConfig,
+ rules: {
+ account: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ password: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ passwordConfirm: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ name: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ department: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ rolePermssion: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+ },
+ stateOptions: [], // 鐘舵��
+ rolePermssionOptions: [], // 瑙掕壊鏉冮檺
+ positionLevelOptions: [], // 鑱屼綅绾у埆
+ approvalDelegationOptions: [] // 瀹℃壒濮旀墭
+ }
+ },
+ created() {},
+ methods: {
+ handleClose() {
+ this.editConfig.visible = false
+ },
+ // 娣诲姞闄勪欢
+ addAnnexClick() {},
+ // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+ setFormatClick() {}
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-member-manage {
+ .basic-info {
+ .basic-info-title {
+ background-color: #f4f8fe;
+ padding-left: 10px;
+ font-size: 15px;
+ font-weight: bold;
+ color: #666;
+ height: 42px;
+ line-height: 42px;
+ }
+ .basic-info-view {
+ margin-top: 10px;
+ padding-right: 40px;
+ .custom-name {
+ display: flex;
+ .common-select-btn {
+ margin-left: 5px;
+ font-size: 16px;
+ }
+ }
+ }
+ .address-view {
+ margin-top: 10px;
+ padding-right: 40px;
+ }
+ .annex-view {
+ display: flex;
+ color: #6166d3;
+ .setFormat {
+ margin-left: 10px;
+ }
+ }
+ }
+ .unflod-collapse {
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ align-items: center;
+ color: #6166d3;
+ }
+ .dialog-footer {
+ background-color: #f5f5f5;
+ height: 55px;
+ line-height: 55px;
+ }
+}
+</style>
diff --git a/src/views/backgroundConfig/memberManage/EditDepartmentDialog.vue b/src/views/backgroundConfig/memberManage/EditDepartmentDialog.vue
new file mode 100644
index 0000000..1b1eab2
--- /dev/null
+++ b/src/views/backgroundConfig/memberManage/EditDepartmentDialog.vue
@@ -0,0 +1,103 @@
+<template>
+ <div class="edit-department">
+ <el-dialog
+ :title="editDepartmentConfig.title"
+ :visible.sync="editConfig.visible"
+ :width="dialogWidth"
+ :before-close="handleClose"
+ >
+ <el-form ref="form" :model="editConfig.infomation" :rules="rules" label-width="100px" size="mini">
+ <!-- 淇℃伅 -->
+ <div class="basic-info">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="閮ㄩ棬鍚嶇О" prop="departmentName">
+ <el-input v-model="editConfig.infomation.departmentName"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="閮ㄩ棬缂栧彿" prop="departmentNumber">
+ <el-input v-model="editConfig.infomation.departmentNumber"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞" prop="notes">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 1, maxRows: 4 }"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="editConfig.infomation.notes"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" size="small" @click="editConfig.visible = false">淇� 瀛�</el-button>
+ <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "EditDepartmentDialog",
+ props: {
+ editDepartmentConfig: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ title: "鏂板缓",
+ infomation: {
+ departmentName: "",
+ departmentNumber: "",
+ notes: ""
+ }
+ }
+ }
+ }
+ },
+ components: {},
+ computed: {},
+ data() {
+ return {
+ dialogWidth: "40%",
+ editConfig: this.editDepartmentConfig,
+ rules: {
+ departmentName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ departmentNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }]
+ }
+ }
+ },
+ created() {
+ this.isActive = true
+ },
+ methods: {
+ handleClose() {
+ this.editConfig.visible = false
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.edit-department {
+ .basic-info {
+ padding: 20px;
+ }
+ .dialog-footer {
+ background-color: #f5f5f5;
+ height: 55px;
+ line-height: 55px;
+ }
+}
+::v-deep {
+ .el-dialog__wrapper {
+ margin-top: 20vh;
+ }
+}
+</style>
diff --git a/src/views/backgroundConfig/memberManage/TreeLeft.vue b/src/views/backgroundConfig/memberManage/TreeLeft.vue
new file mode 100644
index 0000000..1828f3e
--- /dev/null
+++ b/src/views/backgroundConfig/memberManage/TreeLeft.vue
@@ -0,0 +1,146 @@
+<template>
+ <div class="tree-left">
+ <el-tree :data="data" ref="tree" default-expand-all node-key="id" :expand-on-click-node="false">
+ <span
+ class="custom-tree-node"
+ slot-scope="{ node, data }"
+ @mouseenter="mouseenter(data)"
+ @mouseleave="mouseleave(data)"
+ >
+ <span>{{ node.label }}</span>
+ <span>
+ <el-dropdown
+ v-show="data.show"
+ @command="
+ (command) => {
+ handleCommand(command, data)
+ }
+ "
+ >
+ <span class="el-dropdown-link">
+ <i class="el-icon-more icon"></i>
+ </span>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item command="edit">缂栬緫閮ㄩ棬</el-dropdown-item>
+ <el-dropdown-item command="add">鏂板瀛愰儴闂�</el-dropdown-item>
+ <el-dropdown-item v-if="data.id !== 1" command="delete">鍒犻櫎閮ㄩ棬</el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
+ </span>
+ </span>
+ </el-tree>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "TreeLeft",
+ props: {},
+ components: {},
+ computed: {},
+ data() {
+ const data = [
+ {
+ id: 1,
+ label: "涓婃捣鐏靛綋淇℃伅绉戞妧鏈夐檺鍏徃",
+ children: [
+ {
+ id: 11,
+ label: "閿�鍞儴",
+ children: [
+ {
+ id: 111,
+ label: "Mia"
+ },
+ {
+ id: 112,
+ label: "绯荤粺绠$悊鍛�"
+ },
+ {
+ id: 113,
+ label: "閿�鍞�"
+ },
+ {
+ id: 114,
+ label: "閿�鍞�荤洃"
+ },
+ {
+ id: 115,
+ label: "閿�鍞竴閮�",
+ children: []
+ },
+ {
+ id: 116,
+ label: "閿�鍞簩閮�",
+ children: []
+ }
+ ]
+ },
+ {
+ id: 21,
+ label: "绠$悊灞�",
+ children: [
+ {
+ id: 211,
+ label: "BOSS"
+ },
+ {
+ id: 212,
+ label: "绯荤粺绠$悊鍛�"
+ }
+ ]
+ },
+ {
+ id: 31,
+ label: "璐㈠姟閮�",
+ children: []
+ },
+ {
+ id: 41,
+ label: "甯傚満閮�",
+ children: []
+ }
+ ]
+ }
+ ]
+ return {
+ defaultProps: {
+ children: "children",
+ label: "label"
+ },
+ data: JSON.parse(JSON.stringify(data))
+ }
+ },
+ created() {},
+ methods: {
+ mouseenter(data) {
+ this.$set(data, "show", true)
+ },
+ mouseleave(data) {
+ this.$set(data, "show", false)
+ },
+ handleCommand(command, data) {
+ this.$emit("editDepartmentClick", command, data)
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.tree-left {
+ padding: 20px 10px;
+ .custom-tree-node {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 14px;
+ padding-right: 10px;
+ height: 100%;
+ .icon {
+ transform: rotate(90deg);
+ }
+ }
+}
+</style>
diff --git a/src/views/backgroundConfig/memberManage/index.vue b/src/views/backgroundConfig/memberManage/index.vue
index 676c6cf..89f997d 100644
--- a/src/views/backgroundConfig/memberManage/index.vue
+++ b/src/views/backgroundConfig/memberManage/index.vue
@@ -1,6 +1,8 @@
<template>
<div class="memeber-manage">
- <div class="left"></div>
+ <div class="left">
+ <TreeLeft @editDepartmentClick="editDepartmentClick" />
+ </div>
<div class="right">
<SearchCommonView
ref="searchCommonView"
@@ -38,18 +40,24 @@
</div>
<!-- 鏂板缓/缂栬緫 -->
- <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
+ <AddMemberManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
+ <!-- 缂栬緫閮ㄩ棬 -->
+ <EditDepartmentDialog v-if="departmentConfig.visible" :edit-department-config="departmentConfig" />
</div>
</template>
<script>
-import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
+import AddMemberManageDialog from "@/views/backgroundConfig/memberManage/AddMemberManageDialog"
+import TreeLeft from "@/views/backgroundConfig/memberManage/TreeLeft"
+import EditDepartmentDialog from "@/views/backgroundConfig/memberManage/EditDepartmentDialog"
export default {
name: "MemberManage",
props: {},
components: {
- AddContractManageDialog
+ AddMemberManageDialog,
+ TreeLeft,
+ EditDepartmentDialog
},
computed: {
searchCommonHeight() {
@@ -82,6 +90,11 @@
visible: false,
title: "鏂板缓",
infomation: {}
+ },
+ departmentConfig: {
+ visible: false,
+ title: "缂栬緫閮ㄩ棬",
+ infomation: {}
}
}
},
@@ -106,7 +119,7 @@
}
],
tableColumn: [
- { label: "濮撳悕", prop: "name", min: 120 },
+ { label: "濮撳悕", prop: "name", sortable: true, min: 120 },
{ label: "璐﹀彿", prop: "account", min: 90 },
{ label: "閮ㄩ棬", prop: "department" },
{ label: "瑙掕壊鏉冮檺", prop: "rolePermssion", min: 100 },
@@ -127,15 +140,40 @@
this.editConfig.visible = true
this.editConfig.title = "鏂板缓"
this.editConfig.infomation = {
- customName: "",
- documentNumber: "ZDYBD01-3",
- owner: "",
- contractStatus: "",
- salesQuotation: "",
- approvalWorkflow: "",
- approvalSteps: "",
- approvalPerson: "",
- approvalOpinion: ""
+ account: "",
+ isAdmin: "",
+ password: "",
+ passwordConfirm: "",
+ name: "",
+ realName: "",
+ department: "",
+ state: "",
+ phone: "",
+ telephone: "",
+ email: "",
+ wechat: "",
+ approvalDelegation: "",
+ miniProgram: "",
+ dingtalk: "",
+ approvalPrincipal: "",
+ positionLevel: "",
+ notes: "",
+ employeeDate: "",
+ avatar: "",
+ cloudHome: "",
+ determine: "",
+ rolePermssion: "",
+ dataScope: "",
+ role1: "",
+ role2: "",
+ role3: "",
+ role4: "",
+ role5: "",
+ role6: "",
+ role7: "",
+ role8: "",
+ other1: "",
+ other2: ""
}
},
// 缂栬緫
@@ -144,15 +182,40 @@
this.editConfig.visible = true
this.editConfig.title = "缂栬緫"
this.editConfig.infomation = {
- customName: "",
- documentNumber: "TKD20230521-12",
- owner: "",
- contractStatus: "",
- salesQuotation: "",
- approvalWorkflow: "",
- approvalSteps: "",
- approvalPerson: "",
- approvalOpinion: ""
+ account: "",
+ isAdmin: "",
+ password: "",
+ passwordConfirm: "",
+ name: "",
+ realName: "",
+ department: "",
+ state: "",
+ phone: "",
+ telephone: "",
+ email: "",
+ wechat: "",
+ approvalDelegation: "",
+ miniProgram: "",
+ dingtalk: "",
+ approvalPrincipal: "",
+ positionLevel: "",
+ notes: "",
+ employeeDate: "",
+ avatar: "",
+ cloudHome: "",
+ determine: "",
+ rolePermssion: "",
+ dataScope: "",
+ role1: "",
+ role2: "",
+ role3: "",
+ role4: "",
+ role5: "",
+ role6: "",
+ role7: "",
+ role8: "",
+ other1: "",
+ other2: ""
}
},
// 鍚敤
@@ -170,6 +233,24 @@
// 鍒犻櫎
deleteClick(row) {
console.log(row)
+ },
+ // 缂栬緫閮ㄩ棬
+ editDepartmentClick(command, data) {
+ console.log(command, data)
+ this.departmentConfig.visible = true
+ if (command === "edit") {
+ this.departmentConfig.infomation = {
+ departmentName: data.label,
+ departmentNumber: data.id,
+ notes: ""
+ }
+ } else if (command === "add") {
+ this.departmentConfig.infomation = {
+ departmentName: "",
+ departmentNumber: "",
+ notes: ""
+ }
+ }
}
}
}
diff --git a/src/views/backgroundConfig/rolePermssion/AddRolePermssionDialog.vue b/src/views/backgroundConfig/rolePermssion/AddRolePermssionDialog.vue
new file mode 100644
index 0000000..c0e7418
--- /dev/null
+++ b/src/views/backgroundConfig/rolePermssion/AddRolePermssionDialog.vue
@@ -0,0 +1,316 @@
+<template>
+ <div class="add-role-permission">
+ <el-dialog
+ :title="editCommonConfig.title"
+ :visible.sync="editConfig.visible"
+ :width="dialogWidth"
+ :before-close="handleClose"
+ >
+ <el-form
+ ref="form"
+ :model="editConfig.infomation"
+ :rules="rules"
+ label-position="right"
+ label-width="200px"
+ size="mini"
+ >
+ <!-- 淇℃伅 -->
+ <div class="basic-info">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div class="basic-info-title">鍩烘湰淇℃伅</div>
+ <div class="basic-info-view">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏉冮檺鍚嶇О" prop="owner">
+ <el-input v-model="editConfig.infomation.owner"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="澶囨敞" prop="notes">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 1, maxRows: 4 }"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="editConfig.infomation.notes"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </div>
+ <!-- 妯″潡閫夋嫨 -->
+ <div class="module-select">
+ <el-button type="text" @click="moduleSelectClick('all')" :class="isActive ? 'selBtn' : ''">鍏ㄩ儴</el-button>
+ <el-button type="text" @click="moduleSelectClick('custom')">瀹㈡埛绠$悊</el-button>
+ <el-button type="text" @click="moduleSelectClick('sales')">閿�鍞鐞�</el-button>
+ <el-button type="text" @click="moduleSelectClick('service')">鏈嶅姟绠$悊</el-button>
+ <el-button type="text" @click="moduleSelectClick('background')">鍚庡彴璁剧疆</el-button>
+ <div class="title">{{ moduleSelTitle }}</div>
+ </div>
+ </div>
+ <div>
+ <el-table :show-header="false" :data="tableData" border style="width: 100%">
+ <el-table-column prop="date" label="" width="180">
+ <template slot-scope="scope">
+ <el-checkbox v-model="scope.row.checked" @change="selAllChange(scope.row)">{{
+ scope.row.name
+ }}</el-checkbox>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="">
+ <template slot-scope="scope">
+ <el-checkbox-group
+ v-model="scope.row.checkedList"
+ @change="
+ (value) => {
+ handleCheckedChange(value, scope.row)
+ }
+ "
+ >
+ <el-checkbox v-for="item in scope.row.detailsList" :label="item.name" :key="item.id">{{
+ item.name
+ }}</el-checkbox>
+ </el-checkbox-group>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <div class="left">
+ <el-checkbox v-model="allChecked" @change="allChange">鍏ㄩ��</el-checkbox>
+ <div class="globalAuth">
+ <span>鍏ㄥ眬蹇�熸巿鏉�</span>
+ <el-select v-model="value" size="mini" placeholder="璇烽�夋嫨">
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
+ </el-select>
+ </div>
+ <div class="radio">
+ <el-radio v-model="radio" label="1">鎺堟潈</el-radio>
+ <el-radio v-model="radio" label="2">鍙栨秷鎺堟潈</el-radio>
+ </div>
+ </div>
+ <div class="btn">
+ <el-button type="primary" size="small" @click="editConfig.visible = false">淇� 瀛�</el-button>
+ <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
+ </div>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "AddRolePermissionDialog",
+ props: {
+ editCommonConfig: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ title: "鏂板缓",
+ infomation: {
+ owner: "",
+ notes: ""
+ }
+ }
+ }
+ }
+ },
+ components: {},
+ computed: {},
+ data() {
+ const commonList = [
+ { id: 1, name: "鏌ョ湅" },
+ { id: 2, name: "鏂板缓" },
+ { id: 3, name: "缂栬緫" },
+ { id: 4, name: "鍒犻櫎" },
+ { id: 5, name: "澶嶅埗" },
+ { id: 6, name: "鍒嗛厤" },
+ { id: 7, name: "鍏变韩" },
+ { id: 8, name: "瀵煎叆" },
+ { id: 9, name: "瀵煎嚭" },
+ { id: 10, name: "鏇存敼鍒涘缓浜�" },
+ { id: 11, name: "鏌ヨ鍒嗙被璁剧疆" },
+ { id: 12, name: "鎺ㄨ繘" },
+ { id: 13, name: "涓嬭浇" },
+ { id: 14, name: "棰勮" },
+ { id: 15, name: "涓嬭浇鍜岄瑙堟鏁�" },
+ { id: 16, name: "涓嬭浇鍏ㄩ儴闄勪欢" }
+ ]
+ return {
+ dialogWidth: "60%",
+ editConfig: this.editCommonConfig,
+ rules: {
+ owner: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }]
+ },
+ moduleSelTitle: "鍏ㄩ儴",
+ tableData: [],
+ btnCommonList: commonList,
+ allChecked: false,
+ radio: "",
+ value: "",
+ options: [{ value: "1", label: "鍒犻櫎" }],
+ isActive: false
+ }
+ },
+ created() {
+ this.isActive = true
+ },
+ methods: {
+ handleClose() {
+ this.editConfig.visible = false
+ },
+ // 妯″潡閫夋嫨
+ moduleSelectClick(value) {
+ this.isActive = false
+ if (value === "all") {
+ this.moduleSelTitle = "鍏ㄩ儴"
+ this.tableData = []
+ } else if (value === "custom") {
+ this.moduleSelTitle = "瀹㈡埛绠$悊"
+ this.tableData = [
+ {
+ name: "閿�鍞嚎绱�",
+ checked: false,
+ checkedList: ["鏌ョ湅"],
+ detailsList: this.btnCommonList
+ },
+ {
+ name: "瀹㈡埛绠$悊",
+ checked: false,
+ checkedList: [],
+ detailsList: this.btnCommonList
+ },
+ {
+ name: "鑱旂郴浜�",
+ checked: false,
+ checkedList: [],
+ detailsList: this.btnCommonList
+ },
+ {
+ name: "璺熻繘璁板綍",
+ checked: false,
+ checkedList: [],
+ detailsList: this.btnCommonList
+ }
+ ]
+ } else if (value === "sales") {
+ this.selectA = false
+ this.selectB = true
+ this.moduleSelTitle = "閿�鍞鐞�"
+ this.tableData = []
+ } else if (value === "service") {
+ this.moduleSelTitle = "鏈嶅姟绠$悊"
+ this.tableData = []
+ } else if (value === "background") {
+ this.moduleSelTitle = "鍚庡彴璁剧疆"
+ this.tableData = []
+ }
+ },
+ // 妯″潡鍏ㄩ��
+ selAllChange(row) {
+ if (row.checked) {
+ let arr = []
+ row.detailsList.forEach((ele) => {
+ arr.push(ele.name)
+ })
+ row.checkedList = arr
+ }
+ },
+ handleCheckedChange(value, row) {
+ if (value.length === row.detailsList.length) {
+ row.checked = true
+ } else {
+ row.checked = false
+ }
+ row.checkedList = value
+ },
+ // 鍏ㄩ��
+ allChange() {
+ this.allChecked != this.allChecked
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-role-permission {
+ .basic-info {
+ .basic-info-title {
+ background-color: #f4f8fe;
+ padding-left: 10px;
+ font-size: 15px;
+ font-weight: bold;
+ color: #666;
+ height: 42px;
+ line-height: 42px;
+ }
+ .basic-info-view {
+ margin-top: 10px;
+ padding-right: 40px;
+ .custom-name {
+ display: flex;
+ .common-select-btn {
+ margin-left: 5px;
+ font-size: 16px;
+ }
+ }
+ }
+ .module-select {
+ background-color: $color-text-placehoder;
+ padding: 20px;
+ .el-button {
+ background-color: #fff;
+ padding: 10px;
+ color: $color-text-main;
+ &:hover,
+ &:active,
+ &:focus {
+ background-color: $color-primary;
+ color: #fff;
+ }
+ }
+ .selBtn {
+ background-color: $color-primary;
+ color: #fff;
+ }
+ .title {
+ margin-top: 20px;
+ color: black;
+ font-weight: bold;
+ }
+ }
+ }
+ .dialog-footer {
+ background-color: #f5f5f5;
+ height: 55px;
+ line-height: 55px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ .left {
+ position: absolute;
+ left: 10px;
+ display: flex;
+ align-items: center;
+ .globalAuth {
+ font-size: 14px;
+ color: #606266;
+ margin-left: 10px;
+ .el-select {
+ width: 90px;
+ margin-left: 5px;
+ }
+ }
+ .radio {
+ margin-left: 10px;
+ .el-radio {
+ margin-right: 10px;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/src/views/backgroundConfig/rolePermssion/index.vue b/src/views/backgroundConfig/rolePermssion/index.vue
index 7be9125..53c2e70 100644
--- a/src/views/backgroundConfig/rolePermssion/index.vue
+++ b/src/views/backgroundConfig/rolePermssion/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="role-peimission">
<div class="btn-pager">
- <el-button @click="addpermssionClick" type="primary" size="small">鏂板鏉冮檺</el-button>
+ <el-button @click="addBtnClick" type="primary" size="small">鏂板鏉冮檺</el-button>
</div>
<TableCommonView ref="tableListRef" :select-box="false" :table-list="tableList">
<template slot="tableButton">
@@ -19,18 +19,18 @@
</template>
</TableCommonView>
<!-- 鏂板缓/缂栬緫 -->
- <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
+ <AddRolePermssionDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
</div>
</template>
<script>
-import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
+import AddRolePermssionDialog from "@/views/backgroundConfig/rolePermssion/AddRolePermssionDialog"
export default {
name: "RoleOeimission",
props: {},
components: {
- AddContractManageDialog
+ AddRolePermssionDialog
},
computed: {
searchCommonHeight() {
@@ -42,7 +42,7 @@
tableList: {},
editConfig: {
visible: false,
- title: "鏂板缓",
+ title: "鏂板鏉冮檺",
infomation: {}
}
}
--
Gitblit v1.8.0