You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udiwms-vue-frame/src/views/dev/js/deviceRepairApply.js

187 lines
5.0 KiB
JavaScript

2 years ago
import {getLoading, copyProperties} from "@/utils"
import {deviceRepairApplyPage} from "@/api/dev/deviceRepairApplyApi"
import {deviceRepairApplyAdd} from "../../../api/dev/deviceRepairApplyApi";
import {deviceRepairApplyDetailStatus, deviceRepairApplyStatus} from "../../../utils/enum";
import {deviceRepairApplyDetailPage} from "../../../api/dev/deviceRepairApplyDetailApi";
let query = {
page: 1,
limit: 10,
}
let saveData = {
applyUserPhone: null,
details: []
}
let detailData = {
deviceCode: null,
description: null,
}
let detailQuery = {
page: 1,
limit: 10,
applyId: null,
}
export default {
name: "deviceRepairApply",
computed: {
deviceRepairApplyDetailStatus() {
return deviceRepairApplyDetailStatus
},
deviceRepairApplyStatus() {
return deviceRepairApplyStatus
}
},
data() {
return {
maxFiles: 3, // 允许同时上传的最大文件数
fileSizeLimit: 5, // 允许上传的文件大小限制MB
uploadedFileNames: '', // 存储已上传文件名,逗号隔开
2 years ago
showSearch: true,
loading: false,
total: .0,
list: [],
query: {...query},
createFlag: false,
saveData: _.cloneDeep(detailQuery),
user: null,
formRule: {
applyDeptCode: [{required: true, message: "报修部门不能为空", trigger: ["change", "blur"]}],
2 years ago
applyUserPhone: [{required: true, message: "报修人联系方式不能为空", trigger: ["change", "blur"]}],
details: [{
required: true,
validator: this.validToDetails,
message: "报修设备不能为空",
trigger: ["change", "blur"]
}],
},
detailRules: {
description: [{required: true, message: "问题描述不能为空", trigger: ["change", "blur"]}],
},
chooseDeviceFlag: false,
//========detail===============================
clickRow: null,
detailQuery: _.cloneDeep(detailQuery),
detailLoading: false,
detailList: [],
detailTotal: 0,
repairId: null,
submitLoading: false,
2 years ago
//========detail--end===============================
}
},
created() {
this.user = this.$store.getters.user
this.getList()
},
methods: {
rowClick(row) {
this.clickRow = row
this.detailQuery = _.cloneDeep({...detailQuery, applyId: row.id})
this.getDetailList()
},
getDetailList() {
this.detailLoading = true
deviceRepairApplyDetailPage(this.detailQuery).then(res => {
this.detailLoading = false
if (res.code != 20000) {
this.$message.error(res.message)
return
}
this.detailList = res.data.list || []
this.detailTotal = res.data.total || 0
}).catch(e => {
this.detailLoading = false
})
},
removeDetail(i) {
this.saveData.details.splice(i, 1)
},
chooseDevice(row) {
// let data = {...row, description: ""}
let i = this.saveData.details.findIndex(i => i.deviceCode == row.deviceCode)
2 years ago
if (i != -1) {
this.$message.error("该设备已被选入,无法再次选择")
return
}
this.saveData.details.push(row)
2 years ago
this.chooseDeviceFlag = false
},
validToDetails(rule, value, callback) {
if (!this.saveData.details || this.saveData.details.length == 0) {
callback(new Error("报修设备不能为空"))
}
callback()
},
saveFunc: function () {
let that = this
this.$refs.saveForm.validate(b => {
if (!b) {
return false
}
let success = true
this.saveData.details.forEach(i => {
that.$refs[`${i.deviceCode}`][0].validate(s => {
if (!s) {
success = false
return false
}
})
})
if (!success) {
return false
}
let loading = getLoading(that);
this.submitLoading = true
2 years ago
deviceRepairApplyAdd(this.saveData).then(res => {
this.submitLoading = false
2 years ago
loading.close()
if (res.code != 20000) {
this.$message.error(res.message)
return
}
this.$message.success(res.message)
this.createFlag = false
this.query.page = 1
this.getList()
}).catch(() => {
this.submitLoading = false
2 years ago
loading.close
})
})
},
openCreate() {
this.saveData = _.cloneDeep(saveData)
this.createFlag = true
},
search() {
this.query.page = 1
this.getList()
},
onReset() {
this.query = {...query}
this.getList()
},
getList() {
this.loading = true
deviceRepairApplyPage(this.query).then(res => {
this.loading = false
if (res.code != 20000) {
this.$message.error(res.message)
return
}
this.list = res.data.list || []
this.total = res.data.total || 0
}).catch(e => {
this.loading = false
})
}
}
}