表单里的上传文件和信息填写

yfy
严飞永 2 months ago
parent 5c5db9bbd8
commit 2666c8fb25

@ -50,31 +50,9 @@ const list = [
type: "input", type: "input",
prop: "isZjhlwip", prop: "isZjhlwip",
dict: "is_no" dict: "is_no"
}, }];
{
key: "key", const list00 = [
label: "关联域名",
type: "input",
prop: "key",
},
{
key: "ymdqsj",
label: "域名到期时间",
type: "date",
prop: "ymdqsj",
},
{
key: "ymdqsj",
label: "关联IP",
type: "input",
prop: "ymdqsj",
},
{
key: "ymtxrXm",
label: "到期提醒人",
type: "input2",
prop: "ymtxrXm",
},
{ {
key: "xtzyx", key: "xtzyx",
label: "系统重要性", label: "系统重要性",
@ -156,32 +134,33 @@ const list = [
prop: "akyx", prop: "akyx",
dict: "zc_c_i_a" dict: "zc_c_i_a"
}, },
{ // {
key: "chl", // key: "chl",
label: "存活率", // label: "存活率",
type: "select", // type: "select",
prop: "chl", // prop: "chl",
dict: "zc_c_i_a" // dict: "zc_c_i_a"
}, // },
{ // {
key: "dlwz", // key: "dlwz",
label: "地理位置", // label: "地理位置",
type: "cascader", // type: "cascader",
prop: "dlwz", // prop: "dlwz",
options: "options" // size: "large",
}, // },
{ // {
key: "jd", // key: "jd",
label: "经度", // label: "经度",
type: "input", // type: "input",
prop: "jd", // prop: "jd",
}, // },
{ // {
key: "wd", // key: "wd",
label: "纬度", // label: "纬度",
type: "input", // type: "input",
prop: "wd", // prop: "wd",
}]; // }
];
const list01 = [ const list01 = [
{ {
key: "xttz", key: "xttz",
@ -1736,7 +1715,7 @@ const list26 = [
label: "", label: "",
type: "file", type: "file",
prop: "ywxttpwj", prop: "ywxttpwj",
accept: "xls,xlsx,doc,docx,pdf,rar,zip,pcap,txt", accept:['xls','xlsx','doc','docx','pdf','rar','zip','pcap','txt'],
limit: 1, limit: 1,
fileSize: 30, fileSize: 30,
description: "附件上传支持xls、xlsx、doc、docx、pdf、rar、zip、pcap、txt、最多上传1个文件每个不超过30M" description: "附件上传支持xls、xlsx、doc、docx、pdf、rar、zip、pcap、txt、最多上传1个文件每个不超过30M"
@ -1746,7 +1725,7 @@ const list26 = [
label: "", label: "",
type: "image", type: "image",
prop: "ywxttpt", prop: "ywxttpt",
accept: "jpg,jpeg,png", accept: ["jpg,jpeg,png"],
limit: 1, limit: 1,
fileSize: 30, fileSize: 30,
description: "图片上传支持jpg、jpeg、png、最多上传1张图片每个不超过30M" description: "图片上传支持jpg、jpeg、png、最多上传1张图片每个不超过30M"
@ -1789,6 +1768,7 @@ const listRules = {
dgzkf: [{ required: true, message: "请填写", trigger: "change" }], dgzkf: [{ required: true, message: "请填写", trigger: "change" }],
xgywYwms: [{ required: true, message: "请填写", trigger: "blur" }], xgywYwms: [{ required: true, message: "请填写", trigger: "blur" }],
fgfzrxm: [{ required: true, message: "请填写", trigger: "blur" }], fgfzrxm: [{ required: true, message: "请填写", trigger: "blur" }],
fgfzr: [{ required: true, message: "请填写", trigger: "blur" }],
fgfzrlxfs: [{ required: true, message: "请填写", trigger: "blur" }, fgfzrlxfs: [{ required: true, message: "请填写", trigger: "blur" },
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
@ -1814,7 +1794,15 @@ const listRules = {
message: '请输入正确的邮箱地址', message: '请输入正确的邮箱地址',
trigger: ['blur', 'change'] trigger: ['blur', 'change']
}], }],
lxr: [{ required: true, message: "请填写", trigger: "blur" }],
dylxrxm: [{ required: true, message: "请填写", trigger: "blur" }], dylxrxm: [{ required: true, message: "请填写", trigger: "blur" }],
lxdh: [{ required: true, message: "请填写", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur'
}
],
dylxrlxfs: [{ required: true, message: "请填写", trigger: "blur" }, dylxrlxfs: [{ required: true, message: "请填写", trigger: "blur" },
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
@ -1864,6 +1852,7 @@ const listRules = {
dbxxDbdj: [{ required: true, message: "请填写", trigger: "change" }], dbxxDbdj: [{ required: true, message: "请填写", trigger: "change" }],
dbxxDjsj: [{ required: true, message: "请填写", trigger: "change" }], dbxxDjsj: [{ required: true, message: "请填写", trigger: "change" }],
dbxxCpdf: [{ required: true, message: "请填写", trigger: "blur" }], dbxxCpdf: [{ required: true, message: "请填写", trigger: "blur" }],
sjzcSjklx: [{ required: true, message: "请填写", trigger: "change" }],
dbxxSfydsfcp: [{ required: true, message: "请填写", trigger: "change" }], dbxxSfydsfcp: [{ required: true, message: "请填写", trigger: "change" }],
sfCpjglxrdh: [{ sfCpjglxrdh: [{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
@ -1890,6 +1879,20 @@ const listRules = {
message: '请输入正确格式的18位统一社会信用代码', message: '请输入正确格式的18位统一社会信用代码',
trigger: 'blur' trigger: 'blur'
}], }],
tyshxydm: [{ required: true, message: "请填写", trigger: "blur" },
{
pattern: /^[a-zA-Z0-9]{18}$/,
message: '请输入正确格式的18位统一社会信用代码',
trigger: 'blur'
}
],
xtyyUnit: [{ required: true, message: "请填写", trigger: "blur" },
{
pattern: /^[a-zA-Z0-9]{18}$/,
message: '请输入正确格式的18位统一社会信用代码',
trigger: 'blur'
}
],
jfywUnit: [{ jfywUnit: [{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: '请输入正确的手机号码', message: '请输入正确的手机号码',
@ -1962,7 +1965,10 @@ const listRules = {
sjzcCj: [{ required: true, message: "请填写", trigger: "change" }], sjzcCj: [{ required: true, message: "请填写", trigger: "change" }],
sjzcSjfjfl: [{ required: true, message: "请填写", trigger: "change" }], sjzcSjfjfl: [{ required: true, message: "请填写", trigger: "change" }],
sjzcSjzycd: [{ required: true, message: "请填写", trigger: "change" }], sjzcSjzycd: [{ required: true, message: "请填写", trigger: "change" }],
yjbsxx: [{ required: true, message: "请填写", trigger: "blur" }],
gyszcdz: [{ required: true, message: "请填写", trigger: "blur" }],
sfwtc: [{ required: true, message: "请填写", trigger: "change" }],
}; };
console.log(list); console.log(list);
export { list,list01,list02, list2, list3, list4, list5, list501, list6, list7, list8, list9, list10, list11, list12, list13,list1301,list1302,list1303,list1304,list1305,list1306, list14, list15, list16, list17, list18, list19, list20, list21, list22, list23, list24, list25,list26, listRules }; export { list,list00,list01,list02, list2, list3, list4, list5, list501, list6, list7, list8, list9, list10, list11, list12, list13,list1301,list1302,list1303,list1304,list1305,list1306, list14, list15, list16, list17, list18, list19, list20, list21, list22, list23, list24, list25,list26, listRules };

File diff suppressed because it is too large Load Diff

@ -0,0 +1,226 @@
<template>
<div class="upload-file">
<el-upload
multiple
v-show="fileList.length == 0"
:action="uploadFileUrl"
:before-upload="handleBeforeUpload"
:file-list="fileList"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
:on-success="handleUploadSuccess"
:show-file-list="false"
:headers="headers"
class="upload-file-uploader"
ref="fileUpload"
>
<!-- 上传按钮 -->
<slot v-if="fileList.length == 0"></slot>
</el-upload>
<!-- 文件列表 -->
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link>
<div class="ele-upload-list__item-content-action" v-if="$route.query.pageType != 'look'">
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
</div>
</li>
</transition-group>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
export default {
name: "FileUpload",
props: {
//
value: [String, Object, Array],
//
limit: {
type: Number,
default: 5,
},
// (MB)
fileSize: {
type: Number,
default: 5,
},
// , ['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ["doc", "xls", "ppt", "txt", "pdf"],
},
//
isShowTip: {
type: Boolean,
default: true
}
},
data() {
return {
number: 0,
uploadList: [],
baseUrl: process.env.VUE_APP_BASE_API,
// baseUrl: location.origin + '/api',
uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
// uploadFileUrl: location.origin + '/api/common/upload',
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: [],
};
},
watch: {
value: {
handler(val) {
if (val) {
let temp = 1;
//
const list = Array.isArray(val) ? val : this.value.split(',');
//
this.fileList = list.map(item => {
if (typeof item === "string") {
item = { name: item, url: item };
}
item.uid = item.uid || new Date().getTime() + temp++;
return item;
});
} else {
this.fileList = [];
return [];
}
},
deep: true,
immediate: true
}
},
computed: {
//
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
},
methods: {
//
handleBeforeUpload(file) {
//
if (this.fileType) {
const fileName = file.name.split('.');
const fileExt = fileName[fileName.length - 1];
const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
if (!isTypeOk) {
this.$modal.msgError(`文件格式不正确,请上传${this.fileType.join("/")}格式文件!`);
return false;
}
}
//
if (file.name.includes(',')) {
this.$modal.msgError('文件名不正确,不能包含英文逗号!');
return false;
}
//
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
this.$modal.loading("正在上传文件,请稍候...");
this.number++;
return true;
},
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
},
//
handleUploadError(err) {
this.$modal.msgError("上传文件失败,请重试");
this.$modal.closeLoading();
},
//
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push({ name: res.fileName, url: res.fileName });
this.uploadedSuccessfully();
} else if(res.code == 401) {
this.$store.dispatch('LogOut').then(() => {
// location.href = '/login';
this.$modal.msgError(res.msg);
this.$modal.closeLoading();
this.uploadedSuccessfully();
this.$router.replace("/login");
})
} else {
this.number--;
this.$modal.closeLoading();
this.$modal.msgError(res.msg);
this.$refs.fileUpload.handleRemove(file);
this.uploadedSuccessfully();
}
},
//
handleDelete(index) {
this.fileList.splice(index, 1);
this.$emit("input", this.listToString(this.fileList));
},
//
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
},
//
getFileName(name) {
// url
if (name.lastIndexOf("/") > -1) {
return name.slice(name.lastIndexOf("/") + 1);
} else {
return name;
}
},
//
listToString(list, separator) {
let strs = "";
separator = separator || ",";
for (let i in list) {
strs += list[i].url + separator;
}
return strs != '' ? strs.substr(0, strs.length - 1) : '';
}
}
};
</script>
<style scoped lang="scss">
.upload-file-uploader {
margin-bottom: 5px;
}
.upload-file-list .el-upload-list__item {
border: 1px solid #e4e7ed;
line-height: 2;
margin-bottom: 10px;
position: relative;
}
.upload-file-list .ele-upload-list__item-content {
display: flex;
justify-content: space-between;
align-items: center;
color: inherit;
}
.ele-upload-list__item-content-action .el-link {
margin-right: 10px;
}
</style>
Loading…
Cancel
Save