From 64920403797a80149ac1ba2cd2426ad5db044bec Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期一, 26 八月 2024 14:58:01 +0800
Subject: [PATCH] fix: 修改settings 备注
---
src/views/authority/organization/index.vue | 346 +++++++++++++++++++++++++++++++++++----------------------
1 files changed, 210 insertions(+), 136 deletions(-)
diff --git a/src/views/authority/organization/index.vue b/src/views/authority/organization/index.vue
index 8da1c6c..72e93f8 100644
--- a/src/views/authority/organization/index.vue
+++ b/src/views/authority/organization/index.vue
@@ -4,7 +4,11 @@
<a-row :gutter="20">
<a-col :span="8">
- <a-card :title="$t('menu.organization.title')" :bordered="false" :style="{ width: '100%',height: '900px', 'overflow-y': 'auto' }">
+ <a-card
+ :title="$t('menu.organization.title')"
+ :bordered="false"
+ style=" 'width': '100%'; height: calc(100vh - 250px); overflow-y:auto "
+ >
<a-tree
class="tree-demo"
draggable
@@ -12,41 +16,66 @@
:data="treeData"
:show-line="showLine"
:fieldNames="{
- key:'deptId',
- title:'deptName',
- children:'children',
+ key: 'deptId',
+ title: 'deptName',
+ children: 'children',
}"
@drop="onDrop"
@select="showDetail"
>
<template #extra="nodeData">
<IconPlus
- style="position: absolute; right: 60px; font-size: 12px; top: 10px; color: #3370ff;"
+ style="
+ position: absolute;
+ right: 60px;
+ font-size: 12px;
+ top: 10px;
+ color: #3370ff;
+ "
@click="() => onIconClick(nodeData)"
/>
- <IconDelete style="position: absolute; right: 40px; font-size: 12px; top: 10px; color: #3370ff;"
- @click="() => onIconClickDelete(nodeData)" />
+ <a-popconfirm v-if="nodeData.deptName!='root'"
+ content="璇风‘璁ゆ槸鍚﹀垹闄わ紵"
+ type="success"
+ @ok="() => onIconClickDelete(nodeData)"
+ >
+ <IconDelete
+ style="
+ position: absolute;
+ right: 40px;
+ font-size: 12px;
+ top: 10px;
+ color: #3370ff;
+ " />
+ </a-popconfirm>
</template>
</a-tree>
-
</a-card>
</a-col>
<a-col :span="16">
- <a-card :title="$t('menu.organization.detail')" :bordered="false" :style="{ width: '100%' }">
- <a-form :model="deptform" layout="horizontal">
- <a-form-item field="parentName" label="涓婄骇鏈烘瀯">
- <a-input v-model="deptform.parentId" />
+ <a-card
+ :title="$t('menu.organization.detail')"
+ :bordered="false"
+ :style="{ width: '100%' }"
+ >
+ <a-form :model="deptform" layout="horizontal" ref="formRef">
+ <a-form-item field="parentName" label="涓婄骇鏈烘瀯" disabled>
+ <a-input v-model="deptform.parentName" />
</a-form-item>
<a-form-item field="status" label="鏈烘瀯鐘舵��">
- <a-switch checked-value="0" unchecked-value="1" v-model="deptform.status"></a-switch>
+ <a-switch
+ checked-value="0"
+ unchecked-value="1"
+ v-model="deptform.status"
+ ></a-switch>
</a-form-item>
- <a-form-item field="deptName" label="鏈烘瀯鍚嶇О">
+ <a-form-item field="deptName" label="鏈烘瀯鍚嶇О" :rules="[{required:true,message:'鏈烘瀯鍚嶇О蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.deptName" />
</a-form-item>
- <a-form-item field="leader" label="鑱旂郴浜�">
+ <a-form-item field="leader" label="鑱旂郴浜�" :rules="[{required:true,message:'鑱旂郴浜哄繀濉�'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.leader" />
</a-form-item>
- <a-form-item field="phone" label="鑱旂郴鐢佃瘽">
+ <a-form-item field="phone" label="鑱旂郴鐢佃瘽" :rules="[{required:true,message:'鑱旂郴鐢佃瘽蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.phone" />
</a-form-item>
<a-form-item field="address" label="鏈烘瀯鍦板潃" style="align: start">
@@ -54,7 +83,7 @@
</a-form-item>
<a-form-item>
<a-space>
- <a-button @click="editdept">淇濆瓨</a-button>
+ <a-button @click="editdept">淇濆瓨</a-button>
<a-button @click="reset(deptform.deptId)">閲嶇疆</a-button>
</a-space>
</a-form-item>
@@ -62,21 +91,31 @@
</a-card>
</a-col>
</a-row>
- <a-modal width="50%" v-model:visible="visible" title="鏂板" @cancel="handleCancel" @ok="addDept">
- <a-form :model="deptform" layout="horizontal">
- <a-form-item field="parentName" label="涓婄骇鏈烘瀯">
+ <a-modal
+ width="50%"
+ v-model:visible="visible"
+ title="鏂板"
+ @cancel="handleCancel"
+ @ok="addDept"
+ >
+ <a-form :model="deptform" layout="horizontal" ref="addFormRef">
+ <a-form-item field="parentName" label="涓婄骇鏈烘瀯" disabled>
<a-input v-model="deptform.parentName" />
</a-form-item>
<a-form-item field="status" label="鏈烘瀯鐘舵��">
- <a-switch checked-value="0" unchecked-value="1" v-model="deptform.status"></a-switch>
+ <a-switch
+ checked-value="0"
+ unchecked-value="1"
+ v-model="deptform.status"
+ ></a-switch>
</a-form-item>
- <a-form-item field="deptName" label="鏈烘瀯鍚嶇О">
+ <a-form-item field="deptName" label="鏈烘瀯鍚嶇О" :rules="[{required:true,message:'鏈烘瀯鍚嶇О蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.deptName" />
</a-form-item>
- <a-form-item field="leader" label="鑱旂郴浜�">
+ <a-form-item field="leader" label="鑱旂郴浜�" :rules="[{required:true,message:'鑱旂郴浜哄繀濉�'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.leader" />
</a-form-item>
- <a-form-item field="phone" label="鑱旂郴鐢佃瘽">
+ <a-form-item field="phone" label="鑱旂郴鐢佃瘽" :rules="[{required:true,message:'鑱旂郴鐢佃瘽蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="deptform.phone" />
</a-form-item>
<a-form-item field="address" label="鏈烘瀯鍦板潃" style="align: start">
@@ -88,135 +127,170 @@
</template>
<script lang="ts" setup>
-import { ref } from "vue";
-import { IconPlus } from "@arco-design/web-vue/es/icon";
-import {
- Organization,
- OrganizationAdd,
- OrganizationById,
- OrganizationDelete,
- OrganizationList,
- OrganizationUpdate
-} from "@/api/authority";
-import Authheader from "@/views/authority/components/authheader.vue";
-import { Modal } from "@arco-design/web-vue";
+ import { ref } from 'vue';
+ import { IconPlus } from '@arco-design/web-vue/es/icon';
+ import {
+ Organization,
+ OrganizationAdd,
+ OrganizationById,
+ OrganizationDelete,
+ OrganizationList,
+ OrganizationUpdate, User, UserAdd, UserEdit
+ } from "@/api/authority";
+ import Authheader from '@/views/authority/components/authheader.vue';
+ import { Modal } from '@arco-design/web-vue';
-let visible = ref(false);
-let treeData = ref([]);
-let showLine = ref(true);
-let menuTips = ref(["鏉冮檺绠$悊", "鏈烘瀯"]);
-let deptform = ref<Organization>({
- deptName: "",
- email: "",
- leader: "",
- orderNum: "0",
- parentId: "",
- parentName: "",
- phone: "",
- status: "",
- address: "",
- deptId: ""
-});
+ let formRef = ref();
+ let addFormRef= ref();
+ let visible = ref(false);
+ let treeData = ref([]);
+ let showLine = ref(true);
+ let menuTips = ref(['鏉冮檺绠$悊', '鏈烘瀯']);
+ let deptform = ref<Organization>({
+ deptName: '',
+ email: '',
+ leader: '',
+ orderNum: '0',
+ parentId: '',
+ parentName: '',
+ phone: '',
+ status: '',
+ address: '',
+ deptId: '',
+ });
-const onIconClick = (nodeData) => {
- deptform.value.parentName = nodeData.deptName;
- deptform.value.parentId = nodeData.deptId;
- visible.value = true;
-};
+ const onIconClick = (nodeData) => {
+ deptform.value.deptName = "";
+ deptform.value.email = "";
+ deptform.value.leader = "";
+ deptform.value.orderNum = "0";
+ deptform.value.phone = "";
+ deptform.value.status = "";
+ deptform.value.address = "";
+ deptform.value.deptId = "";
+ deptform.value.parentName = nodeData.deptName;
+ deptform.value.parentId = nodeData.deptId;
-const addDept = async () => {
- await OrganizationAdd({
- ...deptform.value
- } as unknown as Organization).then((res) => {
- OrganizationData("");
- });
-};
+ visible.value = true;
+ };
-const onIconClickDelete = (nodeData) => {
- OrganizationDelete(nodeData.deptId).then(() => {
- OrganizationData("");
- });
-};
+ const addCb = async (err) => {
+ if (err) {
+ visible.value=true;
+ } else {
+ await OrganizationAdd({
+ ...deptform.value,
+ } as unknown as Organization).then((res) => {
+ OrganizationData('');
+ });
+ }
+ ;
+ }
-const showDetail = (id) => {
- OrganizationById(id).then((res) => {
- deptform.value = {...res.data};
- });
-};
-const editdept=()=>{
- OrganizationUpdate({
- ...deptform.value
- } as unknown as Organization).then((res) => {
- OrganizationData("");
- Modal.success({
- title: "淇濆瓨鎴愬姛",
- content: "淇濆瓨鎴愬姛"
- });
- });
-}
-const reset=(id)=>{
- OrganizationById(id).then((res) => {
- deptform.value = {...res.data};
- });
-}
+ const addDept = async () => {
+ addFormRef.value.validate(addCb);
+ };
-const onDrop = ({ dragNode, dropNode, dropPosition }) => {
- const data = treeData.value;
- OrganizationUpdate({
- orderNum: "0", parentId: dropNode.deptId, deptId: dragNode.deptId
- });
- const loop = (data, key, callback) => {
- data.some((item, index, arr) => {
- if (item.deptId === key) {
- callback(item, index, arr);
- return true;
- }
- if (item.children) {
- return loop(item.children, key, callback);
- }
- return false;
+ const onIconClickDelete = (nodeData) => {
+ OrganizationDelete(nodeData.deptId).then(() => {
+ OrganizationData('');
});
};
- loop(data, dragNode.deptId, (_, index, arr) => {
- arr.splice(index, 1);
- });
+ const showDetail = (id) => {
+ OrganizationById(id).then((res) => {
+ deptform.value = { ...res.data };
+ });
+ };
+ const cb = async (err) => {
+ if (err) {
- if (dropPosition === 0) {
- loop(data, dropNode.deptId, (item) => {
- item.children = item.children || [];
- item.children.push(dragNode);
- });
- } else {
- loop(data, dropNode.deptId, (_, index, arr) => {
- arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode);
- });
+ } else {
+ OrganizationUpdate({
+ ...deptform.value,
+ } as unknown as Organization).then((res) => {
+ OrganizationData('');
+ Modal.success({
+ title: '淇濆瓨鎴愬姛',
+ content: '淇濆瓨鎴愬姛',
+ });
+ });
+ }
+ ;
}
-};
+ const editdept = () => {
+ formRef.value.validate(cb);
+ };
+ const reset = (id) => {
+ OrganizationById(id).then((res) => {
+ deptform.value = { ...res.data };
+ });
+ };
-const OrganizationData = async (key) => {
- await OrganizationList(key).then((res) => {
- treeData.value = [...res.rows];
- });
-};
+ const onDrop = ({ dragNode, dropNode, dropPosition }) => {
+ const data = treeData.value;
+ OrganizationUpdate({
+ orderNum: '0',
+ parentId: dropNode.deptId,
+ deptId: dragNode.deptId,
+ });
+ const loop = (data, key, callback) => {
+ data.some((item, index, arr) => {
+ if (item.deptId === key) {
+ callback(item, index, arr);
+ return true;
+ }
+ if (item.children) {
+ return loop(item.children, key, callback);
+ }
+ return false;
+ });
+ };
-OrganizationData("");
+ loop(data, dragNode.deptId, (_, index, arr) => {
+ arr.splice(index, 1);
+ });
+
+ if (dropPosition === 0) {
+ loop(data, dropNode.deptId, (item) => {
+ item.children = item.children || [];
+ item.children.push(dragNode);
+ });
+ } else {
+ loop(data, dropNode.deptId, (_, index, arr) => {
+ arr.splice(dropPosition < 0 ? index : index + 1, 0, dragNode);
+ });
+ }
+ };
+
+ const handleCancel = (type) => {
+ if (type == 1) {
+ visible.value = false;
+ }
+ };
+
+ const OrganizationData = async (key) => {
+ await OrganizationList(key).then((res) => {
+ treeData.value = [...res.rows];
+ });
+ };
+
+ OrganizationData('');
</script>
-
<style scoped>
-.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title),
-.tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover {
- animation: blinkBg 0.4s 2;
-}
-
-@keyframes blinkBg {
- 0% {
- background-color: transparent;
+ .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title),
+ .tree-demo :deep(.tree-node-dropover) > :deep(.arco-tree-node-title):hover {
+ animation: blinkBg 0.4s 2;
}
- 100% {
- background-color: var(--color-primary-light-1);
+ @keyframes blinkBg {
+ 0% {
+ background-color: transparent;
+ }
+
+ 100% {
+ background-color: var(--color-primary-light-1);
+ }
}
-}
</style>
--
Gitblit v1.8.0