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/resource/index.vue | 150 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 116 insertions(+), 34 deletions(-)
diff --git a/src/views/authority/resource/index.vue b/src/views/authority/resource/index.vue
index 9c7a161..7c94293 100644
--- a/src/views/authority/resource/index.vue
+++ b/src/views/authority/resource/index.vue
@@ -6,13 +6,13 @@
<a-card
:title="$t('menu.resource.title')"
:bordered="false"
- style=" 'width': '100%'; height: calc(100vh - 250px); 'overflow-y': 'auto' "
+ style=" 'width': '100%'; height: calc(100vh - 250px); overflow-y:auto "
>
- <a-button @click="() => onIconClick(null)">鏂板鐖剁骇鑿滃崟</a-button>
<a-tree
class="tree-demo"
draggable
blockNode
+ :default-expand-all=true
:data="treeData"
:show-line="showLine"
:fieldNames="{
@@ -23,7 +23,7 @@
@drop="onDrop"
@select="showDetail"
>
- <template #extra="nodeData">
+ <template #extra="nodeData" >
<IconPlus
style="
position: absolute;
@@ -34,16 +34,20 @@
"
@click="() => onIconClick(nodeData)"
/>
- <IconDelete
- style="
+ <a-popconfirm v-if="nodeData.menuName!='root'"
+ content="璇风‘璁ゆ槸鍚﹀垹闄わ紵"
+ type="success"
+ @ok="() => onIconClickDelete(nodeData)"
+ >
+ <IconDelete
+ style="
position: absolute;
right: 40px;
font-size: 12px;
top: 10px;
color: #3370ff;
- "
- @click="() => onIconClickDelete(nodeData)"
- />
+ " />
+ </a-popconfirm>
</template>
</a-tree>
</a-card>
@@ -54,7 +58,7 @@
:bordered="false"
:style="{ width: '100%' }"
>
- <a-form :model="resourceform" layout="horizontal">
+ <a-form :model="resourceform" layout="horizontal" ref="formRef">
<a-form-item field="parentName" label="涓婄骇璧勬簮" disabled>
<a-input v-model="resourceform.parentName" />
</a-form-item>
@@ -65,10 +69,19 @@
v-model="resourceform.status"
></a-switch>
</a-form-item>
- <a-form-item field="menuName" label="璧勬簮鍚嶇О">
+ <a-form-item field="menuName" label="璧勬簮鍚嶇О" :rules="[{required:true,message:'璧勬簮鍚嶇О蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="resourceform.menuName" />
</a-form-item>
- <a-form-item field="menuType" label="璧勬簮绫诲瀷">
+ <a-form-item field="menuName" label="璧勬簮鍥炬爣">
+ <Upload
+ :action="uploadAction"
+ :limit="1"
+ :url="resourceform.icon"
+ @update:fileList="updateFileList"
+ @success="handleSuccess"
+ ></Upload>
+ </a-form-item>
+ <a-form-item field="menuType" label="璧勬簮绫诲瀷" :rules="[{required:true,message:'璧勬簮绫诲瀷蹇呭~'}]">
<a-select
v-model="resourceform.menuType"
:options="options"
@@ -77,13 +90,20 @@
placeholder="璇烽�夋嫨"
/>
</a-form-item>
- <a-form-item field="perms" label="璧勬簮鎺у埗鏉冮檺瀛楃">
+ <a-form-item field="description" label="鎻愮ず璇�">
+ <a-input
+ v-model="resourceform.description"
+ placeholder="璇疯緭鍏ユ彁绀鸿瘝"
+ />
+ </a-form-item>
+ <a-form-item field="perms" label="璧勬簮鎺у埗鏉冮檺瀛楃" :rules="[{required:true,message:'璧勬簮鎺у埗鏉冮檺瀛楃蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="resourceform.perms" />
</a-form-item>
<a-form-item
field="component"
label="璧勬簮鍦板潃"
style="align: start"
+ :rules="[{required:true,message:'璧勬簮鍦板潃蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]"
>
<a-input v-model="resourceform.component" />
</a-form-item>
@@ -104,7 +124,7 @@
@cancel="handleCancel"
@ok="addresource"
>
- <a-form :model="resourceform" layout="horizontal">
+ <a-form :model="resourceform" layout="horizontal" ref="addFormRef">
<a-form-item field="parentName" label="涓婄骇璧勬簮" disabled>
<a-input v-model="resourceform.parentName" />
</a-form-item>
@@ -115,10 +135,19 @@
v-model="resourceform.status"
></a-switch>
</a-form-item>
- <a-form-item field="menuName" label="璧勬簮鍚嶇О">
+ <a-form-item field="menuName" label="璧勬簮鍚嶇О" :rules="[{required:true,message:'璧勬簮鍚嶇О蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="resourceform.menuName" />
</a-form-item>
- <a-form-item field="menuType" label="璧勬簮绫诲瀷">
+ <a-form-item field="icon" label="璧勬簮鍥炬爣">
+ <Upload
+ :action="uploadAction"
+ :limit="1"
+ :url="resourceform.icon"
+ @update:fileList="updateFileList"
+ @success="handleSuccess"
+ ></Upload>
+ </a-form-item>
+ <a-form-item field="menuType" label="璧勬簮绫诲瀷" :rules="[{required:true,message:'璧勬簮绫诲瀷蹇呭~'}]">
<a-select
v-model="resourceform.menuType"
:options="options"
@@ -127,10 +156,16 @@
placeholder="璇烽�夋嫨"
/>
</a-form-item>
- <a-form-item field="perms" label="璧勬簮鎺у埗鏉冮檺瀛楃">
+ <a-form-item field="description" label="鎻愮ず璇�">
+ <a-input
+ v-model="resourceform.description"
+ placeholder="璇疯緭鍏ユ彁绀鸿瘝"
+ />
+ </a-form-item>
+ <a-form-item field="perms" label="璧勬簮鎺у埗鏉冮檺瀛楃" :rules="[{required:true,message:'璧勬簮鎺у埗鏉冮檺瀛楃蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="resourceform.perms" />
</a-form-item>
- <a-form-item field="component" label="璧勬簮鍦板潃" style="align: start">
+ <a-form-item field="component" label="璧勬簮鍦板潃" style="align: start" :rules="[{required:true,message:'璧勬簮鍦板潃蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]">
<a-input v-model="resourceform.component" />
</a-form-item>
</a-form>
@@ -142,16 +177,22 @@
import { ref } from 'vue';
import { IconPlus } from '@arco-design/web-vue/es/icon';
import {
+ Organization,
+ OrganizationAdd, OrganizationUpdate,
Resource,
ResourceAdd,
ResourceById,
ResourceDelete,
ResourceList,
- ResourceUpdate,
- } from '@/api/authority';
+ ResourceUpdate
+ } from "@/api/authority";
import Authheader from '@/views/authority/components/authheader.vue';
import { Modal } from '@arco-design/web-vue';
+ import { userModelState } from '@/store';
+ const modelStore = userModelState();
+ let formRef = ref();
+ let addFormRef= ref();
let visible = ref(false);
let treeData = ref([]);
let showLine = ref(true);
@@ -180,7 +221,7 @@
menuId: '',
menuName: '',
menuType: '',
- orderNum: '',
+ orderNum: '0',
parentId: '',
parentName: '',
children: [],
@@ -191,6 +232,7 @@
target: '',
updateTime: '',
});
+
const onIconClick = (nodeData) => {
if (nodeData) {
@@ -213,12 +255,40 @@
visible.value = true;
};
- const addresource = async () => {
- await ResourceAdd({
- ...resourceform.value,
- } as unknown as Resource).then((res) => {
- ResourceData('');
+ //鍥剧墖涓婁紶
+ const uploadAction = '/api/v1/llm/upload'; // 鏇挎崲涓轰綘鐨勪笂浼燗PI
+ const fileList = ref([]);
+ const imageUrls = ref([]);
+ const uploadUrl = ref([]);
+ const httpUrl = modelStore.hrefUrl;
+ const updateFileList = (newFileList) => {
+ fileList.value = newFileList;
+ };
+
+ const handleSuccess = (urls) => {
+ uploadUrl.value = urls;
+
+ const urlsArr = urls.map((url) => {
+ return httpUrl + url;
});
+ imageUrls.value = urlsArr; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
+ };
+
+ const addCb = async (err) => {
+ if (err) {
+ visible.value = true;
+ } else {
+ resourceform.value.icon = uploadUrl.value[0] || '';
+ await ResourceAdd({
+ ...resourceform.value,
+ } as unknown as Resource).then((res) => {
+ ResourceData('');
+ });
+ }
+ }
+
+ const addresource = async (done) => {
+ addFormRef.value.validate(addCb);
};
const onIconClickDelete = (nodeData) => {
@@ -230,18 +300,30 @@
const showDetail = (id) => {
ResourceById(id).then((res) => {
resourceform.value = { ...res.data };
+ resourceform.value.icon = res.data.icon;
+
+ imageUrls.value.push(httpUrl + res.data.icon);
});
};
- const editresource = () => {
- ResourceUpdate({
- ...resourceform.value,
- } as unknown as Resource).then((res) => {
- ResourceData('');
- Modal.success({
- title: '淇濆瓨鎴愬姛',
- content: '淇濆瓨鎴愬姛',
+ const cb = async (err) => {
+ if (err) {
+
+ } else {
+ resourceform.value.icon = uploadUrl.value[0] || '';
+ ResourceUpdate({
+ ...resourceform.value,
+ } as unknown as Resource).then((res) => {
+ ResourceData('');
+ Modal.success({
+ title: '淇濆瓨鎴愬姛',
+ content: '淇濆瓨鎴愬姛',
+ });
});
- });
+ }
+ }
+ const editresource = () => {
+ formRef.value.validate(cb);
+
};
const reset = (id) => {
ResourceById(id).then((res) => {
--
Gitblit v1.8.0