|
|
|
|
@ -2,9 +2,10 @@ import formBuilderMap from "./formBuilderMap";
|
|
|
|
|
import { CreateElement, VNode } from "vue";
|
|
|
|
|
import moment from "moment";
|
|
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
|
|
import { deepCopy } from "@/utils/index";
|
|
|
|
|
import axios from 'axios'
|
|
|
|
|
import { flowList } from "@/api/flow"
|
|
|
|
|
import {deepCopy, formatFileSize, formatTime} from "@/utils/index";
|
|
|
|
|
import { uploadSize } from "@/settings";
|
|
|
|
|
import axios from 'axios';
|
|
|
|
|
import { flowList } from "@/api/flow";
|
|
|
|
|
/**
|
|
|
|
|
* @param {String} device 'desktop' or 'mobile'
|
|
|
|
|
* @param {Object} info field参数
|
|
|
|
|
@ -258,18 +259,20 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
'progress-text': "{percent}%",
|
|
|
|
|
'more-config': { maxCount: 1, layout: 'horizontal' },
|
|
|
|
|
'show-button-text': false,
|
|
|
|
|
'limit-size': 20,
|
|
|
|
|
'limit-size': uploadSize / 1024 / 1024, // vxeupload 单位Mb
|
|
|
|
|
'limit-count': info.multiple ? 20 : 1,
|
|
|
|
|
multiple: !!info.multiple,
|
|
|
|
|
readonly: pReadable,
|
|
|
|
|
'upload-method': ({ file }) => {
|
|
|
|
|
const formData = new FormData()
|
|
|
|
|
formData.append('file', file)
|
|
|
|
|
window.$_uploading = true
|
|
|
|
|
return axios.post(process.env.VUE_APP_UPLOAD_API, formData, {
|
|
|
|
|
headers: {
|
|
|
|
|
Authorization: `Bearer ${getToken()}`,
|
|
|
|
|
}
|
|
|
|
|
}).then((response) => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
if (response.status === 200 && !response.data.code) {
|
|
|
|
|
if (!(row[info.name] instanceof Array)) {
|
|
|
|
|
row[info.name] = []
|
|
|
|
|
@ -282,6 +285,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.error("上传失败")
|
|
|
|
|
}
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -299,17 +304,24 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
"application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
|
|
|
multiple: !!info.multiple,
|
|
|
|
|
limit: info.multiple ? 20 : 1,
|
|
|
|
|
fileList: this.form[info.name],
|
|
|
|
|
fileList: this.form[info.name].map(i => {
|
|
|
|
|
if (i.hasOwnProperty('original_name')) {
|
|
|
|
|
i.name = i.original_name
|
|
|
|
|
}
|
|
|
|
|
return i
|
|
|
|
|
}),
|
|
|
|
|
beforeUpload: (file) => {
|
|
|
|
|
if (file.size / 1024 / 1024 > 20) {
|
|
|
|
|
if (file.size > uploadSize) {
|
|
|
|
|
this.$message({
|
|
|
|
|
type: "warning",
|
|
|
|
|
message: "上传图片大小超过20Mb!",
|
|
|
|
|
message: `上传图片大小超过${formatFileSize(uploadSize)}!`,
|
|
|
|
|
});
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
window.$_uploading = true
|
|
|
|
|
},
|
|
|
|
|
onSuccess: (response, file, fileList) => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
fileList.forEach((file) => {
|
|
|
|
|
if (file.response?.data && !file.response?.code) {
|
|
|
|
|
file.response = file.response.data;
|
|
|
|
|
@ -321,6 +333,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
this.form[info.name] = fileList
|
|
|
|
|
},
|
|
|
|
|
onError: (err, file, fileList) => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
this.form[info.name] = fileList
|
|
|
|
|
this.$message({
|
|
|
|
|
type: "warning",
|
|
|
|
|
@ -357,7 +370,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
file.name
|
|
|
|
|
file.original_name || file.name
|
|
|
|
|
),
|
|
|
|
|
]),
|
|
|
|
|
h("i", {
|
|
|
|
|
@ -391,7 +404,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
class: "el-upload__tip",
|
|
|
|
|
slot: "tip",
|
|
|
|
|
},
|
|
|
|
|
"文件不超过20Mb"
|
|
|
|
|
`文件不超过${formatFileSize(uploadSize)}`
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
);
|
|
|
|
|
@ -795,10 +808,11 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
{
|
|
|
|
|
props: {
|
|
|
|
|
value: row[info.name],
|
|
|
|
|
'name-field': 'original_name',
|
|
|
|
|
'progress-text': "{percent}%",
|
|
|
|
|
'more-config': { maxCount: 1, layout: 'horizontal' },
|
|
|
|
|
'show-button-text': false,
|
|
|
|
|
'limit-size': 20,
|
|
|
|
|
'limit-size': uploadSize / 1024 / 1024, //vxe upload单位为Mb
|
|
|
|
|
'limit-count': info.multiple ? 20 : 1,
|
|
|
|
|
readonly: true
|
|
|
|
|
}
|
|
|
|
|
@ -816,7 +830,12 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
accept:
|
|
|
|
|
"application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
|
|
|
multiple: true,
|
|
|
|
|
fileList: (this.form[info.name] instanceof Array) ? this.form[info.name] : [],
|
|
|
|
|
fileList: (this.form[info.name] instanceof Array) ? this.form[info.name].map(i => {
|
|
|
|
|
if (i.hasOwnProperty('original_name')) {
|
|
|
|
|
i.name = i.original_name
|
|
|
|
|
}
|
|
|
|
|
return i
|
|
|
|
|
}) : [],
|
|
|
|
|
},
|
|
|
|
|
scopedSlots: {
|
|
|
|
|
file: (scope) => {
|
|
|
|
|
@ -1086,17 +1105,29 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
accept:
|
|
|
|
|
"application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
|
|
|
multiple: !!info.multiple,
|
|
|
|
|
fileList: row ? row[info.name] : this.form[info.name],
|
|
|
|
|
fileList: row ? row[info.name].map(i => {
|
|
|
|
|
if (i.hasOwnProperty('original_name')) {
|
|
|
|
|
i.name = i.original_name
|
|
|
|
|
}
|
|
|
|
|
return i
|
|
|
|
|
}) : this.form[info.name].map(i => {
|
|
|
|
|
if (i.hasOwnProperty('original_name')) {
|
|
|
|
|
i.name = i.original_name
|
|
|
|
|
}
|
|
|
|
|
return i
|
|
|
|
|
}),
|
|
|
|
|
beforeUpload: (file) => {
|
|
|
|
|
if (file.size / 1024 / 1024 > 20) {
|
|
|
|
|
if (file.size > uploadSize) {
|
|
|
|
|
this.$message({
|
|
|
|
|
type: "warning",
|
|
|
|
|
message: "上传图片大小超过20Mb!",
|
|
|
|
|
message: `上传图片大小超过${formatFileSize(uploadSize)}!`,
|
|
|
|
|
});
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
window.$_uploading = true
|
|
|
|
|
},
|
|
|
|
|
onSuccess: (response, file, fileList) => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
fileList.forEach((file) => {
|
|
|
|
|
if (file.response?.data && !file.response?.code) {
|
|
|
|
|
file.response = file.response.data;
|
|
|
|
|
@ -1108,6 +1139,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
row ? row[info.name] = fileList : this.form[info.name] = fileList;
|
|
|
|
|
},
|
|
|
|
|
onError: (err, file, fileList) => {
|
|
|
|
|
window.$_uploading = false
|
|
|
|
|
row ? row[info.name] = fileList : this.form[info.name] = fileList;
|
|
|
|
|
this.$message({
|
|
|
|
|
type: "warning",
|
|
|
|
|
@ -1183,7 +1215,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
class: "el-upload__tip",
|
|
|
|
|
slot: "tip",
|
|
|
|
|
},
|
|
|
|
|
"文件不超过20Mb"
|
|
|
|
|
`文件不超过${formatFileSize(uploadSize)}`
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
@ -1397,7 +1429,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
file.name
|
|
|
|
|
file.original_name || file.name
|
|
|
|
|
),
|
|
|
|
|
]))
|
|
|
|
|
);
|
|
|
|
|
|