领退管理优化
This commit is contained in:
parent
ec2dab7662
commit
a3de867e63
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.5 KiB |
|
|
@ -101,7 +101,7 @@
|
||||||
label="状态"
|
label="状态"
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
prop="status"
|
prop="backStatus"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="备注"
|
label="备注"
|
||||||
|
|
|
||||||
|
|
@ -239,23 +239,23 @@
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
accept="image/*,application/pdf"
|
accept="image/*,application/pdf"
|
||||||
multiple
|
|
||||||
:limit="5"
|
:limit="5"
|
||||||
:file-list="scope.row.fileList"
|
:file-list="scope.row.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
:before-remove="beforeRemove"
|
:before-remove="beforeRemove"
|
||||||
:on-preview="handlePreview"
|
:on-preview="handlePreview"
|
||||||
:on-remove="(file, fileList) => handleRemove(file, fileList, scope.row)"
|
:on-remove="(file, fileList) => handleRemove(file, fileList, scope.row)"
|
||||||
:on-exceed="handleExceed"
|
:on-exceed="handleExceed"
|
||||||
:on-success="(res, file, fileList) => handleSuccess(file, fileList, scope.row)"
|
:on-success="(res, file, fileList) => handleSuccess(res, file, fileList, scope.row)"
|
||||||
>
|
>
|
||||||
<el-button v-if="!dialogIsView" size="mini" type="primary">点击上传</el-button>
|
<el-button v-if="!dialogIsView" size="mini" type="primary">点击上传</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="待维修备注" align="center" prop="serviceRemark" :show-overflow-tooltip="true">
|
<el-table-column label="待维修备注" align="center" prop="repairRemark" :show-overflow-tooltip="true">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.serviceRemark"
|
v-model="scope.row.repairRemark"
|
||||||
placeholder="待维修备注"
|
placeholder="待维修备注"
|
||||||
clearable
|
clearable
|
||||||
:disabled="dialogIsView"
|
:disabled="dialogIsView"
|
||||||
|
|
@ -272,8 +272,8 @@
|
||||||
:disabled="dialogIsView"
|
:disabled="dialogIsView"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-option label="人为" value="1" />
|
<el-option label="人为" :value="1" />
|
||||||
<el-option label="自然损坏" value="2" />
|
<el-option label="自然损坏" :value="2" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -388,7 +388,7 @@
|
||||||
<el-table-column label="序号" align="center" type="index" />
|
<el-table-column label="序号" align="center" type="index" />
|
||||||
<el-table-column label="机具名称" align="center" prop="typeName" :show-overflow-tooltip="true" />
|
<el-table-column label="机具名称" align="center" prop="typeName" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="规格型号" align="center" prop="typeCode" :show-overflow-tooltip="true" />
|
<el-table-column label="规格型号" align="center" prop="typeCode" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="最大退料数量" align="center" prop="backNum" :show-overflow-tooltip="true" />
|
<!-- <el-table-column label="最大退料数量" align="center" prop="backNum" :show-overflow-tooltip="true" /> -->
|
||||||
<el-table-column label="附件" align="center" prop="fileList">
|
<el-table-column label="附件" align="center" prop="fileList">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-upload
|
<el-upload
|
||||||
|
|
@ -396,14 +396,14 @@
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
accept="image/*,application/pdf"
|
accept="image/*,application/pdf"
|
||||||
multiple
|
|
||||||
:limit="5"
|
:limit="5"
|
||||||
:file-list="scope.row.fileList"
|
:file-list="scope.row.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
:before-remove="beforeRemove"
|
:before-remove="beforeRemove"
|
||||||
:on-preview="handlePreview"
|
:on-preview="handlePreview"
|
||||||
:on-remove="(file, fileList) => handleRemove(file, fileList, scope.row)"
|
:on-remove="(file, fileList) => handleRemove(file, fileList, scope.row)"
|
||||||
:on-exceed="handleExceed"
|
:on-exceed="handleExceed"
|
||||||
:on-success="(res, file, fileList) => handleSuccess(file, fileList, scope.row)"
|
:on-success="(res, file, fileList) => handleSuccess(res, file, fileList, scope.row)"
|
||||||
>
|
>
|
||||||
<el-button v-if="!dialogIsView" size="mini" type="primary">点击上传</el-button>
|
<el-button v-if="!dialogIsView" size="mini" type="primary">点击上传</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
|
|
@ -435,10 +435,10 @@
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="待维修备注" align="center" prop="serviceRemark" :show-overflow-tooltip="true">
|
<el-table-column label="待维修备注" align="center" prop="repairRemark" :show-overflow-tooltip="true">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.serviceRemark"
|
v-model="scope.row.repairRemark"
|
||||||
placeholder="待维修备注"
|
placeholder="待维修备注"
|
||||||
clearable
|
clearable
|
||||||
:disabled="dialogIsView"
|
:disabled="dialogIsView"
|
||||||
|
|
@ -468,8 +468,8 @@
|
||||||
:disabled="dialogIsView"
|
:disabled="dialogIsView"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-option label="人为" value="1" />
|
<el-option label="人为" :value="1" />
|
||||||
<el-option label="自然损坏" value="2" />
|
<el-option label="自然损坏" :value="2" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -763,7 +763,7 @@ export default {
|
||||||
item.qualifiedNum = item.hgNum
|
item.qualifiedNum = item.hgNum
|
||||||
item.serviceNum = item.wxNum
|
item.serviceNum = item.wxNum
|
||||||
item.scrapNum = item.bfNum
|
item.scrapNum = item.bfNum
|
||||||
// item.serviceRemark = item.wxRemark
|
// item.repairRemark = item.wxRemark
|
||||||
// item.scrapRemark = item.bfRemark
|
// item.scrapRemark = item.bfRemark
|
||||||
// item.scrapReason = item.bfReason
|
// item.scrapReason = item.bfReason
|
||||||
// item.fileList = item.fileList
|
// item.fileList = item.fileList
|
||||||
|
|
@ -851,6 +851,13 @@ export default {
|
||||||
this.openNum = true
|
this.openNum = true
|
||||||
this.dialogIsView = false
|
this.dialogIsView = false
|
||||||
this.$set(row, 'backNum', row.maxBackNum) //退料数量
|
this.$set(row, 'backNum', row.maxBackNum) //退料数量
|
||||||
|
this.$set(row, 'qualifiedNum', undefined)
|
||||||
|
this.$set(row, 'serviceNum', undefined)
|
||||||
|
this.$set(row, 'scrapNum', undefined)
|
||||||
|
this.$set(row, 'repairRemark', undefined)
|
||||||
|
this.$set(row, 'scrapRemark', undefined)
|
||||||
|
this.$set(row, 'fileList', [])
|
||||||
|
this.$set(row, 'scrapReason', undefined)
|
||||||
this.returnNum = Number(row.maxBackNum)
|
this.returnNum = Number(row.maxBackNum)
|
||||||
this.dialogData.typeMange = row.manageType
|
this.dialogData.typeMange = row.manageType
|
||||||
this.dialogData.typeName = row.typeName
|
this.dialogData.typeName = row.typeName
|
||||||
|
|
@ -860,14 +867,15 @@ export default {
|
||||||
this.$set(item, 'qualifiedNum', undefined)
|
this.$set(item, 'qualifiedNum', undefined)
|
||||||
this.$set(item, 'serviceNum', undefined)
|
this.$set(item, 'serviceNum', undefined)
|
||||||
this.$set(item, 'scrapNum', undefined)
|
this.$set(item, 'scrapNum', undefined)
|
||||||
this.$set(item, 'serviceRemark', undefined)
|
// this.$set(item, 'repairRemark', undefined)
|
||||||
this.$set(item, 'scrapRemark', undefined)
|
// this.$set(item, 'scrapRemark', undefined)
|
||||||
this.$set(item, 'fileList', [])
|
// this.$set(item, 'fileList', undefined)
|
||||||
this.$set(item, 'scrapReason', undefined)
|
// this.$set(item, 'scrapReason', undefined)
|
||||||
})
|
})
|
||||||
this.dialogData.maTypeDetails = row.maTypeDetails
|
this.dialogData.maTypeDetails = row.maTypeDetails
|
||||||
}
|
}
|
||||||
this.numList = [row]
|
this.numList = [row]
|
||||||
|
console.log('🚀 ~ handleNumReturn ~ this.numList:', this.numList)
|
||||||
// this.getNumList()
|
// this.getNumList()
|
||||||
},
|
},
|
||||||
//
|
//
|
||||||
|
|
@ -913,7 +921,7 @@ export default {
|
||||||
this.codeTotal = response.data.total
|
this.codeTotal = response.data.total
|
||||||
this.codeList.forEach((item) => {
|
this.codeList.forEach((item) => {
|
||||||
this.$set(item, 'fileList', [])
|
this.$set(item, 'fileList', [])
|
||||||
this.$set(item, 'serviceRemark', '')
|
this.$set(item, 'repairRemark', '')
|
||||||
this.$set(item, 'scrapRemark', '')
|
this.$set(item, 'scrapRemark', '')
|
||||||
this.$set(item, 'scrapReason', '')
|
this.$set(item, 'scrapReason', '')
|
||||||
})
|
})
|
||||||
|
|
@ -954,13 +962,16 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
data = this.dialogData.maTypeDetails
|
data = this.dialogData.maTypeDetails
|
||||||
}
|
}
|
||||||
|
console.log('🚀 ~ saveNumReturn ~ data:', data)
|
||||||
let arr = []
|
let arr = []
|
||||||
|
let fileList = []
|
||||||
for (const item of data) {
|
for (const item of data) {
|
||||||
let sumUnmber = (item.qualifiedNum || 0) + (item.serviceNum || 0) + (item.scrapNum || 0)
|
let sumUnmber = (item.qualifiedNum || 0) + (item.serviceNum || 0) + (item.scrapNum || 0)
|
||||||
if (sumUnmber > item.partNum && sumUnmber > item.num) {
|
if (sumUnmber > item.partNum && sumUnmber > item.num) {
|
||||||
this.$modal.msgError('退料总量已大于待退料数量!')
|
this.$modal.msgError('退料总量已大于待退料数量!')
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
fileList = item.fileList
|
||||||
if (item.qualifiedNum > 0) {
|
if (item.qualifiedNum > 0) {
|
||||||
let obj = {
|
let obj = {
|
||||||
parentId: parentId,
|
parentId: parentId,
|
||||||
|
|
@ -969,9 +980,9 @@ export default {
|
||||||
createBy: this.createBy,
|
createBy: this.createBy,
|
||||||
backStatus: 1,
|
backStatus: 1,
|
||||||
backNum: item.qualifiedNum,
|
backNum: item.qualifiedNum,
|
||||||
serviceRemark: item.serviceRemark,
|
// repairRemark: item.repairRemark,
|
||||||
scrapRemark: item.scrapRemark,
|
// scrapRemark: item.scrapRemark,
|
||||||
fileList: item.fileList,
|
// fileList: item.fileList,
|
||||||
}
|
}
|
||||||
arr.push(obj)
|
arr.push(obj)
|
||||||
}
|
}
|
||||||
|
|
@ -983,9 +994,9 @@ export default {
|
||||||
createBy: this.createBy,
|
createBy: this.createBy,
|
||||||
backStatus: 2,
|
backStatus: 2,
|
||||||
backNum: item.serviceNum,
|
backNum: item.serviceNum,
|
||||||
serviceRemark: item.serviceRemark,
|
repairRemark: item.repairRemark, // 待维修备注
|
||||||
scrapRemark: item.scrapRemark,
|
// scrapRemark: item.scrapRemark,
|
||||||
fileList: item.fileList,
|
// fileList: item.fileList,
|
||||||
}
|
}
|
||||||
arr.push(obj)
|
arr.push(obj)
|
||||||
}
|
}
|
||||||
|
|
@ -997,9 +1008,9 @@ export default {
|
||||||
createBy: this.createBy,
|
createBy: this.createBy,
|
||||||
backStatus: 3,
|
backStatus: 3,
|
||||||
backNum: item.scrapNum,
|
backNum: item.scrapNum,
|
||||||
serviceRemark: item.serviceRemark,
|
scrapReason: item.scrapReason, // 报废原因
|
||||||
scrapRemark: item.scrapRemark,
|
scrapRemark: item.scrapRemark, // 待报废备注
|
||||||
fileList: item.fileList,
|
// fileList: item.fileList,
|
||||||
}
|
}
|
||||||
arr.push(obj)
|
arr.push(obj)
|
||||||
}
|
}
|
||||||
|
|
@ -1008,6 +1019,7 @@ export default {
|
||||||
let param = {
|
let param = {
|
||||||
taskId: taskId,
|
taskId: taskId,
|
||||||
arr: arr,
|
arr: arr,
|
||||||
|
fileList: fileList,
|
||||||
}
|
}
|
||||||
setNumBack(param).then((response) => {
|
setNumBack(param).then((response) => {
|
||||||
if (response.code == 200) {
|
if (response.code == 200) {
|
||||||
|
|
@ -1033,7 +1045,7 @@ export default {
|
||||||
maId: row.maId,
|
maId: row.maId,
|
||||||
scrapReason: row.scrapReason,
|
scrapReason: row.scrapReason,
|
||||||
scrapRemark: row.scrapRemark,
|
scrapRemark: row.scrapRemark,
|
||||||
serviceRemark: row.serviceRemark,
|
repairRemark: row.repairRemark,
|
||||||
fileList: row.fileList,
|
fileList: row.fileList,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
@ -1075,7 +1087,7 @@ export default {
|
||||||
maId: item.maId,
|
maId: item.maId,
|
||||||
scrapReason: item.scrapReason,
|
scrapReason: item.scrapReason,
|
||||||
scrapRemark: item.scrapRemark,
|
scrapRemark: item.scrapRemark,
|
||||||
serviceRemark: item.serviceRemark,
|
repairRemark: item.repairRemark,
|
||||||
fileList: item.fileList,
|
fileList: item.fileList,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -1109,6 +1121,7 @@ export default {
|
||||||
fileUrl = item.fileUrl
|
fileUrl = item.fileUrl
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
typeId: row.typeId,
|
||||||
fileName: fileName,
|
fileName: fileName,
|
||||||
fileUrl: fileUrl,
|
fileUrl: fileUrl,
|
||||||
}
|
}
|
||||||
|
|
@ -1117,28 +1130,43 @@ export default {
|
||||||
},
|
},
|
||||||
handlePreview(file) {
|
handlePreview(file) {
|
||||||
console.log('🚀 ~ handlePreview ~ file:', file)
|
console.log('🚀 ~ handlePreview ~ file:', file)
|
||||||
// if (file.response) {
|
if (file.response) {
|
||||||
// window.open(file.response.data.fileUrl)
|
window.open(file.response.data.fileUrl)
|
||||||
// } else {
|
} else {
|
||||||
// window.open(file.fileUrl)
|
window.open(file.fileUrl)
|
||||||
// }
|
}
|
||||||
},
|
},
|
||||||
handleExceed(files, fileList) {
|
handleExceed(files, fileList) {
|
||||||
this.$message.warning(
|
this.$message.warning(
|
||||||
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`,
|
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
const isLtMB = file.size / 1024 / 1024 < 20
|
||||||
|
if (!isLtMB) {
|
||||||
|
this.$message.error('上传文件大小不能超过 20MB!')
|
||||||
|
}
|
||||||
|
return isLtMB
|
||||||
|
},
|
||||||
beforeRemove(file, fileList) {
|
beforeRemove(file, fileList) {
|
||||||
return this.$confirm(`确定移除 ${file.name} ?`)
|
return this.$confirm(`确定移除 ${file.name} ?`)
|
||||||
},
|
},
|
||||||
handleSuccess(file, fileList, row) {
|
handleSuccess(res, file, fileList, row) {
|
||||||
console.log(file, fileList, row)
|
console.log('🚀 ~ handleSuccess ~ res:', res)
|
||||||
row.fileList = fileList.map((item) => {
|
console.log('🚀 ~ handleSuccess ~ file:', file)
|
||||||
return {
|
console.log('🚀 ~ handleSuccess ~ fileList:', fileList)
|
||||||
fileName: item.response?.data.fileName,
|
console.log('🚀 ~ handleSuccess ~ row:', row)
|
||||||
fileUrl: item.response?.data.fileUrl,
|
|
||||||
|
if (res.code == 200) {
|
||||||
|
if (!row.fileList) {
|
||||||
|
row.fileList = []
|
||||||
}
|
}
|
||||||
})
|
row.fileList.push({
|
||||||
|
typeId: row.typeId,
|
||||||
|
fileName: res.data.fileName,
|
||||||
|
fileUrl: res.data.fileUrl,
|
||||||
|
})
|
||||||
|
}
|
||||||
console.log('🚀 ~ row.fileList=fileList.map ~ row.fileList:', row.fileList)
|
console.log('🚀 ~ row.fileList=fileList.map ~ row.fileList:', row.fileList)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@
|
||||||
<el-form-item label="附件" prop="bmFileInfos">
|
<el-form-item label="附件" prop="bmFileInfos">
|
||||||
<el-upload
|
<el-upload
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
|
:headers="headers"
|
||||||
:file-list="maForm.bmFileInfos"
|
:file-list="maForm.bmFileInfos"
|
||||||
:show-file-list="true"
|
:show-file-list="true"
|
||||||
:auto-upload="true"
|
:auto-upload="true"
|
||||||
|
|
@ -316,11 +317,11 @@ export default {
|
||||||
//上传
|
//上传
|
||||||
// upload: {
|
// upload: {
|
||||||
// // 设置上传的请求头部
|
// // 设置上传的请求头部
|
||||||
// headers: {Authorization: 'Bearer ' + getToken()},
|
headers: {Authorization: 'Bearer ' + getToken()},
|
||||||
// // 上传的地址
|
// // 上传的地址
|
||||||
// url: process.env.VUE_APP_BASE_API + '/file/upload'
|
// url: process.env.VUE_APP_BASE_API + '/file/upload'
|
||||||
// },
|
// },
|
||||||
uploadUrl: process.env.VUE_APP_BASE_API + '/system/user/imgUpLoad' // 上传的图片服务器地址
|
uploadUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload' // 上传的图片服务器地址
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
||||||
|
|
@ -9,24 +9,20 @@
|
||||||
width="600px"
|
width="600px"
|
||||||
>
|
>
|
||||||
<div class="form_box_one">
|
<div class="form_box_one">
|
||||||
<el-form
|
<el-form ref="dynamicValidateForm" :model="dynamicValidateForm" class="demo-dynamic" label-width="100px">
|
||||||
ref="dynamicValidateForm"
|
<div v-for="(domain, index) in dynamicValidateForm.premiumList" :key="domain.key" class="bor_box">
|
||||||
:model="dynamicValidateForm"
|
|
||||||
class="demo-dynamic"
|
|
||||||
label-width="100px"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
v-for="(domain, index) in dynamicValidateForm.premiumList"
|
|
||||||
:key="domain.key"
|
|
||||||
class="bor_box"
|
|
||||||
>
|
|
||||||
<p class="form_box_title">编码管理设备</p>
|
<p class="form_box_title">编码管理设备</p>
|
||||||
<div class="form_box_line"></div>
|
<div class="form_box_line"></div>
|
||||||
<div class="form_box_item">
|
<div class="form_box_item">
|
||||||
<el-form-item
|
<el-form-item :prop="'premiumList.' + index + '.technical'" label="技术鉴定:">
|
||||||
:prop="'premiumList.' + index + '.partId'"
|
<el-input
|
||||||
label="选择配件:"
|
v-model="domain.technical"
|
||||||
>
|
placeholder="请输入"
|
||||||
|
size="small"
|
||||||
|
style="width: 350px"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :prop="'premiumList.' + index + '.partId'" label="选择配件:">
|
||||||
<treeselect
|
<treeselect
|
||||||
v-model="domain.partId"
|
v-model="domain.partId"
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
|
|
@ -40,11 +36,7 @@
|
||||||
@input="handleSelectTree($event, index)"
|
@input="handleSelectTree($event, index)"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item v-if="index == 0" :prop="'premiumList.' + index + '.repairer'" label="维修人:">
|
||||||
v-if="index == 0"
|
|
||||||
:prop="'premiumListTwo.' + index + '.repairer'"
|
|
||||||
label="维修人:"
|
|
||||||
>
|
|
||||||
<el-select
|
<el-select
|
||||||
v-model="domain.repairer"
|
v-model="domain.repairer"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
|
|
@ -70,10 +62,7 @@
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<el-radio-group
|
<el-radio-group style="width: 350px" v-model="domain.partType">
|
||||||
style="width: 350px"
|
|
||||||
v-model="domain.partType"
|
|
||||||
>
|
|
||||||
<el-radio :label="1">是</el-radio>
|
<el-radio :label="1">是</el-radio>
|
||||||
<el-radio :label="0">否</el-radio>
|
<el-radio :label="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
|
@ -100,7 +89,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="domain.partType == 1"
|
v-if="domain.partType == 1"
|
||||||
:prop="'premiumList.' + index + '.partCost'"
|
:prop="'premiumList.' + index + '.partCost'"
|
||||||
label="配件单价:"
|
label="费用(元):"
|
||||||
:rules="{
|
:rules="{
|
||||||
required: false,
|
required: false,
|
||||||
validator: meneyIntegerValidator,
|
validator: meneyIntegerValidator,
|
||||||
|
|
@ -115,10 +104,7 @@
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item :prop="'premiumList.' + index + '.repairContent'" label="维修内容:">
|
||||||
:prop="'premiumList.' + index + '.repairContent'"
|
|
||||||
label="维修内容:"
|
|
||||||
>
|
|
||||||
<el-input
|
<el-input
|
||||||
v-model="domain.repairContent"
|
v-model="domain.repairContent"
|
||||||
maxlength="100"
|
maxlength="100"
|
||||||
|
|
@ -129,30 +115,60 @@
|
||||||
type="textarea"
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item :prop="'premiumList.' + index + '.fileList'" label="维修内容:">
|
||||||
|
<el-upload
|
||||||
|
ref="upload_attach"
|
||||||
|
class="upload-demo"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:headers="headers"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept="image/*,application/pdf,application/msword"
|
||||||
|
multiple
|
||||||
|
:limit="5"
|
||||||
|
:file-list="domain.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="(res, file, fileList) => handleSuccess(file, fileList, domain)"
|
||||||
|
style="width: 350px"
|
||||||
|
>
|
||||||
|
<i slot="default" class="el-icon-plus"></i>
|
||||||
|
<div slot="file" slot-scope="{ file }">
|
||||||
|
<img
|
||||||
|
v-if="/\.(pdf|PDF)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="pdfImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else-if="/\.(doc|docx)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="wordImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img v-else class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
||||||
|
<span class="el-upload-list__item-actions">
|
||||||
|
<span class="el-upload-list__item-preview" @click="handlePreview(file)">
|
||||||
|
<i class="el-icon-zoom-in" />
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-list__item-delete" @click="handleRemove(file, domain)">
|
||||||
|
<i class="el-icon-delete" />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="add_box">
|
<div class="add_box">
|
||||||
<el-button
|
<el-button icon="el-icon-plus" size="mini" type="success" @click="addDomainOne"
|
||||||
icon="el-icon-plus"
|
|
||||||
size="mini"
|
|
||||||
type="success"
|
|
||||||
@click="addDomainOne"
|
|
||||||
>添加配件
|
>添加配件
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button size="mini" icon="el-icon-delete" @click="delDomain(domain, 1)" v-show="index > 0"
|
||||||
size="mini"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="delDomain(domain, 1)"
|
|
||||||
v-show="index > 0"
|
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div
|
<div slot="footer" class="dialog-footer" v-if="rowObj.code !== null && rowObj.code !== ''">
|
||||||
slot="footer"
|
|
||||||
class="dialog-footer"
|
|
||||||
v-if="rowObj.code !== null && rowObj.code !== ''"
|
|
||||||
>
|
|
||||||
<el-button @click="cancel">取消</el-button>
|
<el-button @click="cancel">取消</el-button>
|
||||||
<el-button type="primary" @click="submit">保存</el-button>
|
<el-button type="primary" @click="submit">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -164,16 +180,18 @@
|
||||||
class="demo-dynamic"
|
class="demo-dynamic"
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
>
|
>
|
||||||
<div
|
<div v-for="(domain, index) in dynamicValidateFormTwo.premiumListTwo" :key="domain.key" class="bor_box">
|
||||||
v-for="(
|
|
||||||
domain, index
|
|
||||||
) in dynamicValidateFormTwo.premiumListTwo"
|
|
||||||
:key="domain.key"
|
|
||||||
class="bor_box"
|
|
||||||
>
|
|
||||||
<p class="form_box_title">数量管理设备</p>
|
<p class="form_box_title">数量管理设备</p>
|
||||||
<div class="form_box_line"></div>
|
<div class="form_box_line"></div>
|
||||||
<div class="form_box_item">
|
<div class="form_box_item">
|
||||||
|
<el-form-item :prop="'premiumListTwo.' + index + '.technical'" label="技术鉴定:">
|
||||||
|
<el-input
|
||||||
|
v-model="domain.technical"
|
||||||
|
placeholder="请输入"
|
||||||
|
size="small"
|
||||||
|
style="width: 350px"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="index == 0"
|
v-if="index == 0"
|
||||||
:prop="'premiumListTwo.' + index + '.repairNum'"
|
:prop="'premiumListTwo.' + index + '.repairNum'"
|
||||||
|
|
@ -212,10 +230,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item :prop="'premiumListTwo.' + index + '.partId'" label="选择配件:">
|
||||||
:prop="'premiumList.' + index + '.partId'"
|
|
||||||
label="选择配件:"
|
|
||||||
>
|
|
||||||
<treeselect
|
<treeselect
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
v-model="domain.partId"
|
v-model="domain.partId"
|
||||||
|
|
@ -239,10 +254,7 @@
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<el-radio-group
|
<el-radio-group style="width: 350px" v-model="domain.partType">
|
||||||
style="width: 350px"
|
|
||||||
v-model="domain.partType"
|
|
||||||
>
|
|
||||||
<el-radio :label="1">是</el-radio>
|
<el-radio :label="1">是</el-radio>
|
||||||
<el-radio :label="0">否</el-radio>
|
<el-radio :label="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
|
@ -268,7 +280,7 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="domain.partType == 1"
|
v-if="domain.partType == 1"
|
||||||
:prop="'premiumListTwo.' + index + '.partCost'"
|
:prop="'premiumListTwo.' + index + '.partCost'"
|
||||||
label="配件单价:"
|
label="费用(元):"
|
||||||
:rules="{
|
:rules="{
|
||||||
required: false,
|
required: false,
|
||||||
validator: meneyIntegerValidator,
|
validator: meneyIntegerValidator,
|
||||||
|
|
@ -283,10 +295,7 @@
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item :prop="'premiumListTwo.' + index + '.repairContent'" label="维修内容:">
|
||||||
:prop="'premiumListTwo.' + index + '.repairContent'"
|
|
||||||
label="维修内容:"
|
|
||||||
>
|
|
||||||
<el-input
|
<el-input
|
||||||
v-model="domain.repairContent"
|
v-model="domain.repairContent"
|
||||||
maxlength="100"
|
maxlength="100"
|
||||||
|
|
@ -297,30 +306,60 @@
|
||||||
type="textarea"
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item :prop="'premiumListTwo.' + index + '.fileList'" label="维修内容:">
|
||||||
|
<el-upload
|
||||||
|
ref="upload_attach"
|
||||||
|
class="upload-demo"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:headers="headers"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept="image/*,application/pdf,application/msword"
|
||||||
|
multiple
|
||||||
|
:limit="5"
|
||||||
|
:file-list="domain.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="(res, file, fileList) => handleSuccess(file, fileList, domain)"
|
||||||
|
style="width: 350px"
|
||||||
|
>
|
||||||
|
<i slot="default" class="el-icon-plus"></i>
|
||||||
|
<div slot="file" slot-scope="{ file }">
|
||||||
|
<img
|
||||||
|
v-if="/\.(pdf|PDF)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="pdfImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else-if="/\.(doc|docx)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="wordImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img v-else class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
||||||
|
<span class="el-upload-list__item-actions">
|
||||||
|
<span class="el-upload-list__item-preview" @click="handlePreview(file)">
|
||||||
|
<i class="el-icon-zoom-in" />
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-list__item-delete" @click="handleRemove(file, domain)">
|
||||||
|
<i class="el-icon-delete" />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="add_box">
|
<div class="add_box">
|
||||||
<el-button
|
<el-button icon="el-icon-plus" size="mini" type="success" @click="addDomainTwo"
|
||||||
icon="el-icon-plus"
|
|
||||||
size="mini"
|
|
||||||
type="success"
|
|
||||||
@click="addDomainTwo"
|
|
||||||
>添加配件
|
>添加配件
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button size="mini" icon="el-icon-delete" @click="delDomain(domain, 2)" v-show="index > 0"
|
||||||
size="mini"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="delDomain(domain, 2)"
|
|
||||||
v-show="index > 0"
|
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div
|
<div slot="footer" class="dialog-footer" v-if="rowObj.code == null || rowObj.code == ''">
|
||||||
slot="footer"
|
|
||||||
class="dialog-footer"
|
|
||||||
v-if="rowObj.code == null || rowObj.code == ''"
|
|
||||||
>
|
|
||||||
<el-button @click="cancel">取消</el-button>
|
<el-button @click="cancel">取消</el-button>
|
||||||
<el-button type="primary" @click="submitTwo">保存</el-button>
|
<el-button type="primary" @click="submitTwo">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -328,16 +367,12 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {
|
import { submitRepairApplyApi, getUserSelectApi, getRepairMaTypeListApi, listPartType } from '@/api/repairTest/repair'
|
||||||
submitRepairApplyApi,
|
|
||||||
getUserSelectApi,
|
|
||||||
getRepairMaTypeListApi,
|
|
||||||
listPartType,
|
|
||||||
} from '@/api/repairTest/repair'
|
|
||||||
// import { listPartType, } from "@/api/store/tools";
|
// import { listPartType, } from "@/api/store/tools";
|
||||||
import Treeselect from '@riophae/vue-treeselect'
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
import { getInfo } from '@/api/login'
|
import { getInfo } from '@/api/login'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Treeselect },
|
components: { Treeselect },
|
||||||
props: {
|
props: {
|
||||||
|
|
@ -381,6 +416,12 @@ export default {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
uploadUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload', // 上传的图片服务器地址
|
||||||
|
headers: {
|
||||||
|
Authorization: 'Bearer ' + localStorage.getItem('token'),
|
||||||
|
},
|
||||||
|
pdfImg: require('@/assets/images/pdf.png'),
|
||||||
|
wordImg: require('@/assets/images/word.png'),
|
||||||
fullscreenLoading: false,
|
fullscreenLoading: false,
|
||||||
dynamicValidateForm: {
|
dynamicValidateForm: {
|
||||||
premiumList: [
|
premiumList: [
|
||||||
|
|
@ -396,6 +437,7 @@ export default {
|
||||||
downFee: undefined,
|
downFee: undefined,
|
||||||
xiayoufeiyonge_unit: '',
|
xiayoufeiyonge_unit: '',
|
||||||
isCharge: '',
|
isCharge: '',
|
||||||
|
fileList: [], // 附件
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -412,6 +454,7 @@ export default {
|
||||||
downRate: undefined,
|
downRate: undefined,
|
||||||
downFee: undefined,
|
downFee: undefined,
|
||||||
xiayoufeiyonge_unit: '',
|
xiayoufeiyonge_unit: '',
|
||||||
|
fileList: [], // 附件
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -431,8 +474,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
//正则校验配件费用
|
//正则校验配件费用
|
||||||
meneyIntegerValidator(rule, value, callback) {
|
meneyIntegerValidator(rule, value, callback) {
|
||||||
const reg =
|
const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
|
||||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
|
|
||||||
if (value === '' || reg.test(value)) {
|
if (value === '' || reg.test(value)) {
|
||||||
callback()
|
callback()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -517,7 +559,7 @@ export default {
|
||||||
selected: 'N',
|
selected: 'N',
|
||||||
// partId: '',
|
// partId: '',
|
||||||
repairer: '',
|
repairer: '',
|
||||||
partType: '',
|
partType: 0,
|
||||||
partNum: '',
|
partNum: '',
|
||||||
partCost: '',
|
partCost: '',
|
||||||
repairContent: '',
|
repairContent: '',
|
||||||
|
|
@ -527,15 +569,13 @@ export default {
|
||||||
},
|
},
|
||||||
delDomain(domain, type) {
|
delDomain(domain, type) {
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
this.dynamicValidateForm.premiumList =
|
this.dynamicValidateForm.premiumList = this.dynamicValidateForm.premiumList.filter(
|
||||||
this.dynamicValidateForm.premiumList.filter(
|
(item) => item.key != domain.key,
|
||||||
(item) => item.key != domain.key,
|
)
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
this.dynamicValidateFormTwo.premiumListTwo =
|
this.dynamicValidateFormTwo.premiumListTwo = this.dynamicValidateFormTwo.premiumListTwo.filter(
|
||||||
this.dynamicValidateFormTwo.premiumListTwo.filter(
|
(item) => item.key != domain.key,
|
||||||
(item) => item.key != domain.key,
|
)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addDomainTwo() {
|
addDomainTwo() {
|
||||||
|
|
@ -543,7 +583,7 @@ export default {
|
||||||
selected: 'N',
|
selected: 'N',
|
||||||
// partId: '',
|
// partId: '',
|
||||||
repairer: '',
|
repairer: '',
|
||||||
partType: '',
|
partType: 0,
|
||||||
partNum: '',
|
partNum: '',
|
||||||
partCost: '',
|
partCost: '',
|
||||||
repairContent: '',
|
repairContent: '',
|
||||||
|
|
@ -555,10 +595,7 @@ export default {
|
||||||
this.$refs['dynamicValidateForm'].validate((valid) => {
|
this.$refs['dynamicValidateForm'].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
// 编码管理传递参数
|
// 编码管理传递参数
|
||||||
console.log(
|
console.log('this.dynamicValidateForm.premiumList1111)', this.dynamicValidateForm.premiumList)
|
||||||
'this.dynamicValidateForm.premiumList1111)',
|
|
||||||
this.dynamicValidateForm.premiumList,
|
|
||||||
)
|
|
||||||
|
|
||||||
this.dynamicValidateForm.premiumList.forEach((e) => {
|
this.dynamicValidateForm.premiumList.forEach((e) => {
|
||||||
if (e.partType == 0) {
|
if (e.partType == 0) {
|
||||||
|
|
@ -572,9 +609,7 @@ export default {
|
||||||
id: this.rowObj.id,
|
id: this.rowObj.id,
|
||||||
repairType: 1,
|
repairType: 1,
|
||||||
companyId: this.companyId,
|
companyId: this.companyId,
|
||||||
partStrList: JSON.stringify(
|
partStrList: JSON.stringify(this.dynamicValidateForm.premiumList),
|
||||||
this.dynamicValidateForm.premiumList,
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
this.fullscreenLoading = true
|
this.fullscreenLoading = true
|
||||||
submitRepairApplyApi(params)
|
submitRepairApplyApi(params)
|
||||||
|
|
@ -613,9 +648,7 @@ export default {
|
||||||
id: this.rowObj.id,
|
id: this.rowObj.id,
|
||||||
companyId: this.companyId,
|
companyId: this.companyId,
|
||||||
repairType: 1,
|
repairType: 1,
|
||||||
partStrList: JSON.stringify(
|
partStrList: JSON.stringify(this.dynamicValidateFormTwo.premiumListTwo),
|
||||||
this.dynamicValidateFormTwo.premiumListTwo,
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
this.fullscreenLoading = true
|
this.fullscreenLoading = true
|
||||||
submitRepairApplyApi(params)
|
submitRepairApplyApi(params)
|
||||||
|
|
@ -647,6 +680,56 @@ export default {
|
||||||
this.isRequired = false
|
this.isRequired = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
handleRemove(file, domain) {
|
||||||
|
// console.log('🚀 ~ handleRemove ~ this.$refs.upload_attach:', this.$refs.upload_attach[0].uploadFiles)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ row:', domain.fileList)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ file:', file)
|
||||||
|
let fileList = this.$refs.upload_attach[0].uploadFiles
|
||||||
|
this.$refs.upload_attach[0].uploadFiles = fileList.filter((item) => item.name !== file.name)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ fileList:', fileList)
|
||||||
|
domain.fileList = this.$refs.upload_attach[0].uploadFiles.map((item) => {
|
||||||
|
return {
|
||||||
|
fileName: item.name,
|
||||||
|
fileUrl: item.url,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log('🚀 ~ domain.fileList:', domain.fileList)
|
||||||
|
},
|
||||||
|
handlePreview(file) {
|
||||||
|
if (file.response) {
|
||||||
|
window.open(file.response.data.fileUrl)
|
||||||
|
} else {
|
||||||
|
window.open(file.fileUrl)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleExceed(files, fileList) {
|
||||||
|
this.$message.warning(
|
||||||
|
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||||
|
files.length + fileList.length
|
||||||
|
} 个文件`,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
const isLtMB = file.size / 1024 / 1024 < 20
|
||||||
|
if (!isLtMB) {
|
||||||
|
this.$message.error('上传文件大小不能超过 20MB!')
|
||||||
|
}
|
||||||
|
return isLtMB
|
||||||
|
},
|
||||||
|
beforeRemove(file) {
|
||||||
|
return this.$confirm(`确定移除 ${file.name} ?`)
|
||||||
|
},
|
||||||
|
handleSuccess(file, fileList, row) {
|
||||||
|
console.log('🚀 ~ handleSuccess ~ row:', row)
|
||||||
|
console.log('🚀 ~ handleSuccess ~ file:', file)
|
||||||
|
if (!row.fileList) {
|
||||||
|
row.fileList = []
|
||||||
|
}
|
||||||
|
row.fileList.push({
|
||||||
|
fileName: file.response.data.fileName,
|
||||||
|
fileUrl: file.response.data.fileUrl,
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -723,4 +806,4 @@ export default {
|
||||||
margin-right: 3%;
|
margin-right: 3%;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
</>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item
|
<el-form-item
|
||||||
:prop="'premiumList.' + index + '.partType'"
|
:prop="'premiumList.' + index + '.partType'"
|
||||||
label="是否收费:"
|
label="是否收费:"
|
||||||
required
|
required
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
<el-radio :label="1">是</el-radio>
|
<el-radio :label="1">是</el-radio>
|
||||||
<el-radio :label="0">否</el-radio>
|
<el-radio :label="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item> -->
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="index == 0"
|
v-if="index == 0"
|
||||||
:prop="'premiumList.' + index + '.supplierId'"
|
:prop="'premiumList.' + index + '.supplierId'"
|
||||||
|
|
@ -97,15 +97,14 @@
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="domain.partType == 1"
|
v-if="domain.partType == 1"
|
||||||
:prop="'premiumList.' + index + '.partPrice'"
|
:prop="'premiumList.' + index + '.partPrice'"
|
||||||
label="配件单价(元):"
|
label="费用(元):"
|
||||||
label-width="120px"
|
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="domain.partPrice"
|
v-model="domain.partPrice"
|
||||||
placeholder="请输入"
|
placeholder="请输入"
|
||||||
size="small"
|
size="small"
|
||||||
maxlength="10"
|
maxlength="10"
|
||||||
style="width: 330px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
|
@ -139,6 +138,48 @@
|
||||||
type="textarea"
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item :prop="'premiumList.' + index + '.fileList'" label="维修内容:">
|
||||||
|
<el-upload
|
||||||
|
ref="upload_attach"
|
||||||
|
class="upload-demo"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:headers="headers"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept="image/*,application/pdf,application/msword"
|
||||||
|
multiple
|
||||||
|
:limit="5"
|
||||||
|
:file-list="domain.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="(res, file, fileList) => handleSuccess(file, fileList, domain)"
|
||||||
|
style="width: 350px"
|
||||||
|
>
|
||||||
|
<i slot="default" class="el-icon-plus"></i>
|
||||||
|
<div slot="file" slot-scope="{ file }">
|
||||||
|
<img
|
||||||
|
v-if="/\.(pdf|PDF)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="pdfImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else-if="/\.(doc|docx)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="wordImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img v-else class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
||||||
|
<span class="el-upload-list__item-actions">
|
||||||
|
<span class="el-upload-list__item-preview" @click="handlePreview(file)">
|
||||||
|
<i class="el-icon-zoom-in" />
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-list__item-delete" @click="handleRemove(file, domain)">
|
||||||
|
<i class="el-icon-delete" />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
@ -200,7 +241,7 @@
|
||||||
style="width: 350px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item
|
<el-form-item
|
||||||
label="是否收费:"
|
label="是否收费:"
|
||||||
required
|
required
|
||||||
:rules="{
|
:rules="{
|
||||||
|
|
@ -216,7 +257,7 @@
|
||||||
<el-radio :label="1">是</el-radio>
|
<el-radio :label="1">是</el-radio>
|
||||||
<el-radio :label="0">否</el-radio>
|
<el-radio :label="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item> -->
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="index == 0"
|
v-if="index == 0"
|
||||||
:prop="'premiumListTwo.' + index + '.supplierId'"
|
:prop="'premiumListTwo.' + index + '.supplierId'"
|
||||||
|
|
@ -254,15 +295,14 @@
|
||||||
> -->
|
> -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="domain.partType == 1"
|
v-if="domain.partType == 1"
|
||||||
label="配件单价(元):"
|
label="费用(元):"
|
||||||
label-width="120px"
|
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="domain.partPrice"
|
v-model="domain.partPrice"
|
||||||
placeholder="请输入"
|
placeholder="请输入"
|
||||||
size="small"
|
size="small"
|
||||||
maxlength="10"
|
maxlength="10"
|
||||||
style="width: 330px"
|
style="width: 350px"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
|
@ -293,6 +333,48 @@
|
||||||
type="textarea"
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item :prop="'premiumListTwo.' + index + '.fileList'" label="维修内容:">
|
||||||
|
<el-upload
|
||||||
|
ref="upload_attach"
|
||||||
|
class="upload-demo"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:headers="headers"
|
||||||
|
list-type="picture-card"
|
||||||
|
accept="image/*,application/pdf,application/msword"
|
||||||
|
multiple
|
||||||
|
:limit="5"
|
||||||
|
:file-list="domain.fileList"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="(res, file, fileList) => handleSuccess(file, fileList, domain)"
|
||||||
|
style="width: 350px"
|
||||||
|
>
|
||||||
|
<i slot="default" class="el-icon-plus"></i>
|
||||||
|
<div slot="file" slot-scope="{ file }">
|
||||||
|
<img
|
||||||
|
v-if="/\.(pdf|PDF)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="pdfImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else-if="/\.(doc|docx)$/i.test(file.name)"
|
||||||
|
class="el-upload-list__item-thumbnail"
|
||||||
|
:src="wordImg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<img v-else class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
||||||
|
<span class="el-upload-list__item-actions">
|
||||||
|
<span class="el-upload-list__item-preview" @click="handlePreview(file)">
|
||||||
|
<i class="el-icon-zoom-in" />
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-list__item-delete" @click="handleRemove(file, domain)">
|
||||||
|
<i class="el-icon-delete" />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <el-button @click.prevent="removeDomain(domain, index)"-->
|
<!-- <el-button @click.prevent="removeDomain(domain, index)"-->
|
||||||
|
|
@ -375,6 +457,12 @@ export default {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
uploadUrl: process.env.VUE_APP_BASE_API + '/system/sys/file/upload', // 上传的图片服务器地址
|
||||||
|
headers: {
|
||||||
|
Authorization: 'Bearer ' + localStorage.getItem('token'),
|
||||||
|
},
|
||||||
|
pdfImg: require('@/assets/images/pdf.png'),
|
||||||
|
wordImg: require('@/assets/images/word.png'),
|
||||||
supplierSelectList: [],
|
supplierSelectList: [],
|
||||||
fullscreenLoading: false,
|
fullscreenLoading: false,
|
||||||
dynamicValidateForm: {
|
dynamicValidateForm: {
|
||||||
|
|
@ -390,6 +478,7 @@ export default {
|
||||||
downRate: undefined,
|
downRate: undefined,
|
||||||
downFee: undefined,
|
downFee: undefined,
|
||||||
xiayoufeiyonge_unit: '',
|
xiayoufeiyonge_unit: '',
|
||||||
|
fileList: [],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -406,6 +495,7 @@ export default {
|
||||||
downRate: undefined,
|
downRate: undefined,
|
||||||
downFee: undefined,
|
downFee: undefined,
|
||||||
xiayoufeiyonge_unit: '',
|
xiayoufeiyonge_unit: '',
|
||||||
|
fileList: [],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -502,7 +592,7 @@ export default {
|
||||||
selected: 'N',
|
selected: 'N',
|
||||||
partName: '',
|
partName: '',
|
||||||
repairer: '',
|
repairer: '',
|
||||||
partType: '',
|
partType: 0,
|
||||||
partNum: '',
|
partNum: '',
|
||||||
partCost: '',
|
partCost: '',
|
||||||
repairContent: '',
|
repairContent: '',
|
||||||
|
|
@ -517,7 +607,7 @@ export default {
|
||||||
selected: 'N',
|
selected: 'N',
|
||||||
partName: '',
|
partName: '',
|
||||||
repairer: '',
|
repairer: '',
|
||||||
partType: '',
|
partType: 0,
|
||||||
partNum: '',
|
partNum: '',
|
||||||
partCost: '',
|
partCost: '',
|
||||||
repairContent: '',
|
repairContent: '',
|
||||||
|
|
@ -626,6 +716,56 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
handleRemove(file, domain) {
|
||||||
|
// console.log('🚀 ~ handleRemove ~ this.$refs.upload_attach:', this.$refs.upload_attach[0].uploadFiles)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ row:', domain.fileList)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ file:', file)
|
||||||
|
let fileList = this.$refs.upload_attach[0].uploadFiles
|
||||||
|
this.$refs.upload_attach[0].uploadFiles = fileList.filter((item) => item.name !== file.name)
|
||||||
|
// console.log('🚀 ~ handleRemove ~ fileList:', fileList)
|
||||||
|
domain.fileList = this.$refs.upload_attach[0].uploadFiles.map((item) => {
|
||||||
|
return {
|
||||||
|
fileName: item.name,
|
||||||
|
fileUrl: item.url,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log('🚀 ~ domain.fileList:', domain.fileList)
|
||||||
|
},
|
||||||
|
handlePreview(file) {
|
||||||
|
if (file.response) {
|
||||||
|
window.open(file.response.data.fileUrl)
|
||||||
|
} else {
|
||||||
|
window.open(file.fileUrl)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleExceed(files, fileList) {
|
||||||
|
this.$message.warning(
|
||||||
|
`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||||
|
files.length + fileList.length
|
||||||
|
} 个文件`,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
beforeUpload(file) {
|
||||||
|
const isLtMB = file.size / 1024 / 1024 < 20
|
||||||
|
if (!isLtMB) {
|
||||||
|
this.$message.error('上传文件大小不能超过 20MB!')
|
||||||
|
}
|
||||||
|
return isLtMB
|
||||||
|
},
|
||||||
|
beforeRemove(file) {
|
||||||
|
return this.$confirm(`确定移除 ${file.name} ?`)
|
||||||
|
},
|
||||||
|
handleSuccess(file, fileList, row) {
|
||||||
|
console.log('🚀 ~ handleSuccess ~ row:', row)
|
||||||
|
console.log('🚀 ~ handleSuccess ~ file:', file)
|
||||||
|
if (!row.fileList) {
|
||||||
|
row.fileList = []
|
||||||
|
}
|
||||||
|
row.fileList.push({
|
||||||
|
fileName: file.response.data.fileName,
|
||||||
|
fileUrl: file.response.data.fileUrl,
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue