From e10e457c7b48a5bea8e7aa5a111538a6c0875e32 Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期二, 27 八月 2024 20:08:37 +0800 Subject: [PATCH] fix: 修改图片地址 --- src/views/authority/resource/index.vue | 149 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 116 insertions(+), 33 deletions(-) diff --git a/src/views/authority/resource/index.vue b/src/views/authority/resource/index.vue index 8cea64a..7c94293 100644 --- a/src/views/authority/resource/index.vue +++ b/src/views/authority/resource/index.vue @@ -6,12 +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-tree class="tree-demo" draggable blockNode + :default-expand-all=true :data="treeData" :show-line="showLine" :fieldNames="{ @@ -22,7 +23,7 @@ @drop="onDrop" @select="showDetail" > - <template #extra="nodeData"> + <template #extra="nodeData" > <IconPlus style=" position: absolute; @@ -33,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> @@ -53,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> @@ -64,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" @@ -76,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> @@ -103,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> @@ -114,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" @@ -126,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> @@ -141,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); @@ -179,7 +221,7 @@ menuId: '', menuName: '', menuType: '', - orderNum: '', + orderNum: '0', parentId: '', parentName: '', children: [], @@ -190,6 +232,7 @@ target: '', updateTime: '', }); + const onIconClick = (nodeData) => { if (nodeData) { @@ -212,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) => { @@ -229,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