diff --git a/src/components/DialogModel/index.vue b/src/components/DialogModel/index.vue
index 1bb5a2c..b87a0f8 100644
--- a/src/components/DialogModel/index.vue
+++ b/src/components/DialogModel/index.vue
@@ -65,6 +65,7 @@ export default {
left: 50% !important;
transform: translate(-50%, -50%) !important;
max-height: 100vh !important;
+ // 使用变量
min-height: 100vh;
.el-dialog__body {
flex: 1;
diff --git a/src/components/DialogModelNew/index.vue b/src/components/DialogModelNew/index.vue
new file mode 100644
index 0000000..ad7e0a1
--- /dev/null
+++ b/src/components/DialogModelNew/index.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/UploadImg/index.vue b/src/components/UploadImg/index.vue
index b06fddd..8e07396 100644
--- a/src/components/UploadImg/index.vue
+++ b/src/components/UploadImg/index.vue
@@ -100,9 +100,6 @@ export default {
methods: {
// 删除
async handleRemove(file, fileList) {
- // const deleteFile = {
- // filePath: '',
- // }
if (file.response && file.response.data.length > 0) {
this.$emit('deleteFile', { filePath: file.response.data[0].filePath, isNew: true })
} else {
@@ -113,12 +110,6 @@ export default {
}
}
this.$emit('update:fileList', fileList)
- // const res = await deleteImgAPI(deleteFile)
- // if (res.code === 200) {
- // this.$emit('update:fileList', fileList)
- // } else {
- // this.$modal.msgError('删除失败')
- // }
},
// 预览
@@ -146,18 +137,31 @@ export default {
// 上传前
handleBeforeUpload(file) {
- const isFormat = this.fileType.some((e) => file.type.includes(e))
+ // 根据file的name的后缀判断是否符合要求
+ console.log(file, 'file')
+ const isFormat = this.fileType.some((e) => file.name.endsWith(e))
if (!isFormat) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join('、')}格式的文件!`)
return false
}
- // const isLt = file.size / 1024 / 1024 < this.fileSize
- // if (!isLt) {
- // this.$modal.msgError(`图片大小不能超过 ${this.fileSize} MB`)
+ // 判断文件大小
+ const isLt = file.size / 1024 / 1024 < this.fileSize
+ if (!isLt) {
+ this.$modal.msgError(`图片大小不能超过 ${this.fileSize} MB`)
+ return false
+ }
- // return false
- // }
this.$modal.loading('图片正在上传,请稍候...')
+ // 替换文件路径中的#号
+ const newFileName = file.name.replace(/#/g, '@')
+ const newFile = new File([file], newFileName, { type: file.type })
+
+ // 修改原始文件的name属性
+ Object.defineProperty(file, 'name', {
+ value: newFileName,
+ })
+
+ return true
},
// 超出限制
diff --git a/src/views/company-manage/performance-manage/components/addAndEditForm.vue b/src/views/company-manage/performance-manage/components/addAndEditForm.vue
index d99133f..0dab54f 100644
--- a/src/views/company-manage/performance-manage/components/addAndEditForm.vue
+++ b/src/views/company-manage/performance-manage/components/addAndEditForm.vue
@@ -128,13 +128,14 @@
-
+
@@ -143,7 +144,10 @@
-
+
@@ -241,6 +246,7 @@
:file-type="['jpg', 'png', 'jpeg']"
:file-list.sync="addAndEditForm.htKeyFileList"
:is-uploaded="addAndEditForm.htKeyFileList.length >= 8"
+ :before-upload="beforeUpload"
/>
@@ -273,6 +279,7 @@
:upload-file-url="uploadFileUrl"
:file-type="['jpg', 'png', 'jpeg']"
:is-uploaded="proveFileList.length >= 4"
+ :before-upload="beforeUpload"
/>
@@ -418,6 +425,12 @@ export default {
}
},
methods: {
+ // 添加文件上传前的处理方法
+ beforeUpload(file) {
+ // 创建新的文件对象,替换文件名中的#为@
+ const newFile = new File([file], file.name.replace(/#/g, '@'), { type: file.type })
+ return newFile
+ },
onHandleAdd() {
this.addTableList.push({
title: '',
@@ -440,6 +453,66 @@ export default {
onConfirm() {
this.$refs.addAndEditFormRef.validate(async (valid) => {
if (valid) {
+ // 校验一下人员是否有空项
+ let isError = false
+ if (this.addTableList.length > 0) {
+ for (let index = 0; index < this.addTableList.length; index++) {
+ const item = this.addTableList[index]
+ if (!item.keyUser) {
+ this.$modal.msgError(`项目关键人员第${index + 1}行未选择人员`)
+
+ // 设置错误状态
+ this.$set(item, 'showError', true)
+ this.$nextTick(() => {
+ const selectRef = this.$refs[`keyUser_${index}`]
+ if (selectRef && selectRef.focus) {
+ selectRef.focus()
+ }
+ })
+
+ isError = true
+ break // 找到第一个错误就停止
+ }
+ if (!item.title) {
+ this.$modal.msgError(`项目关键人员第${index + 1}行未输入担任职务`)
+ this.$nextTick(() => {
+ const inputRef = this.$refs[`title_${index}`]
+
+ console.log(inputRef)
+ inputRef.focus()
+ // 添加红框样式
+ inputRef.$el.querySelector('.el-input__inner').style.border = '1px solid red'
+ // 可选:监听 blur 事件移除红框
+ inputRef.$el
+ .querySelector('.el-input__inner')
+ .addEventListener('blur', function () {
+ this.style.border = ''
+ })
+ })
+ isError = true
+ break
+ }
+ if (!item.workContent) {
+ this.$modal.msgError(`项目关键人员第${index + 1}行未输入工作内容`)
+ this.$nextTick(() => {
+ const inputRef = this.$refs[`workContent_${index}`]
+ inputRef.focus()
+ // 添加红框样式
+ inputRef.$el.querySelector('.el-input__inner').style.border = '1px solid red'
+ // 可选:监听 blur 事件移除红框
+ inputRef.$el
+ .querySelector('.el-input__inner')
+ .addEventListener('blur', function () {
+ this.style.border = ''
+ })
+ })
+ isError = true
+ break
+ }
+ }
+ }
+
+ if (isError) return false
// 组装参数
const {
proName, // 工程名称
@@ -566,6 +639,16 @@ export default {
},
// 人员选择
onHandleChange(index, value) {
+ if (!value) {
+ this.addTableList[index].userName = ''
+ this.addTableList[index].idCard = ''
+ this.addTableList[index].keyUser = ''
+ this.addTableList[index].showError = false
+ this.addTableList[index].tbFileSourceVoList = []
+ this.addTableList[index].title = ''
+ this.addTableList[index].workContent = ''
+ return false
+ }
// 校验不可重复
if (this.addTableList.some((item, currentIndex) => item.keyUser == value && currentIndex !== index)) {
this.$modal.msgError('人员不可重复选择')
@@ -573,8 +656,9 @@ export default {
this.addTableList[index].idCard = ''
this.addTableList[index].keyUser = ''
} else {
- this.addTableList[index].userName = this.keyPersonList.find((item) => item.id == value).userName
- this.addTableList[index].idCard = this.keyPersonList.find((item) => item.id == value).idCard
+ this.addTableList[index].userName = this.keyPersonList.find((item) => item.id == value).userName || ''
+ this.addTableList[index].idCard = this.keyPersonList.find((item) => item.id == value).idCard || ''
+ this.addTableList[index].showError = false
}
},
onCancelInner() {
@@ -695,4 +779,8 @@ export default {
text-align: right;
border-top: 1px solid #e5e5e5;
}
+
+::v-deep .error-border .el-input__inner {
+ border: 1px solid red !important;
+}
diff --git a/src/views/company-manage/performance-manage/index.vue b/src/views/company-manage/performance-manage/index.vue
index cc9b8bc..43a21da 100644
--- a/src/views/company-manage/performance-manage/index.vue
+++ b/src/views/company-manage/performance-manage/index.vue
@@ -41,7 +41,7 @@
-
+
-
+
-
+
-
+
-
+