From c58ada7f49aac20b06ea2ebda2cb5c006decf122 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 10 五月 2024 17:01:55 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
---
admin/src/views/meeting/components/selectMember.vue | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 267 insertions(+), 0 deletions(-)
diff --git a/admin/src/views/meeting/components/selectMember.vue b/admin/src/views/meeting/components/selectMember.vue
new file mode 100644
index 0000000..44e11f3
--- /dev/null
+++ b/admin/src/views/meeting/components/selectMember.vue
@@ -0,0 +1,267 @@
+<template>
+ <GlobalAlertWindow
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <div class="select-container">
+ <div class="tree">
+ <div style="display: flex; margin-bottom: 5px;">
+ <el-input
+ placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+ v-model="filterText"
+ clearable
+ @input="inputAction"
+ @keypress.enter.native="search"
+ ></el-input>
+ <el-button @click="search" style="margin-left: 5px;" type="primary">鎼滅储</el-button>
+ </div>
+ <el-tree
+ key="tree"
+ v-if="!filterList.length"
+ :data="data"
+ :load="loadNode"
+ lazy
+ >
+ <span class="custom-tree-node" slot-scope="{ node, data }">
+ <span>{{ node.data.name }}</span>
+ <el-checkbox @change="selectUser(node.data)" v-if="node.data.isUser" v-model="node.data.isSelect"></el-checkbox>
+ </span>
+ </el-tree>
+ <div v-else>
+ <div v-for="item in filterList" :key="item.id" class="custom-tree-node">
+ <span>{{ item.realname }}</span>
+ <el-checkbox @change="selectUser(item)" v-model="item.isSelect"></el-checkbox>
+ </div>
+ </div>
+ </div>
+ <div class="line"></div>
+ <div class="selected">
+ <div style="margin-bottom: 5px;">宸查�夛細{{ selectList.length }}</div>
+ <div v-for="item in selectList" :key="item.id" class="custom-tree-node">
+ <span>{{ item.name }}</span>
+ <i class="el-icon-delete delete" @click="deleteAction(item)"></i>
+ </div>
+ </div>
+ </div>
+ </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { findTreeUser } from '@/api/system/department'
+import { fetchList as userList } from '@/api/system/user'
+export default {
+ name: 'selectMember',
+ extends: BaseOpera,
+ components: { GlobalAlertWindow },
+ data () {
+ return {
+ props: {
+ label: 'name',
+ children: 'zones',
+ isLeaf: 'isUser'
+ },
+ data: [],
+ filterText: '',
+ filterList: [],
+ selectList: [],
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ creator: '',
+ createDate: '',
+ editor: '',
+ editDate: '',
+ isdeleted: '',
+ remark: '',
+ name: '',
+ roomId: '',
+ startTime: '',
+ endTime: '',
+ content: ''
+ },
+ rootNode: {},
+ // 楠岃瘉瑙勫垯
+ rules: {
+ }
+ }
+ },
+ created () {
+ this.config({
+ api: '/meeting/bookings',
+ 'field.id': 'id'
+ })
+
+ },
+ methods: {
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.filterList = []
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ // this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ },
+ loadNode(node, resolve) {
+ this.rootNode = node
+ // console.log(node, resolve);
+ if (node.data.isUser) {
+ return resolve([])
+ }
+ let parentId = ''
+ if (node.level === 0) {
+ parentId = ''
+ } else {
+ parentId = node.data.id
+ }
+ findTreeUser({parentId})
+ .then(res => {
+ // this.data = [res]
+ if (!parentId) {
+ resolve([res])
+ } else {
+ let resolveList = []
+ if (res.userList) {
+ res.userList.forEach(item => {
+ let index = this.selectList.findIndex(sel => sel.id == item.id)
+ resolveList.push({
+ ...item,
+ name: item.realname,
+ isUser: true,
+ isSelect: index !== -1
+ })
+ });
+ }
+ if (res.children) {
+ res.children.forEach(item => {
+ resolveList.push(item)
+ })
+ }
+
+ resolve(resolveList)
+ }
+
+ })
+ },
+ inputAction() {
+ if (!this.filterText) {
+ this.filterList = []
+ }
+ },
+ search() {
+ this.filterList = []
+ if (this.filterText) {
+ userList({
+ page: 1,
+ capacity: 9999,
+ model: { realname: this.filterText },
+ })
+ .then(res => {
+ // console.log(res);
+ // this.filterList = res.records
+ res.records.forEach(item => {
+ let index = this.selectList.findIndex(sel => sel.id == item.id)
+ this.filterList.push({
+ ...item,
+ isSelect: index !== -1
+ })
+ })
+ })
+ }
+ },
+ selectUser(item) {
+ let index = this.selectList.findIndex(sel => sel.id == item.id)
+ if (index !== -1) {
+ this.selectList.splice(index, 1)
+ } else {
+ this.selectList.push({
+ name: item.realname,
+ id: item.id
+ })
+ }
+ },
+ deleteAction(item) {
+ console.log(this.rootNode);
+ this.selectList.splice(this.selectList.findIndex(sel => sel.id == item.id), 1)
+ this.filterList.forEach(filter => {
+ if (filter.id == item.id) {
+ filter.isSelect = false
+ }
+ })
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.select-container {
+ display: flex;
+ height: 100%;
+ .tree {
+ padding: 0 10px 10px;
+ box-sizing: border-box;
+ width: calc(50% - 0.5px);
+ min-height: 200px;
+ // height: 100%;
+
+ }
+ .line {
+ width: 1px;
+ min-height: 200px;
+ // height: 100%;
+
+ background-color: #f7f7f7;
+ }
+ .selected {
+ padding: 0 10px 10px;
+ box-sizing: border-box;
+ // background-color: red;
+ // flex: 1;
+ width: calc(50% - 0.5px);
+ min-height: 200px;
+ // height: 100%;
+ }
+}
+.custom-tree-node {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 14px;
+ padding-right: 8px;
+}
+.delete {
+ box-sizing: border-box;
+ line-height: 26px;
+ margin-left: 10px;
+ width: 16px;
+ height: 16px;
+ // background-color: #BFC3CB;
+ color: #216EEE;
+ border-radius: 50%;
+ padding: 1.5px;
+ cursor: pointer;
+ &:hover {
+ color: #ff0000;
+ }
+ }
+</style>
--
Gitblit v1.9.3