| | |
| | | toubiaoEndDate: "", // 投标报名结束时间(必填,格式:yyyy-MM-dd HH:mm:ss) |
| | | kaibiaoDate: "", // 开标时间(必填,格式:yyyy-MM-dd HH:mm:ss) |
| | | zhaobiaowenjian: "", // 招标文件(必填,长度1-512字符) |
| | | zhaobiaowenjianName: "", |
| | | biangengwenjian: "", |
| | | fujian: "", // 附件(可选,最大长度512字符,可为空) |
| | | kaibiaodidian: "" // 开标地点(必填,长度1-250字符) |
| | | }), |
| | | isChange: null |
| | | isChange: null, |
| | | changeDetail: null |
| | | }); |
| | | |
| | | const gonggaoRules = reactive({ |
| | | interface FormInlineType { |
| | | // 项目标题 |
| | | projectName: string | null | undefined; |
| | | // 投标报名开始时间(通常为ISO日期字符串格式) |
| | | toubiaoStartDate: string | null | undefined; |
| | | // 投标报名结束时间 |
| | | toubiaoEndDate: string | null | undefined; |
| | | // 开标时间 |
| | | kaibiaoDate: string | null | undefined; |
| | | // 招标文件(可能是文件路径、ID或文件对象) |
| | | zhaobiaowenjian: string | null | undefined; |
| | | // 招标文件名(可能是文件路径、ID或文件对象) |
| | | zhaobiaowenjianName?: string | null | undefined; |
| | | // 变更文件 |
| | | biangengwenjian: string | null | undefined; |
| | | // 变更文件 |
| | | biangengwenjianName?: string | null | undefined; |
| | | // 附件(文本描述或路径) |
| | | fujian: string | null | undefined; |
| | | // 开标地点 |
| | | kaibiaodidian: string | null | undefined; |
| | | } |
| | | const gonggaoRules = reactive<FormRules<FormInlineType>>({ |
| | | projectName: [{ required: true, message: "请输入标题", trigger: "change" }], |
| | | toubiaoStartDate: [ |
| | | { required: true, message: "请选择投标报名开始时间", trigger: "change" } |
| | |
| | | fetchCredentials(file); |
| | | // upload.value!.submit(); |
| | | }; |
| | | const handleChangeFile = file => { |
| | | console.log(file); |
| | | |
| | | if (file.status !== "ready") return; |
| | | // let suffName = file.name.substring(file.name.lastIndexOf(".") + 1); |
| | | // const extension = suffName === "pdf"; |
| | | // // const isLt10M = file.size / 1024 / 1024 < 10; |
| | | // if (!extension) { |
| | | // message(`仅支持pdf格式,请上传pdf`, { |
| | | // type: "error" |
| | | // }); |
| | | // validateForm.fileList = []; |
| | | // return false; |
| | | // } |
| | | // fetchCredentials(file); |
| | | // upload.value!.submit(); |
| | | }; |
| | | // state.formDataNew = { |
| | | // policy: res.result.policy, //表单域 |
| | | // "x-oss-signature-version": res.result.x_oss_signature_version, //指定签名的版本和算法 |
| | |
| | | let res = await getUploadToken(); |
| | | if (res.code == 200) { |
| | | let keyVal = generateTimestampWithRandom(res.result.DirPath, file.name); |
| | | let upUrl = res.result.url; |
| | | let upPath = res.result.DirPath; |
| | | let formData = new FormData(); |
| | | formData.append("policy", res.result.policy); |
| | | formData.append( |
| | |
| | | formData.append("key", keyVal); // 文件名 |
| | | formData.append("file", file.raw); // file 必须为最后一个表单域 |
| | | uploadFileAli(formData, res.result.url).then(res => { |
| | | let path = res.result.url + "/" + res.result.DirPath + keyVal; |
| | | console.log(path); |
| | | |
| | | let path = `${upUrl}${keyVal}`; |
| | | if (props.isChange) { |
| | | newFormInline.value.biangengwenjian = path; |
| | | newFormInline.value.biangengwenjianName = file.name; |
| | | } else { |
| | | newFormInline.value.zhaobiaowenjian = path; |
| | | newFormInline.value.zhaobiaowenjianName = file.name; |
| | | } |
| | | }); |
| | | } |
| | | }; |
| | | const defaultTime = new Date(2000, 1, 1, 9, 30, 0); |
| | | const beforeAvatarUpload: UploadProps["beforeUpload"] = rawFile => { |
| | | isLoading.value = true; |
| | | if (rawFile.type !== "application/pdf") { |
| | |
| | | ref="ruleFormRef" |
| | | :model="newFormInline" |
| | | :rules="gonggaoRules" |
| | | label-width="140px" |
| | | :label-width="props.changeDetail ? '50px' : '140px'" |
| | | > |
| | | <el-row :gutter="30"> |
| | | <div v-if="props.isChange"> |
| | | <el-row v-if="props.changeDetail" :gutter="10"> |
| | | <re-col :value="24" :xs="24" :sm="24"> |
| | | <el-form-item label="标题" prop="projectName"> |
| | | <el-input |
| | | v-model="newFormInline.projectName" |
| | | clearable |
| | | placeholder="请输入标题" |
| | | /> |
| | | </el-form-item> |
| | | </re-col> |
| | | </el-row> |
| | | <el-row v-else :gutter="30"> |
| | | <div v-if="props.isChange" style="width: 100%"> |
| | | <re-col :value="24" :xs="24" :sm="24"> |
| | | <el-form-item label="标题" prop="projectName"> |
| | | <el-input |
| | |
| | | v-model="newFormInline.toubiaoStartDate" |
| | | type="datetime" |
| | | clearable |
| | | :default-time="defaultTime" |
| | | placeholder="请选择投标报名开始时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | /> |
| | |
| | | v-model="newFormInline.toubiaoEndDate" |
| | | type="datetime" |
| | | clearable |
| | | :default-time="defaultTime" |
| | | placeholder="请选择投标报名结束时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | /> |
| | |
| | | v-model="newFormInline.kaibiaoDate" |
| | | type="datetime" |
| | | clearable |
| | | :default-time="defaultTime" |
| | | placeholder="请选择开标时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | /> |
| | |
| | | </el-upload> |
| | | </el-form-item> |
| | | </re-col> |
| | | <re-col v-if="!props.isChange" :value="24" :xs="24" :sm="24"> |
| | | <el-form-item label="附件" prop=""> |
| | | <el-upload |
| | | ref="upload" |
| | | v-model:file-list="validateForm.fileList" |
| | | multiple |
| | | :on-exceed="handleExceed" |
| | | :auto-upload="false" |
| | | :on-success="handleAvatarSuccess" |
| | | :before-upload="beforeAvatarUpload" |
| | | :headers="state.headers" |
| | | @change="handleChangeFile" |
| | | > |
| | | <el-button type="primary">点击上传</el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </re-col> |
| | | <re-col :value="24" :xs="24" :sm="24"> |
| | | <el-form-item label="开标地点" prop="kaibiaodidian"> |
| | | <el-input |