Commit f6298fedf446d13b97929c98b0d1f14694d60e34
Committed by
xp.Huang
1 parent
4cafa320
fix: 图片删除时先调用接口
Showing
23 changed files
with
517 additions
and
84 deletions
... | ... | @@ -3,8 +3,15 @@ import { FileUploadResponse } from '/@/api/oss/FileUploadResponse'; |
3 | 3 | |
4 | 4 | enum Api { |
5 | 5 | BaseUploadUrl = '/oss/upload', |
6 | + BaseDeleteUrl = '/oss', | |
6 | 7 | } |
7 | 8 | |
8 | 9 | export const upload = (file) => { |
9 | 10 | return defHttp.post<FileUploadResponse>({ url: Api.BaseUploadUrl, params: file }); |
10 | 11 | }; |
12 | + | |
13 | +export const deleteFilePath = (deleteFilePath?: string) => { | |
14 | + return defHttp.delete({ | |
15 | + url: `${Api.BaseDeleteUrl}?deleteFilePath=${deleteFilePath}`, | |
16 | + }); | |
17 | +}; | ... | ... |
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 | } |
22 | 22 | |
23 | 23 | const { prefixCls } = useDesign('api-upload'); |
24 | - const emit = defineEmits(['update:fileList', 'preview', 'download']); | |
24 | + const emit = defineEmits(['update:fileList', 'preview', 'download', 'delete']); | |
25 | 25 | |
26 | 26 | const { createMessage } = useMessage(); |
27 | 27 | |
... | ... | @@ -129,6 +129,7 @@ |
129 | 129 | const index = _fileList.findIndex((item) => item.uid === file.uid); |
130 | 130 | ~index && _fileList.splice(index, 1); |
131 | 131 | emit('update:fileList', _fileList); |
132 | + emit('delete', file.url); | |
132 | 133 | }; |
133 | 134 | |
134 | 135 | const handlePreview = (file: FileItem) => { | ... | ... |
... | ... | @@ -51,6 +51,7 @@ |
51 | 51 | import { useDrawer } from '/@/components/Drawer'; |
52 | 52 | import { FileItem } from '/@/components/Form/src/components/ApiUpload.vue'; |
53 | 53 | import { buildUUID } from '/@/utils/uuid'; |
54 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
54 | 55 | |
55 | 56 | export default defineComponent({ |
56 | 57 | name: 'ContactDrawer', |
... | ... | @@ -161,6 +162,11 @@ |
161 | 162 | } else { |
162 | 163 | delete values.id; |
163 | 164 | } |
165 | + | |
166 | + if (Reflect.has(values, 'deleteUrl')) { | |
167 | + await deleteFilePath(values?.deleteUrl); | |
168 | + Reflect.deleteProperty(values, 'deleteUrl'); | |
169 | + } | |
164 | 170 | let saveMessage = '添加成功'; |
165 | 171 | let updateMessage = '修改成功'; |
166 | 172 | ... | ... |
... | ... | @@ -192,7 +192,7 @@ export const formSchema: QFormSchema[] = [ |
192 | 192 | component: 'ApiUpload', |
193 | 193 | changeEvent: 'update:fileList', |
194 | 194 | valueField: 'fileList', |
195 | - componentProps: () => { | |
195 | + componentProps: ({ formModel }) => { | |
196 | 196 | return { |
197 | 197 | listType: 'picture-card', |
198 | 198 | maxFileLimit: 1, |
... | ... | @@ -214,10 +214,19 @@ export const formSchema: QFormSchema[] = [ |
214 | 214 | onPreview: (fileList: FileItem) => { |
215 | 215 | createImgPreview({ imageList: [fileList.url!] }); |
216 | 216 | }, |
217 | + onDelete(url: string) { | |
218 | + formModel.deleteUrl = url!; | |
219 | + }, | |
217 | 220 | }; |
218 | 221 | }, |
219 | 222 | }, |
220 | 223 | { |
224 | + field: 'deleteUrl', | |
225 | + label: '', | |
226 | + component: 'Input', | |
227 | + show: false, | |
228 | + }, | |
229 | + { | |
221 | 230 | field: 'name', |
222 | 231 | label: '视频名字', |
223 | 232 | required: true, | ... | ... |
... | ... | @@ -52,6 +52,7 @@ |
52 | 52 | import { createPickerSearch } from '/@/utils/pickerSearch'; |
53 | 53 | import type { queryPageParams } from '/@/api/configuration/center/model/configurationCenterModal'; |
54 | 54 | import { getDeviceProfile } from '/@/api/alarm/position'; |
55 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
55 | 56 | |
56 | 57 | export default defineComponent({ |
57 | 58 | name: 'ConfigurationDrawer', |
... | ... | @@ -263,6 +264,11 @@ |
263 | 264 | values.thumbnail = file.url || null; |
264 | 265 | } |
265 | 266 | setDrawerProps({ confirmLoading: true }); |
267 | + | |
268 | + if (Reflect.has(values, 'deleteUrl')) { | |
269 | + await deleteFilePath(values?.deleteUrl); | |
270 | + Reflect.deleteProperty(values, 'deleteUrl'); | |
271 | + } | |
266 | 272 | let saveMessage = '添加成功'; |
267 | 273 | let updateMessage = '修改成功'; |
268 | 274 | values.defaultContent = getDefaultContent(values.platform); | ... | ... |
... | ... | @@ -90,7 +90,7 @@ export const formSchema: FormSchema[] = [ |
90 | 90 | component: 'ApiUpload', |
91 | 91 | changeEvent: 'update:fileList', |
92 | 92 | valueField: 'fileList', |
93 | - componentProps: () => { | |
93 | + componentProps: ({ formModel }) => { | |
94 | 94 | return { |
95 | 95 | listType: 'picture-card', |
96 | 96 | maxFileLimit: 1, |
... | ... | @@ -112,10 +112,19 @@ export const formSchema: FormSchema[] = [ |
112 | 112 | onPreview: (fileList: FileItem) => { |
113 | 113 | createImgPreview({ imageList: [fileList.url!] }); |
114 | 114 | }, |
115 | + onDelete(url: string) { | |
116 | + formModel.deleteUrl = url!; | |
117 | + }, | |
115 | 118 | }; |
116 | 119 | }, |
117 | 120 | }, |
118 | 121 | { |
122 | + field: 'deleteUrl', | |
123 | + label: '', | |
124 | + component: 'Input', | |
125 | + show: false, | |
126 | + }, | |
127 | + { | |
119 | 128 | field: 'name', |
120 | 129 | label: '组态名称', |
121 | 130 | required: true, | ... | ... |
... | ... | @@ -21,6 +21,7 @@ |
21 | 21 | import { buildUUID } from '/@/utils/uuid'; |
22 | 22 | import { getDeviceProfile } from '/@/api/alarm/position'; |
23 | 23 | import { PC_DEFAULT_CONTENT, PHONE_DEFAULT_CONTENT, Platform } from '../center/center.data'; |
24 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
24 | 25 | |
25 | 26 | export default defineComponent({ |
26 | 27 | name: 'ConfigurationDrawer', |
... | ... | @@ -91,6 +92,10 @@ |
91 | 92 | const file = (values.thumbnail || []).at(0) || {}; |
92 | 93 | values.thumbnail = file.url || null; |
93 | 94 | } |
95 | + if (Reflect.has(values, 'deleteUrl')) { | |
96 | + await deleteFilePath(values?.deleteUrl); | |
97 | + Reflect.deleteProperty(values, 'deleteUrl'); | |
98 | + } | |
94 | 99 | setDrawerProps({ confirmLoading: true }); |
95 | 100 | let saveMessage = '添加成功'; |
96 | 101 | let updateMessage = '修改成功'; | ... | ... |
... | ... | @@ -79,7 +79,7 @@ export const formSchema: FormSchema[] = [ |
79 | 79 | component: 'ApiUpload', |
80 | 80 | changeEvent: 'update:fileList', |
81 | 81 | valueField: 'fileList', |
82 | - componentProps: () => { | |
82 | + componentProps: ({ formModel }) => { | |
83 | 83 | return { |
84 | 84 | listType: 'picture-card', |
85 | 85 | maxFileLimit: 1, |
... | ... | @@ -101,9 +101,18 @@ export const formSchema: FormSchema[] = [ |
101 | 101 | onPreview: (fileList: FileItem) => { |
102 | 102 | createImgPreview({ imageList: [fileList.url!] }); |
103 | 103 | }, |
104 | + onDelete(url: string) { | |
105 | + formModel.deleteUrl = url!; | |
106 | + }, | |
104 | 107 | }; |
105 | 108 | }, |
106 | 109 | }, |
110 | + { | |
111 | + field: 'deleteUrl', | |
112 | + label: '', | |
113 | + component: 'Input', | |
114 | + show: false, | |
115 | + }, | |
107 | 116 | |
108 | 117 | { |
109 | 118 | field: 'name', | ... | ... |
... | ... | @@ -19,6 +19,7 @@ |
19 | 19 | import { saveOrUpdateBigScreenCenter } from '/@/api/bigscreen/center/bigscreenCenter'; |
20 | 20 | import { FileItem } from '/@/components/Form/src/components/ApiUpload.vue'; |
21 | 21 | import { buildUUID } from '/@/utils/uuid'; |
22 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
22 | 23 | |
23 | 24 | export default defineComponent({ |
24 | 25 | name: 'BigScreenDrawer', |
... | ... | @@ -67,6 +68,10 @@ |
67 | 68 | const file = (values.thumbnail || []).at(0) || {}; |
68 | 69 | values.thumbnail = file.url || null; |
69 | 70 | } |
71 | + if (Reflect.has(values, 'deleteUrl')) { | |
72 | + await deleteFilePath(values?.deleteUrl); | |
73 | + Reflect.deleteProperty(values, 'deleteUrl'); | |
74 | + } | |
70 | 75 | setDrawerProps({ confirmLoading: true }); |
71 | 76 | let saveMessage = '添加成功'; |
72 | 77 | let updateMessage = '修改成功'; | ... | ... |
... | ... | @@ -56,7 +56,7 @@ export const formSchema: FormSchema[] = [ |
56 | 56 | component: 'ApiUpload', |
57 | 57 | changeEvent: 'update:fileList', |
58 | 58 | valueField: 'fileList', |
59 | - componentProps: () => { | |
59 | + componentProps: ({ formModel }) => { | |
60 | 60 | return { |
61 | 61 | listType: 'picture-card', |
62 | 62 | maxFileLimit: 1, |
... | ... | @@ -80,9 +80,18 @@ export const formSchema: FormSchema[] = [ |
80 | 80 | onPreview: (fileList: FileItem) => { |
81 | 81 | createImgPreview({ imageList: [fileList.url!] }); |
82 | 82 | }, |
83 | + onDelete(url: string) { | |
84 | + formModel.deleteUrl = url!; | |
85 | + }, | |
83 | 86 | }; |
84 | 87 | }, |
85 | 88 | }, |
89 | + { | |
90 | + field: 'deleteUrl', | |
91 | + label: '', | |
92 | + component: 'Input', | |
93 | + show: false, | |
94 | + }, | |
86 | 95 | |
87 | 96 | { |
88 | 97 | field: 'name', | ... | ... |
... | ... | @@ -49,7 +49,7 @@ export const step1Schemas: FormSchema[] = [ |
49 | 49 | component: 'ApiUpload', |
50 | 50 | changeEvent: 'update:fileList', |
51 | 51 | valueField: 'fileList', |
52 | - componentProps: () => { | |
52 | + componentProps: ({ formModel }) => { | |
53 | 53 | return { |
54 | 54 | listType: 'picture-card', |
55 | 55 | maxFileLimit: 1, |
... | ... | @@ -71,10 +71,19 @@ export const step1Schemas: FormSchema[] = [ |
71 | 71 | onPreview: (fileList: FileItem) => { |
72 | 72 | createImgPreview({ imageList: [fileList.url!] }); |
73 | 73 | }, |
74 | + onDelete(url: string) { | |
75 | + formModel.deleteUrl = url!; | |
76 | + }, | |
74 | 77 | }; |
75 | 78 | }, |
76 | 79 | }, |
77 | 80 | { |
81 | + field: 'deleteUrl', | |
82 | + label: '', | |
83 | + component: 'Input', | |
84 | + show: false, | |
85 | + }, | |
86 | + { | |
78 | 87 | field: 'alias', |
79 | 88 | label: '别名 ', |
80 | 89 | component: 'Input', | ... | ... |
... | ... | @@ -41,6 +41,7 @@ |
41 | 41 | import { Steps } from 'ant-design-vue'; |
42 | 42 | import { useMessage } from '/@/hooks/web/useMessage'; |
43 | 43 | import { credentialTypeEnum } from '../../config/data'; |
44 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
44 | 45 | |
45 | 46 | export default defineComponent({ |
46 | 47 | name: 'DeviceModal', |
... | ... | @@ -163,6 +164,10 @@ |
163 | 164 | }, |
164 | 165 | }; |
165 | 166 | validateNameLength(stepRecord.name); |
167 | + if (Reflect.has(editData, 'deleteUrl')) { | |
168 | + await deleteFilePath(editData?.deleteUrl); | |
169 | + Reflect.deleteProperty(editData, 'deleteUrl'); | |
170 | + } | |
166 | 171 | await createOrEditDevice(editData); |
167 | 172 | } else { |
168 | 173 | const stepRecord = unref(stepState); | ... | ... |
... | ... | @@ -86,6 +86,7 @@ |
86 | 86 | import TransportConfigurationStep from './step/TransportConfigurationStep.vue'; |
87 | 87 | import PhysicalModelManagementStep from './step/PhysicalModelManagementStep.vue'; |
88 | 88 | import { DeviceProfileDetail } from '/@/api/device/model/deviceConfigModel'; |
89 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
89 | 90 | |
90 | 91 | const emits = defineEmits(['success', 'register']); |
91 | 92 | const activeKey = ref('1'); |
... | ... | @@ -188,6 +189,10 @@ |
188 | 189 | await getDeviceConfFormData(); |
189 | 190 | await getTransConfData(); |
190 | 191 | const isEmptyObj = isEmpty(transportConfData.profileData.transportConfiguration); |
192 | + if (Reflect.has(postSubmitFormData.deviceConfData, 'deleteUrl')) { | |
193 | + await deleteFilePath(postSubmitFormData.deviceConfData?.deleteUrl); | |
194 | + Reflect.deleteProperty(postSubmitFormData.deviceConfData, 'deleteUrl'); | |
195 | + } | |
191 | 196 | await deviceConfigAddOrEdit({ |
192 | 197 | ...postSubmitFormData.deviceConfData, |
193 | 198 | ...{ transportType: !isEmptyObj ? transportTypeStr.value : 'DEFAULT' }, | ... | ... |
... | ... | @@ -182,7 +182,7 @@ export const step1Schemas: FormSchema[] = [ |
182 | 182 | component: 'ApiUpload', |
183 | 183 | changeEvent: 'update:fileList', |
184 | 184 | valueField: 'fileList', |
185 | - componentProps: () => { | |
185 | + componentProps: ({ formModel }) => { | |
186 | 186 | return { |
187 | 187 | listType: 'picture-card', |
188 | 188 | maxFileLimit: 1, |
... | ... | @@ -204,10 +204,19 @@ export const step1Schemas: FormSchema[] = [ |
204 | 204 | onPreview: (fileList: FileItem) => { |
205 | 205 | createImgPreview({ imageList: [fileList.url!] }); |
206 | 206 | }, |
207 | + onDelete(url: string) { | |
208 | + formModel.deleteUrl = url!; | |
209 | + }, | |
207 | 210 | }; |
208 | 211 | }, |
209 | 212 | }, |
210 | 213 | { |
214 | + field: 'deleteUrl', | |
215 | + label: '', | |
216 | + component: 'Input', | |
217 | + show: false, | |
218 | + }, | |
219 | + { | |
211 | 220 | field: 'deviceType', |
212 | 221 | component: 'ApiRadioGroup', |
213 | 222 | label: '设备类型', | ... | ... |
1 | +import { FileItem } from '../types'; | |
2 | +import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter'; | |
1 | 3 | import type { FormSchema } from '/@/components/Form/index'; |
4 | +import { createImgPreview } from '/@/components/Preview'; | |
2 | 5 | export const schemas: FormSchema[] = [ |
3 | 6 | { |
4 | 7 | field: 'name', |
... | ... | @@ -27,21 +30,99 @@ export const schemas: FormSchema[] = [ |
27 | 30 | }, |
28 | 31 | { |
29 | 32 | field: 'logo', |
30 | - component: 'Upload', | |
31 | 33 | label: 'APP Logo', |
32 | - colProps: { | |
33 | - span: 24, | |
34 | + // component: 'Upload', | |
35 | + // colProps: { | |
36 | + // span: 24, | |
37 | + // }, | |
38 | + // slot: 'logoUpload', | |
39 | + helpMessage: ['支持.PNG、.JPG格式,建议尺寸为32*32px,大小不超过5M '], | |
40 | + component: 'ApiUpload', | |
41 | + changeEvent: 'update:fileList', | |
42 | + valueField: 'fileList', | |
43 | + componentProps: ({ formModel }) => { | |
44 | + return { | |
45 | + listType: 'picture-card', | |
46 | + maxFileLimit: 1, | |
47 | + accept: '.png,.jpg,.jpeg,.gif', | |
48 | + api: async (file: File) => { | |
49 | + try { | |
50 | + const formData = new FormData(); | |
51 | + formData.set('file', file); | |
52 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
53 | + return { | |
54 | + uid: fileStaticUri, | |
55 | + name: fileName, | |
56 | + url: fileStaticUri, | |
57 | + } as FileItem; | |
58 | + } catch (error) { | |
59 | + return {}; | |
60 | + } | |
61 | + }, | |
62 | + // showUploadList: true, | |
63 | + onDownload() {}, | |
64 | + onPreview: (fileList: FileItem) => { | |
65 | + createImgPreview({ imageList: [fileList.url!] }); | |
66 | + }, | |
67 | + onDelete(url: string) { | |
68 | + formModel.deleteLogoUrl = url!; | |
69 | + }, | |
70 | + }; | |
34 | 71 | }, |
35 | - slot: 'logoUpload', | |
36 | 72 | }, |
37 | 73 | { |
38 | - field: 'background', | |
74 | + field: 'deleteLogoUrl', | |
75 | + label: '', | |
39 | 76 | component: 'Input', |
77 | + show: false, | |
78 | + }, | |
79 | + { | |
80 | + field: 'background', | |
40 | 81 | label: '登录页背景图片', |
41 | - colProps: { | |
42 | - span: 24, | |
82 | + // component: 'Input', | |
83 | + // colProps: { | |
84 | + // span: 24, | |
85 | + // }, | |
86 | + // slot: 'bgUpload', | |
87 | + helpMessage: ['支持.PNG、.JPG格式,建议尺寸为1920*1080px,大小不超过5M'], | |
88 | + component: 'ApiUpload', | |
89 | + changeEvent: 'update:fileList', | |
90 | + valueField: 'fileList', | |
91 | + componentProps: ({ formModel }) => { | |
92 | + return { | |
93 | + listType: 'picture-card', | |
94 | + maxFileLimit: 1, | |
95 | + accept: '.png,.jpg,.jpeg,.gif,', | |
96 | + api: async (file: File) => { | |
97 | + try { | |
98 | + const formData = new FormData(); | |
99 | + formData.set('file', file); | |
100 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
101 | + return { | |
102 | + uid: fileStaticUri, | |
103 | + name: fileName, | |
104 | + url: fileStaticUri, | |
105 | + } as FileItem; | |
106 | + } catch (error) { | |
107 | + return {}; | |
108 | + } | |
109 | + }, | |
110 | + // showUploadList: true, | |
111 | + onDownload() {}, | |
112 | + onPreview: (fileList: FileItem) => { | |
113 | + createImgPreview({ imageList: [fileList.url!] }); | |
114 | + }, | |
115 | + onDelete(url: string) { | |
116 | + formModel.deleteBackgroundUrl = url!; | |
117 | + }, | |
118 | + }; | |
43 | 119 | }, |
44 | - slot: 'bgUpload', | |
120 | + }, | |
121 | + { | |
122 | + field: 'deleteBackgroundUrl', | |
123 | + label: '', | |
124 | + component: 'Input', | |
125 | + show: false, | |
45 | 126 | }, |
46 | 127 | { |
47 | 128 | field: 'backgroundColor', | ... | ... |
1 | +import { FileItem } from '../types'; | |
2 | +import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter'; | |
1 | 3 | import type { FormSchema } from '/@/components/Form/index'; |
4 | +import { createImgPreview } from '/@/components/Preview'; | |
2 | 5 | |
3 | 6 | export const schemas: FormSchema[] = [ |
4 | 7 | { |
... | ... | @@ -28,30 +31,148 @@ export const schemas: FormSchema[] = [ |
28 | 31 | }, |
29 | 32 | { |
30 | 33 | field: 'logo', |
31 | - component: 'Upload', | |
32 | 34 | label: '平台Logo', |
33 | - colProps: { | |
34 | - span: 24, | |
35 | + // component: 'Upload', | |
36 | + // colProps: { | |
37 | + // span: 24, | |
38 | + // }, | |
39 | + // slot: 'logoUpload', | |
40 | + helpMessage: ['支持.PNG、.JPG格式,建议尺寸为32*32px,大小不超过5M '], | |
41 | + component: 'ApiUpload', | |
42 | + changeEvent: 'update:fileList', | |
43 | + valueField: 'fileList', | |
44 | + componentProps: ({ formModel }) => { | |
45 | + return { | |
46 | + listType: 'picture-card', | |
47 | + maxFileLimit: 1, | |
48 | + accept: '.png,.jpg,.jpeg,.gif', | |
49 | + api: async (file: File) => { | |
50 | + try { | |
51 | + const formData = new FormData(); | |
52 | + formData.set('file', file); | |
53 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
54 | + return { | |
55 | + uid: fileStaticUri, | |
56 | + name: fileName, | |
57 | + url: fileStaticUri, | |
58 | + } as FileItem; | |
59 | + } catch (error) { | |
60 | + return {}; | |
61 | + } | |
62 | + }, | |
63 | + // showUploadList: true, | |
64 | + onDownload() {}, | |
65 | + onPreview: (fileList: FileItem) => { | |
66 | + createImgPreview({ imageList: [fileList.url!] }); | |
67 | + }, | |
68 | + onDelete(url: string) { | |
69 | + formModel.deleteLogoUrl = url!; | |
70 | + }, | |
71 | + }; | |
35 | 72 | }, |
36 | - slot: 'logoUpload', | |
73 | + }, | |
74 | + { | |
75 | + field: 'deleteLogoUrl', | |
76 | + label: '', | |
77 | + component: 'Input', | |
78 | + show: false, | |
37 | 79 | }, |
38 | 80 | { |
39 | 81 | field: 'icon', |
40 | - component: 'Upload', | |
41 | 82 | label: '浏览器ico图标', |
42 | - colProps: { | |
43 | - span: 24, | |
83 | + // component: 'Upload', | |
84 | + // colProps: { | |
85 | + // span: 24, | |
86 | + // }, | |
87 | + // slot: 'iconUpload', | |
88 | + helpMessage: ['支持.ICO格式,建议尺寸为16*16px '], | |
89 | + component: 'ApiUpload', | |
90 | + changeEvent: 'update:fileList', | |
91 | + valueField: 'fileList', | |
92 | + componentProps: ({ formModel }) => { | |
93 | + return { | |
94 | + listType: 'picture-card', | |
95 | + maxFileLimit: 1, | |
96 | + maxSize: 500 * 1024, | |
97 | + accept: '.icon,.ico', | |
98 | + api: async (file: File) => { | |
99 | + try { | |
100 | + const formData = new FormData(); | |
101 | + formData.set('file', file); | |
102 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
103 | + return { | |
104 | + uid: fileStaticUri, | |
105 | + name: fileName, | |
106 | + url: fileStaticUri, | |
107 | + } as FileItem; | |
108 | + } catch (error) { | |
109 | + return {}; | |
110 | + } | |
111 | + }, | |
112 | + // showUploadList: true, | |
113 | + onDownload() {}, | |
114 | + onPreview: (fileList: FileItem) => { | |
115 | + createImgPreview({ imageList: [fileList.url!] }); | |
116 | + }, | |
117 | + onDelete(url: string) { | |
118 | + formModel.deleteIconUrl = url!; | |
119 | + }, | |
120 | + }; | |
44 | 121 | }, |
45 | - slot: 'iconUpload', | |
46 | 122 | }, |
47 | 123 | { |
48 | - field: 'background', | |
124 | + field: 'deleteIconUrl', | |
125 | + label: '', | |
49 | 126 | component: 'Input', |
127 | + show: false, | |
128 | + }, | |
129 | + { | |
130 | + field: 'background', | |
50 | 131 | label: '登录页背景图片', |
51 | - colProps: { | |
52 | - span: 24, | |
132 | + // component: 'Input', | |
133 | + // colProps: { | |
134 | + // span: 24, | |
135 | + // }, | |
136 | + // slot: 'bgUpload', | |
137 | + helpMessage: ['支持.PNG、.JPG格式,建议尺寸为1920*1080px以上,大小不超过5M'], | |
138 | + component: 'ApiUpload', | |
139 | + changeEvent: 'update:fileList', | |
140 | + valueField: 'fileList', | |
141 | + componentProps: ({ formModel }) => { | |
142 | + return { | |
143 | + listType: 'picture-card', | |
144 | + maxFileLimit: 1, | |
145 | + accept: '.png,.jpg,.jpeg,.gif,.jfif', | |
146 | + api: async (file: File) => { | |
147 | + try { | |
148 | + const formData = new FormData(); | |
149 | + formData.set('file', file); | |
150 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
151 | + return { | |
152 | + uid: fileStaticUri, | |
153 | + name: fileName, | |
154 | + url: fileStaticUri, | |
155 | + } as FileItem; | |
156 | + } catch (error) { | |
157 | + return {}; | |
158 | + } | |
159 | + }, | |
160 | + // showUploadList: true, | |
161 | + onDownload() {}, | |
162 | + onPreview: (fileList: FileItem) => { | |
163 | + createImgPreview({ imageList: [fileList.url!] }); | |
164 | + }, | |
165 | + onDelete(url: string) { | |
166 | + formModel.deleteBackgroundUrl = url!; | |
167 | + }, | |
168 | + }; | |
53 | 169 | }, |
54 | - slot: 'bgUpload', | |
170 | + }, | |
171 | + { | |
172 | + field: 'deleteBackgroundUrl', | |
173 | + label: '', | |
174 | + component: 'Input', | |
175 | + show: false, | |
55 | 176 | }, |
56 | 177 | { |
57 | 178 | field: 'backgroundColor', | ... | ... |
1 | 1 | import type { FormSchema } from '/@/components/Form/index'; |
2 | 2 | import { getAreaList } from '/@/api/oem/index'; |
3 | 3 | import { emailRule, phoneRule } from '/@/utils/rules'; |
4 | +import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter'; | |
5 | +import { FileItem } from '../types'; | |
6 | +import { createImgPreview } from '/@/components/Preview'; | |
4 | 7 | |
5 | 8 | export enum Level { |
6 | 9 | PROVINCE = 'PROVINCE', |
... | ... | @@ -179,14 +182,53 @@ export const schemas: FormSchema[] = [ |
179 | 182 | rules: phoneRule, |
180 | 183 | }, |
181 | 184 | { |
182 | - field: 'qrcode', | |
185 | + field: 'qrCode', | |
183 | 186 | label: '联系我们', |
184 | 187 | required: true, |
185 | - component: 'Select', | |
188 | + // component: 'Select', | |
189 | + // slot: 'qrcode', | |
190 | + component: 'ApiUpload', | |
191 | + changeEvent: 'update:fileList', | |
192 | + valueField: 'fileList', | |
186 | 193 | colProps: { |
187 | 194 | span: 24, |
188 | 195 | }, |
189 | - slot: 'qrcode', | |
196 | + helpMessage: ['支持.PNG、.JPG格式,建议尺寸为300*300px,大小不超过5M '], | |
197 | + componentProps: ({ formModel }) => { | |
198 | + return { | |
199 | + listType: 'picture-card', | |
200 | + maxFileLimit: 1, | |
201 | + accept: '.png,.jpg,.jpeg,.gif', | |
202 | + api: async (file: File) => { | |
203 | + try { | |
204 | + const formData = new FormData(); | |
205 | + formData.set('file', file); | |
206 | + const { fileStaticUri, fileName } = await uploadThumbnail(formData); | |
207 | + return { | |
208 | + uid: fileStaticUri, | |
209 | + name: fileName, | |
210 | + url: fileStaticUri, | |
211 | + } as FileItem; | |
212 | + } catch (error) { | |
213 | + return {}; | |
214 | + } | |
215 | + }, | |
216 | + // showUploadList: true, | |
217 | + onDownload() {}, | |
218 | + onPreview: (fileList: FileItem) => { | |
219 | + createImgPreview({ imageList: [fileList.url!] }); | |
220 | + }, | |
221 | + onDelete(url: string) { | |
222 | + formModel.deleteUrl = url!; | |
223 | + }, | |
224 | + }; | |
225 | + }, | |
226 | + }, | |
227 | + { | |
228 | + field: 'deleteUrl', | |
229 | + label: '', | |
230 | + component: 'Input', | |
231 | + show: false, | |
190 | 232 | }, |
191 | 233 | { |
192 | 234 | field: 'id', | ... | ... |
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | <Card :bordered="false" class="card"> |
4 | 4 | <div style="margin-left: -40px"> |
5 | 5 | <BasicForm @register="registerForm"> |
6 | - <template #logoUpload> | |
6 | + <!-- <template #logoUpload> | |
7 | 7 | <ContentUploadText> |
8 | 8 | <template #uploadImg> |
9 | 9 | <CustomUploadComp :imgUrl="logoPic" @setImg="handleSetLogoImgUrl" /> |
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | </div> |
25 | 25 | </template> |
26 | 26 | </ContentUploadText> |
27 | - </template> | |
27 | + </template> --> | |
28 | 28 | <template #colorInput="{ model, field }" |
29 | 29 | ><Input disabled v-model:value="model[field]"> |
30 | 30 | <template #prefix> <input type="color" v-model="model[field]" /> </template |
... | ... | @@ -41,6 +41,7 @@ |
41 | 41 | :customRequest="customUploadHomeSwiper" |
42 | 42 | :before-upload="beforeUploadHomeSwiper" |
43 | 43 | @change="handleChange" |
44 | + :remove="handleRemove" | |
44 | 45 | > |
45 | 46 | <div v-if="fileList.length < 5"> |
46 | 47 | <div> |
... | ... | @@ -74,7 +75,7 @@ |
74 | 75 | </template> |
75 | 76 | |
76 | 77 | <script lang="ts"> |
77 | - import { defineComponent, ref, unref, onMounted } from 'vue'; | |
78 | + import { defineComponent, ref, onMounted, unref } from 'vue'; | |
78 | 79 | import { BasicForm, useForm } from '/@/components/Form/index'; |
79 | 80 | import { Loading } from '/@/components/Loading/index'; |
80 | 81 | import { Card, Upload, Input, Modal } from 'ant-design-vue'; |
... | ... | @@ -86,7 +87,9 @@ |
86 | 87 | import { getAppDesign, updateAppDesign } from '/@/api/oem/index'; |
87 | 88 | import { Authority } from '/@/components/Authority'; |
88 | 89 | import ContentUploadText from './ContentUploadText.vue'; |
89 | - import { CustomUploadComp } from './customUplaod/index'; | |
90 | + // import { CustomUploadComp } from './customUplaod/index'; | |
91 | + import { buildUUID } from '/@/utils/uuid'; | |
92 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
90 | 93 | |
91 | 94 | export default defineComponent({ |
92 | 95 | components: { |
... | ... | @@ -99,7 +102,7 @@ |
99 | 102 | Modal, |
100 | 103 | Authority, |
101 | 104 | ContentUploadText, |
102 | - CustomUploadComp, | |
105 | + // CustomUploadComp, | |
103 | 106 | }, |
104 | 107 | setup() { |
105 | 108 | const loading = ref(false); |
... | ... | @@ -193,19 +196,42 @@ |
193 | 196 | } |
194 | 197 | }; |
195 | 198 | |
199 | + const deleteHomeUrl = ref<any[]>([]); | |
200 | + const handleRemove = (file: FileItem) => { | |
201 | + deleteHomeUrl.value.push(file.url); | |
202 | + }; | |
203 | + | |
196 | 204 | const handleUpdateInfo = async () => { |
197 | 205 | try { |
198 | 206 | const fieldValue = getFieldsValue(); |
207 | + if (Reflect.has(fieldValue, 'logo')) { | |
208 | + const file = (fieldValue.logo || []).at(0) || {}; | |
209 | + fieldValue.logo = file.url || ''; | |
210 | + } | |
211 | + if (Reflect.has(fieldValue, 'background')) { | |
212 | + const file = (fieldValue.background || []).at(0) || {}; | |
213 | + fieldValue.background = file.url || ''; | |
214 | + } | |
199 | 215 | // 做换字段 |
200 | 216 | const homeSwiper = fileList.value.map((item) => item.url); |
201 | 217 | const rotation = homeSwiper.join(','); |
202 | 218 | |
203 | 219 | compState.value.loading = true; |
220 | + if (Reflect.has(fieldValue, 'deleteLogoUrl')) { | |
221 | + await deleteFilePath(fieldValue?.deleteLogoUrl); | |
222 | + Reflect.deleteProperty(fieldValue, 'deleteLogoUrl'); | |
223 | + } | |
224 | + if (Reflect.has(fieldValue, 'deleteBackgroundUrl')) { | |
225 | + await deleteFilePath(fieldValue?.deleteBackgroundUrl); | |
226 | + Reflect.deleteProperty(fieldValue, 'deleteBackgroundUrl'); | |
227 | + } | |
228 | + if (unref(deleteHomeUrl)?.length) { | |
229 | + await Promise.all(unref(deleteHomeUrl).map((item) => deleteFilePath(item))); | |
230 | + } | |
204 | 231 | await updateAppDesign({ |
205 | 232 | ...fieldValue, |
206 | - background: unref(bgPic), | |
207 | - icon: unref(bgPic), | |
208 | - logo: unref(logoPic), | |
233 | + background: fieldValue.background || '', | |
234 | + logo: fieldValue.logo || '', | |
209 | 235 | rotation, |
210 | 236 | }); |
211 | 237 | compState.value.loading = false; |
... | ... | @@ -227,9 +253,15 @@ |
227 | 253 | status: 'done', |
228 | 254 | }); |
229 | 255 | } |
256 | + if (res.logo) { | |
257 | + res.logo = [{ uid: buildUUID(), name: 'name', url: res.logo } as FileItem]; | |
258 | + } | |
259 | + if (res.background) { | |
260 | + res.background = [{ uid: buildUUID(), name: 'name', url: res.background } as FileItem]; | |
261 | + } | |
230 | 262 | setFieldsValue(res); |
231 | - logoPic.value = res.logo; | |
232 | - bgPic.value = res.background; | |
263 | + // logoPic.value = res.logo; | |
264 | + // bgPic.value = res.background; | |
233 | 265 | if (arr[0]?.url === '') return; |
234 | 266 | fileList.value = arr; |
235 | 267 | }); |
... | ... | @@ -252,8 +284,8 @@ |
252 | 284 | }); |
253 | 285 | } |
254 | 286 | setFieldsValue(res); |
255 | - logoPic.value = res.logo; | |
256 | - bgPic.value = res.background; | |
287 | + // logoPic.value = res.logo; | |
288 | + // bgPic.value = res.background; | |
257 | 289 | if (arr[0]?.url === '') return; |
258 | 290 | fileList.value = arr; |
259 | 291 | } catch (e) { |
... | ... | @@ -271,8 +303,8 @@ |
271 | 303 | customUploadHomeSwiper, |
272 | 304 | beforeUploadHomeSwiper, |
273 | 305 | handleChange, |
274 | - logoPic, | |
275 | - bgPic, | |
306 | + // logoPic, | |
307 | + // bgPic, | |
276 | 308 | previewVisible, |
277 | 309 | previewImage, |
278 | 310 | loading, |
... | ... | @@ -280,6 +312,7 @@ |
280 | 312 | handleResetInfo, |
281 | 313 | handleSetBgImgUrl, |
282 | 314 | handleSetLogoImgUrl, |
315 | + handleRemove, | |
283 | 316 | }; |
284 | 317 | }, |
285 | 318 | }); | ... | ... |
... | ... | @@ -74,13 +74,13 @@ |
74 | 74 | </template> |
75 | 75 | |
76 | 76 | <script lang="ts"> |
77 | - import { defineComponent, ref, onMounted, unref } from 'vue'; | |
77 | + import { defineComponent, ref, onMounted } from 'vue'; | |
78 | 78 | import { Card, Upload, Input, Spin } from 'ant-design-vue'; |
79 | 79 | import { BasicForm, useForm } from '/@/components/Form/index'; |
80 | 80 | import { schemas } from '../config/CVIDraw.config'; |
81 | 81 | import { Loading } from '/@/components/Loading/index'; |
82 | 82 | import { useMessage } from '/@/hooks/web/useMessage'; |
83 | - import type { FileItem } from '/@/components/Upload/src/typing'; | |
83 | + // import type { FileItem } from '/@/components/Upload/src/typing'; | |
84 | 84 | import { iconUpload, getPlatForm, updatePlatForm, resetPlateInfo } from '/@/api/oem/index'; |
85 | 85 | import { PlusOutlined, CloseCircleOutlined } from '@ant-design/icons-vue'; |
86 | 86 | import { useUserStore } from '/@/store/modules/user'; |
... | ... | @@ -88,6 +88,9 @@ |
88 | 88 | import { Authority } from '/@/components/Authority'; |
89 | 89 | import ContentUploadText from './ContentUploadText.vue'; |
90 | 90 | import { CustomUploadComp } from './customUplaod/index'; |
91 | + import { buildUUID } from '/@/utils/uuid'; | |
92 | + import { FileItem } from '../types'; | |
93 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
91 | 94 | |
92 | 95 | export default defineComponent({ |
93 | 96 | components: { |
... | ... | @@ -166,18 +169,42 @@ |
166 | 169 | const handleUpdateInfo = async () => { |
167 | 170 | try { |
168 | 171 | const fieldValue = getFieldsValue(); |
172 | + if (Reflect.has(fieldValue, 'logo')) { | |
173 | + const file = (fieldValue.logo || []).at(0) || {}; | |
174 | + fieldValue.logo = file.url || null; | |
175 | + } | |
176 | + if (Reflect.has(fieldValue, 'icon')) { | |
177 | + const file = (fieldValue.icon || []).at(0) || {}; | |
178 | + fieldValue.icon = file.url || null; | |
179 | + } | |
180 | + if (Reflect.has(fieldValue, 'background')) { | |
181 | + const file = (fieldValue.background || []).at(0) || {}; | |
182 | + fieldValue.background = file.url || null; | |
183 | + } | |
169 | 184 | compState.value.loading = true; |
170 | - const newFieldValue = { | |
185 | + if (Reflect.has(fieldValue, 'deleteLogoUrl')) { | |
186 | + await deleteFilePath(fieldValue?.deleteLogoUrl); | |
187 | + Reflect.deleteProperty(fieldValue, 'deleteLogoUrl'); | |
188 | + } | |
189 | + if (Reflect.has(fieldValue, 'deleteIconUrl')) { | |
190 | + await deleteFilePath(fieldValue?.deleteIconUrl); | |
191 | + Reflect.deleteProperty(fieldValue, 'deleteIconUrl'); | |
192 | + } | |
193 | + if (Reflect.has(fieldValue, 'deleteBackgroundUrl')) { | |
194 | + await deleteFilePath(fieldValue?.deleteBackgroundUrl); | |
195 | + Reflect.deleteProperty(fieldValue, 'deleteBackgroundUrl'); | |
196 | + } | |
197 | + | |
198 | + await updatePlatForm({ | |
171 | 199 | ...fieldValue, |
172 | - logo: unref(logoPic), | |
173 | - icon: unref(iconPic), | |
174 | - background: unref(bgPic), | |
175 | - }; | |
176 | - await updatePlatForm(newFieldValue); | |
200 | + logo: fieldValue.logo || '', | |
201 | + icon: fieldValue.icon || '', | |
202 | + background: fieldValue.background || '', | |
203 | + }); | |
177 | 204 | compState.value.loading = false; |
178 | 205 | createMessage.success('保存信息成功'); |
179 | 206 | |
180 | - setPlatFormInfo(newFieldValue); | |
207 | + setPlatFormInfo(fieldValue); | |
181 | 208 | } catch (e) { |
182 | 209 | createMessage.error('保存信息失败'); |
183 | 210 | } |
... | ... | @@ -197,6 +224,15 @@ |
197 | 224 | |
198 | 225 | onMounted(async () => { |
199 | 226 | const res = await getPlatForm(); |
227 | + if (res.logo) { | |
228 | + res.logo = [{ uid: buildUUID(), name: 'name', url: res.logo }] as any; | |
229 | + } | |
230 | + if (res.icon) { | |
231 | + res.icon = [{ uid: buildUUID(), name: 'name', url: res.icon }] as any; | |
232 | + } | |
233 | + if (res.background) { | |
234 | + res.background = [{ uid: buildUUID(), name: 'name', url: res.background }] as any; | |
235 | + } | |
200 | 236 | setFieldsValue(res); |
201 | 237 | logoPic.value = res.logo; |
202 | 238 | iconPic.value = res.icon; | ... | ... |
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <div class="card"> |
3 | 3 | <Card :bordered="false" class="card"> |
4 | 4 | <BasicForm @register="registerForm"> |
5 | - <template #qrcode> | |
5 | + <!-- <template #qrcode> | |
6 | 6 | <ContentUploadText> |
7 | 7 | <template #uploadImg> |
8 | 8 | <CustomUploadComp :imgUrl="qrcodePic" @setImg="handleSetCodeImgUrl" /> |
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | <div class="box-outline"> 支持.PNG、.JPG格式,建议尺寸为300*300px,大小不超过5M </div> |
12 | 12 | </template> |
13 | 13 | </ContentUploadText> |
14 | - </template> | |
14 | + </template> --> | |
15 | 15 | <template #customProv> |
16 | 16 | <BasicForm @register="registerCustomForm" /> |
17 | 17 | </template> |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | </template> |
32 | 32 | |
33 | 33 | <script lang="ts"> |
34 | - import { defineComponent, onMounted, ref, computed, watch } from 'vue'; | |
34 | + import { defineComponent, onMounted, ref, computed } from 'vue'; | |
35 | 35 | import { Card } from 'ant-design-vue'; |
36 | 36 | import { BasicForm, useForm } from '/@/components/Form/index'; |
37 | 37 | import { schemas, provSchemas } from '../config/enterPriseInfo.config'; |
... | ... | @@ -43,8 +43,11 @@ |
43 | 43 | import { Authority } from '/@/components/Authority'; |
44 | 44 | import { USER_INFO_KEY } from '/@/enums/cacheEnum'; |
45 | 45 | import { getAuthCache } from '/@/utils/auth'; |
46 | - import ContentUploadText from './ContentUploadText.vue'; | |
47 | - import { CustomUploadComp } from './customUplaod/index'; | |
46 | + // import ContentUploadText from './ContentUploadText.vue'; | |
47 | + // import { CustomUploadComp } from './customUplaod/index'; | |
48 | + import { buildUUID } from '/@/utils/uuid'; | |
49 | + import { FileItem } from '../types'; | |
50 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
48 | 51 | |
49 | 52 | export default defineComponent({ |
50 | 53 | components: { |
... | ... | @@ -52,8 +55,8 @@ |
52 | 55 | BasicForm, |
53 | 56 | Loading, |
54 | 57 | Authority, |
55 | - ContentUploadText, | |
56 | - CustomUploadComp, | |
58 | + // ContentUploadText, | |
59 | + // CustomUploadComp, | |
57 | 60 | }, |
58 | 61 | setup() { |
59 | 62 | const userInfo: any = getAuthCache(USER_INFO_KEY); |
... | ... | @@ -73,11 +76,8 @@ |
73 | 76 | loading: false, |
74 | 77 | tip: '拼命加载中...', |
75 | 78 | }); |
76 | - const [ | |
77 | - registerForm, | |
78 | - { getFieldsValue, setFieldsValue, validate, clearValidate, validateFields }, | |
79 | - ] = useForm({ | |
80 | - labelWidth: 80, | |
79 | + const [registerForm, { getFieldsValue, setFieldsValue, validate, clearValidate }] = useForm({ | |
80 | + labelWidth: 90, | |
81 | 81 | schemas, |
82 | 82 | showResetButton: false, |
83 | 83 | showSubmitButton: false, |
... | ... | @@ -100,26 +100,30 @@ |
100 | 100 | |
101 | 101 | const { createMessage } = useMessage(); |
102 | 102 | |
103 | - const qrcodePic = ref(); | |
104 | - const handleSetCodeImgUrl = (d) => { | |
105 | - qrcodePic.value = d; | |
106 | - }; | |
107 | - watch( | |
108 | - () => qrcodePic.value, | |
109 | - (newValue) => { | |
110 | - if (!newValue) validateFields(['qrcode']); | |
111 | - else clearValidate('qrcode'); | |
112 | - } | |
113 | - ); | |
103 | + // const qrcodePic = ref(); | |
104 | + // const handleSetCodeImgUrl = (d) => { | |
105 | + // qrcodePic.value = d; | |
106 | + // }; | |
107 | + // watch( | |
108 | + // () => qrcodePic.value, | |
109 | + // (newValue) => { | |
110 | + // if (!newValue) validateFields(['qrcode']); | |
111 | + // else clearValidate('qrcode'); | |
112 | + // } | |
113 | + // ); | |
114 | 114 | // 更新 |
115 | 115 | const handleUpdateInfo = async () => { |
116 | 116 | try { |
117 | 117 | const fieldsValue = getFieldsValue(); |
118 | 118 | const { nameTown } = getNameTown(); |
119 | + if (Reflect.has(fieldsValue, 'qrCode')) { | |
120 | + const file = (fieldsValue.qrCode || []).at(0) || {}; | |
121 | + fieldsValue.qrCode = file.url || null; | |
122 | + } | |
119 | 123 | const newFieldValue: any = { |
120 | 124 | ...fieldsValue, |
121 | 125 | codeTown: nameTown, |
122 | - qrCode: qrcodePic.value, | |
126 | + // qrCode: qrcodePic.value, | |
123 | 127 | }; |
124 | 128 | delete newFieldValue.nameProv; |
125 | 129 | delete newFieldValue.nameCity; |
... | ... | @@ -139,9 +143,9 @@ |
139 | 143 | 'id', |
140 | 144 | ]; |
141 | 145 | if (newFieldValue.qrCode == undefined || newFieldValue.qrCode == '') { |
142 | - validateArray.push('qrcode'); | |
146 | + validateArray.push('qrCode'); | |
143 | 147 | } else { |
144 | - const findExistIndex = validateArray.findIndex((o) => o == 'qrcode'); | |
148 | + const findExistIndex = validateArray.findIndex((o) => o == 'qrCode'); | |
145 | 149 | if (findExistIndex !== -1) { |
146 | 150 | validateArray.splice(findExistIndex, 1); |
147 | 151 | } |
... | ... | @@ -158,6 +162,10 @@ |
158 | 162 | const values = await validate(validateArray); |
159 | 163 | if (!values) return; |
160 | 164 | compState.value.loading = true; |
165 | + if (Reflect.has(newFieldValue, 'deleteUrl')) { | |
166 | + await deleteFilePath(newFieldValue?.deleteUrl); | |
167 | + Reflect.deleteProperty(newFieldValue, 'deleteUrl'); | |
168 | + } | |
161 | 169 | await updateEnterPriseDetail(newFieldValue); |
162 | 170 | createMessage.success('更新信息成功'); |
163 | 171 | setEnterPriseInfo(newFieldValue); |
... | ... | @@ -189,19 +197,22 @@ |
189 | 197 | }); |
190 | 198 | setFieldsValue({ nameCountry: codeCountry }); |
191 | 199 | } |
192 | - setFieldsValue(res); | |
193 | - qrcodePic.value = res.qrCode; | |
200 | + if (res.qrCode) { | |
201 | + res.qrCode = [{ uid: buildUUID(), name: 'name', url: res.qrCode } as FileItem]; | |
202 | + } | |
203 | + setFieldsValue({ ...res, qrcode: res.qrCode }); | |
204 | + // qrcodePic.value = res.qrCode; | |
194 | 205 | }); |
195 | 206 | |
196 | 207 | return { |
197 | 208 | registerForm, |
198 | 209 | compState, |
199 | - qrcodePic, | |
200 | 210 | handleUpdateInfo, |
201 | 211 | registerCustomForm, |
202 | 212 | loading, |
203 | 213 | isWhereAdmin, |
204 | - handleSetCodeImgUrl, | |
214 | + // qrcodePic, | |
215 | + // handleSetCodeImgUrl, | |
205 | 216 | }; |
206 | 217 | }, |
207 | 218 | }); | ... | ... |
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | import { useMessage } from '/@/hooks/web/useMessage'; |
21 | 21 | import { FileItem } from '/@/components/Form/src/components/ApiUpload.vue'; |
22 | 22 | import { buildUUID } from '/@/utils/uuid'; |
23 | + import { deleteFilePath } from '/@/api/oss/ossFileUploader'; | |
23 | 24 | |
24 | 25 | export default defineComponent({ |
25 | 26 | name: 'TenantDrawer', |
... | ... | @@ -102,6 +103,10 @@ |
102 | 103 | entityType: 'TENANT_PROFILE', |
103 | 104 | }, |
104 | 105 | }; |
106 | + if (Reflect.has(values, 'deleteUrl')) { | |
107 | + await deleteFilePath(values?.deleteUrl); | |
108 | + Reflect.deleteProperty(values, 'deleteUrl'); | |
109 | + } | |
105 | 110 | await updateOrCreateTenant(req); |
106 | 111 | emit('success'); |
107 | 112 | createMessage.success(`${unref(isUpdate) ? '编辑' : '新增'}成功`); | ... | ... |
... | ... | @@ -83,7 +83,7 @@ export const tenantFormSchema: FormSchema[] = [ |
83 | 83 | component: 'ApiUpload', |
84 | 84 | changeEvent: 'update:fileList', |
85 | 85 | valueField: 'fileList', |
86 | - componentProps: () => { | |
86 | + componentProps: ({ formModel }) => { | |
87 | 87 | return { |
88 | 88 | listType: 'picture-card', |
89 | 89 | maxFileLimit: 1, |
... | ... | @@ -105,10 +105,19 @@ export const tenantFormSchema: FormSchema[] = [ |
105 | 105 | onPreview: (fileList: FileItem) => { |
106 | 106 | createImgPreview({ imageList: [fileList.url!] }); |
107 | 107 | }, |
108 | + onDelete(url: string) { | |
109 | + formModel.deleteUrl = url!; | |
110 | + }, | |
108 | 111 | }; |
109 | 112 | }, |
110 | 113 | }, |
111 | 114 | { |
115 | + field: 'deleteUrl', | |
116 | + label: '', | |
117 | + component: 'Input', | |
118 | + show: false, | |
119 | + }, | |
120 | + { | |
112 | 121 | field: 'name', |
113 | 122 | label: '租户名称', |
114 | 123 | required: true, | ... | ... |