ResourceForm.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <a-form :model="resource_form" layout="horizontal">
  3. <a-form-item field="parentName" label="上级资源" disabled>
  4. <a-input v-model="resource_form.parentName" />
  5. </a-form-item>
  6. <a-form-item field="status" label="资源状态">
  7. <a-switch checked-value="0" unchecked-value="1" v-model="resource_form.status"></a-switch>
  8. </a-form-item>
  9. <a-form-item field="menuName" label="资源名称"
  10. :rules="[{ required: true, message: '资源名称必填' }, { maxLength: 50, message: '长度不超过50' }]">
  11. <a-input v-model="resource_form.menuName" />
  12. </a-form-item>
  13. <a-form-item field="menuName" label="资源图标">
  14. <Upload :action="uploadAction" :limit="1" :url="resource_form.icon" @update:fileList="updateFileList"
  15. @success="handleSuccess"></Upload>
  16. </a-form-item>
  17. <a-form-item field="menuType" label="资源类型" :rules="[{ required: true, message: '资源类型必填' }]">
  18. <a-select v-model="resource_form.menuType" :options="options" :field-names="fieldNames"
  19. :style="{ width: '320px' }" placeholder="请选择" />
  20. </a-form-item>
  21. <a-form-item field="description" label="提示词">
  22. <a-input v-model="resource_form.description" placeholder="请输入提示词" />
  23. </a-form-item>
  24. <a-form-item field="perms" label="资源控制权限字符"
  25. :rules="[{ required: true, message: '资源控制权限字符必填' }, { maxLength: 50, message: '长度不超过50' }]">
  26. <a-input v-model="resource_form.perms" />
  27. </a-form-item>
  28. <a-form-item field="component" label="资源地址" style="align: start"
  29. :rules="[{ required: true, message: '资源地址必填' }, { maxLength: 50, message: '长度不超过50' }]">
  30. <a-input v-model="resource_form.component" />
  31. </a-form-item>
  32. <a-form-item>
  33. <a-space>
  34. <slot name="actions"></slot>
  35. </a-space>
  36. </a-form-item>
  37. </a-form>
  38. </template>
  39. <script setup>
  40. import { toRefs } from 'vue';
  41. import Upload from './Upload.vue';
  42. const uploadAction = '/api/v1/llm/upload'; // 替换为你的上传API
  43. const fileList = ref([]);
  44. const imageUrls = ref([]);
  45. // 接收父组件传入的参数
  46. const props = defineProps({
  47. resource_form: {
  48. type: Object,
  49. required: true,
  50. default: () => ({
  51. parentName: '',
  52. status: 0,
  53. deptName: '',
  54. leader: '',
  55. phone: '',
  56. address: ''
  57. })
  58. }
  59. });
  60. // 将 props 解构
  61. const { resource_form } = toRefs(props);
  62. const updateFileList = (newFileList) => {
  63. fileList.value = newFileList;
  64. };
  65. const handleSuccess = (urls) => {
  66. uploadUrl.value = urls;
  67. const urlsArr = urls.map((url) => {
  68. return httpUrl + url;
  69. });
  70. imageUrls.value = urlsArr; // 拿到上传的图片地址
  71. };
  72. </script>
  73. <style lang="css" scoped></style>