liudong
2024-08-17 f848280fe3ed8841147fcc8f26a788580b82ae0c
src/views/authority/resource/index.vue
@@ -8,7 +8,6 @@
          :bordered="false"
          style=" 'width': '100%';   height: calc(100vh - 250px); 'overflow-y': 'auto' "
        >
          <a-button @click="() => onIconClick(null)">新增父级菜单</a-button>
          <a-tree
            class="tree-demo"
            draggable
@@ -68,6 +67,15 @@
            <a-form-item field="menuName" label="资源名称">
              <a-input v-model="resourceform.menuName" />
            </a-form-item>
            <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="资源类型">
              <a-select
                v-model="resourceform.menuType"
@@ -75,6 +83,12 @@
                :field-names="fieldNames"
                :style="{ width: '320px' }"
                placeholder="请选择"
              />
            </a-form-item>
            <a-form-item field="description" label="提示词">
              <a-input
                v-model="resourceform.description"
                placeholder="请输入提示词"
              />
            </a-form-item>
            <a-form-item field="perms" label="资源控制权限字符">
@@ -104,7 +118,7 @@
      @cancel="handleCancel"
      @ok="addresource"
    >
      <a-form :model="resourceform" layout="horizontal">
      <a-form :rules="rules" :model="resourceform" layout="horizontal">
        <a-form-item field="parentName" label="上级资源" disabled>
          <a-input v-model="resourceform.parentName" />
        </a-form-item>
@@ -118,6 +132,15 @@
        <a-form-item field="menuName" label="资源名称">
          <a-input v-model="resourceform.menuName" />
        </a-form-item>
        <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="资源类型">
          <a-select
            v-model="resourceform.menuType"
@@ -125,6 +148,12 @@
            :field-names="fieldNames"
            :style="{ width: '320px' }"
            placeholder="请选择"
          />
        </a-form-item>
        <a-form-item field="description" label="提示词">
          <a-input
            v-model="resourceform.description"
            placeholder="请输入提示词"
          />
        </a-form-item>
        <a-form-item field="perms" label="资源控制权限字符">
@@ -151,6 +180,9 @@
  } 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 visible = ref(false);
  let treeData = ref([]);
@@ -191,6 +223,38 @@
    target: '',
    updateTime: '',
  });
  const rules = {
    // parentName: [
    //   {
    //     required: true,
    //     message: '请输入上级资源',
    //   },
    // ],
    // menuName: [
    //   {
    //     required: true,
    //     message: '请输入资源名称',
    //   },
    // ],
    // menuType: [
    //   {
    //     required: true,
    //     message: '请选择资源类型',
    //   },
    // ],
    // description: [
    //   {
    //     required: true,
    //     message: '请输入提示词',
    //   },
    // ],
    // perms: [
    //   {
    //     required: true,
    //     message: '请输入资源控制权限字符',
    //   },
    // ],
  };
  const onIconClick = (nodeData) => {
    if (nodeData) {
@@ -212,8 +276,34 @@
    visible.value = true;
  };
  const formRef = ref();
  //图片上传
  const uploadAction = '/api/v1/llm/upload'; // 替换为你的上传API
  const fileList = ref([]);
  const imageUrls = ref([]);
  const uploadUrl = ref([]);
  const httpUrl = modelStore.hrefUrl;
  const updateFileList = (newFileList) => {
    fileList.value = newFileList;
  };
  const addresource = async () => {
  const handleSuccess = (urls) => {
    uploadUrl.value = urls;
    const urlsArr = urls.map((url) => {
      return httpUrl + url;
    });
    imageUrls.value = urlsArr; // 拿到上传的图片地址
  };
  const addresource = async (done) => {
    // formRef.value.validate().then(async (res) => {
    //   if (!res) {
    //   }
    //   done(false);
    // });
    resourceform.value.icon = uploadUrl.value[0] || '';
    await ResourceAdd({
      ...resourceform.value,
    } as unknown as Resource).then((res) => {
@@ -230,9 +320,13 @@
  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 = () => {
    resourceform.value.icon = uploadUrl.value[0] || '';
    ResourceUpdate({
      ...resourceform.value,
    } as unknown as Resource).then((res) => {