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