You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

359 lines
12 KiB

3 years ago
<template>
<el-dialog :visible.sync="dialog" append-to-body :title="isEdit ? '追加归档' : '扫码归档'" width="50%" @close="closeDialog">
<el-alert title="请将光标移动到“扫码框”内,并用扫码枪扫描纸质报告右上方条形码进行归档,请勿手动输入。" style="margin-top: -10px; margin-bottom: 5px;" type="warning" :closable="false" />
<el-form ref="archive" :model="archive" size="small" label-width="100px">
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="扫码框">
<el-input v-model="baogaobianhao" style="width: 300px;" @paste.native.capture.prevent="handlePaste" @keyup.enter.native="handleKeyUpEnter" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="归档架号" required>
<AutoComplete ref="autoComplete" :frame-nums="frameNums" :frame-num="archive.frameNum" :is-edit="isEdit" @getFrameNum="setValMethod" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="列" prop="columnNum" required>
<el-input v-model="archive.columnNum" :disabled="isEdit" style="width: 150px;" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="归档盒号" prop="boxNum" required>
<el-input v-model="archive.boxNum" :disabled="isEdit" style="width: 150px;" />
</el-form-item>
</el-col>
</el-row>
<!--表格渲染-->
<el-table :data="paramList" size="mini" height="400px" border fit highlight-current-row stripe width="100%">
<el-table-column type="index" align="center" label="序号" />
<el-table-column align="center" label="报告编号" prop="baogaobianhao" />
<el-table-column align="center" label="设备种类" prop="shebeizhonglei" />
<el-table-column align="center" label="使用单位" prop="shiyongdanwei" />
<el-table-column align="center" label="注册代码" prop="zhucedaima" />
<el-table-column align="center" label="使用登记证编号" prop="shiyongdengjibianhao" />
<el-table-column align="center" label="产品编号" prop="chanpinbianhao" />
<el-table-column align="center" label="操作" min-width="65">
<template slot-scope="scope">
<el-button v-if="!scope.row.archiveId" type="danger" size="small" icon="el-icon-delete" @click="removeInfo(scope.$index)" />
</template>
</el-table-column>
</el-table>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="dialog = false">
取消
</el-button>
<el-button type="primary" @click="doSubmit">
确认
</el-button>
</div>
</el-dialog>
</template>
<script>
import Utils from '../../utils/contact.js'
import AutoComplete from './components/AutoComplete/index'
export default {
components: { AutoComplete },
props: {
frameNums: {
type: Array,
required: true
},
isEdit: {
type: Boolean,
default: false
},
id: {
type: Number,
default: 0
}
},
data() {
return {
paramList: [],
dialog: false,
archive: {},
baogaobianhao: '',
isJd: false,
isCy: false,
jianyijiahao: [] // 建议输入框里的归档架号
}
},
methods: {
doInit() {
this.$nextTick(() => {
this.jianyijiahao = this.frameNums
if (this.isEdit) {
this.server({
url: '/archive/archive/getArchiveInfo/' + this.id,
method: 'get'
}).then(data => {
this.archive = data.archive
this.paramList = data.paramList
})
}
})
},
// 扫码
handleKeyUpEnter() {
// 判断是否第一次进行录入
if (this.paramList.length === 0) {
this.unknownScan()
} else {
// ------ 第二条及之后的逻辑
// 生成报告编号数组,用来判断新录入的报告编号是否存在
const bgbhArray = []
this.paramList.forEach(data => bgbhArray.push(data.baogaobianhao))
// 判断所有元素确定是哪个系统的报告数据
// 有三种情况 1、16版机电类 2、18版承压类 3、未在系统内的报告
if (bgbhArray.indexOf(this.baogaobianhao) < 0) {
if (this.isJd) {
// 去16版机电类查询
this.server.defaults.headers.common['projectMark'] = 'OLD'
this.server({
url: '/archive/report/getReportByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
this.server.defaults.headers.common['projectMark'] = ''
if (data != null && data !== '') {
this.addJdData()
} else {
// 去18版承压类进行查询
this.server({
url: '/archive/ysjl/getYsjlByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
if (data != null && data !== '') {
this.$message.error('请选择机电类纸质报告进行扫描!')
this.baogaobianhao = ''
} else {
this.addUnknownData()
}
})
}
}).catch(() => {
this.baogaobianhao = ''
this.server.defaults.headers.common['projectMark'] = ''
})
} else if (this.isCy) {
// 去18版承压类进行查询
this.server({
url: '/archive/ysjl/getYsjlByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
if (data != null && data !== '') {
this.addCyData()
} else {
// 去16版机电类查询
this.server.defaults.headers.common['projectMark'] = 'OLD'
this.server({
url: '/archive/report/getReportByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
this.server.defaults.headers.common['projectMark'] = ''
if (data != null && data !== '') {
this.$message.error('请选择承压类纸质报告进行扫描!')
this.baogaobianhao = ''
} else {
this.addUnknownData()
}
}).catch(() => {
this.baogaobianhao = ''
this.server.defaults.headers.common['projectMark'] = ''
})
}
}).catch(() => {
this.baogaobianhao = ''
})
} else {
this.unknownScan()
}
} else {
this.baogaobianhao = ''
}
}
},
// 当未确定下来时
unknownScan() {
// 先去18版承压类进行查询
this.server({
url: '/archive/ysjl/getYsjlByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
if (data != null && data !== '') {
this.isCy = true
this.addCyData(data)
} else {
// 去16版机电类查询
this.server.defaults.headers.common['projectMark'] = 'OLD'
this.server({
url: '/archive/report/getReportByBgbh/' + this.baogaobianhao,
method: 'get'
}).then(data => {
this.server.defaults.headers.common['projectMark'] = ''
if (data != null && data !== '') {
this.isJd = true
this.addJdData(data)
} else {
this.addUnknownData()
}
}).catch(() => {
this.server.defaults.headers.common['projectMark'] = ''
this.baogaobianhao = ''
})
}
}).catch(() => {
this.baogaobianhao = ''
})
},
// 禁止扫码框粘贴
handlePaste() {
return false
},
addUnknownData() {
this.server({
url: '/archive/archive/checkArchiveState/' + this.baogaobianhao,
method: 'get'
}).then(() => {
this.paramList.unshift({ baogaobianhao: this.baogaobianhao })
this.baogaobianhao = ''
}).catch(() => {
this.baogaobianhao = ''
})
},
addCyData(data) {
this.paramList.unshift({
id: data.id,
baogaobianhao: data.baogaobianhao,
shebeizhonglei: data.shebeizhonglei,
shiyongdanwei: data.shiyongdanwei,
zhucedaima: data.zhucedaima,
shiyongdengjibianhao: data.shiyongdengjibianhao,
chanpinbianhao: data.chanpinbianhao
})
this.baogaobianhao = ''
},
addJdData(data) {
this.paramList.unshift({
annalid: data.annalid,
baogaobianhao: data.baogaobianhao,
shebeizhonglei: data.shebeizhonglei,
shiyongdanwei: data.shiyongdanwei,
zhucedaima: data.zhucedaima,
shiyongdengjibianhao: data.shiyongdengjibianhao,
chanpinbianhao: data.chanpinbianhao
})
this.baogaobianhao = ''
},
// 执行归档报告
doSubmit() {
let archiveParamList = Object.assign([], this.paramList)
if (this.isEdit) {
archiveParamList = archiveParamList.filter(archiveParam => !archiveParam.archiveId)
}
if (!this.archive.frameNum) {
this.$message.warning('请填写归档架号')
return false
}
if (archiveParamList.length === 0) {
this.$message.warning('请添加要归档的报告数据')
return false
}
this.$refs['archive'].validate(valid => {
if (valid) {
this.archive.archiveUser = this.$store.getters.nickname
this.archive.archiveCount = this.paramList.length
if (this.isCy) {
this.server({
url: '/archive/archive/addNew',
method: 'post',
data: {
archive: this.archive,
params: archiveParamList,
isEdit: this.isEdit
}
}).then(() => {
this.$message.success('添加成功。')
Utils.$emit('archive-list')
this.dialog = false
})
} else if (this.isJd) {
this.server({
url: '/archive/archive/addOld',
method: 'post',
data: {
archive: this.archive,
params: archiveParamList,
isEdit: this.isEdit
}
}).then(() => {
this.server.defaults.headers.common['projectMark'] = 'OLD'
archiveParamList = archiveParamList.filter(archiveParam => archiveParam.annalid)
this.server({
url: '/archive/report/updateReportState',
method: 'post',
data: {
params: archiveParamList
}
}).then(() => {
this.$message.success('添加成功。')
this.dialog = false
this.$nextTick(() => {
this.server.defaults.headers.common['projectMark'] = ''
Utils.$emit('archive-list')
})
})
})
} else {
this.server({
url: '/archive/archive/addOld',
method: 'post',
data: {
archive: this.archive,
params: archiveParamList,
isEdit: this.isEdit
}
}).then(() => {
this.$message.success('添加成功。')
this.dialog = false
Utils.$emit('archive-list')
})
}
} else {
return false
}
})
},
// 清空单条已归档数据
removeInfo($index) {
if ($index === 0) {
this.paramList.splice($index, $index + 1)
} else {
this.paramList.splice($index, 1)
}
},
// 关闭归档报告窗口触发事件
closeDialog() {
this.$refs['archive'].resetFields()
this.$refs.autoComplete.cleanNum()
this.archive = {}
this.baogaobianhao = ''
this.paramList = []
this.isCy = false
this.isJd = false
},
// AutoComplete组件通信
setValMethod(data) {
this.archive.frameNum = data
}
}
}
</script>