|
|
|
@ -8,21 +8,21 @@ |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1" rowspan="9" class="line-label wd10">设备基本情况</td> |
|
|
|
|
<td class="line-label">设备品种</td> |
|
|
|
|
<td class="w25"><el-input class="custom-input" v-model="formData.equipmentType" /></td> |
|
|
|
|
<td class="w25"><el-input :disabled="disabled" class="custom-input" v-model="formData.equipmentType" /></td> |
|
|
|
|
<td class="line-label">产品名称</td> |
|
|
|
|
<td class="w25"><el-input class="custom-input" v-model="formData.productName" /></td> |
|
|
|
|
<td class="w25"><el-input :disabled="disabled" class="custom-input" v-model="formData.productName" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">气瓶数量</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.cylinderQuantity" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.cylinderQuantity" /></td> |
|
|
|
|
<td class="line-label">充装介质</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.fillingMedium" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.fillingMedium" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">气瓶公称工作压力 (MPa)</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.nominalWorkingPressure" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.nominalWorkingPressure" /></td> |
|
|
|
|
<td class="line-label">气瓶容积 (L)</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.cylinderVolume" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.cylinderVolume" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label ">制造单位名称</td> |
|
|
|
@ -31,64 +31,64 @@ |
|
|
|
|
<td class="line-label ">单位内编号</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-for="(item, index) in formData.infoList" :key="index"> |
|
|
|
|
<td><el-input class="custom-input" v-model="item.manufacturer" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="item.productionDate" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="item.productId" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="item.internalId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="item.manufacturer" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="item.productionDate" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="item.productId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="item.internalId" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<!-- <tr> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.manufacturer" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.productionDate" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.productId" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.internalId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.manufacturer" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.productionDate" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.productId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.internalId" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.manufacturer" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.productionDate" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.productId" /></td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.internalId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.manufacturer" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.productionDate" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.productId" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.internalId" /></td> |
|
|
|
|
</tr> --> |
|
|
|
|
<!-- 其他字段 --> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label" >施工单位名称</td> |
|
|
|
|
<td colspan="3"><el-input class="custom-input" v-model="formData.contractor" /></td> |
|
|
|
|
<td colspan="3"><el-input :disabled="disabled" class="custom-input" v-model="formData.contractor" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label" colspan="1">监督检验机构名称</td> |
|
|
|
|
<td colspan="3"><el-input class="custom-input" v-model="formData.supervisionAgency" /></td> |
|
|
|
|
<td colspan="3"><el-input :disabled="disabled" class="custom-input" v-model="formData.supervisionAgency" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1" rowspan="6" class="line-label wd10">设备使用情况</td> |
|
|
|
|
<td colspan="1" class="line-label">使用单位名称</td> |
|
|
|
|
<td colspan="3"><el-input class="custom-input" v-model="formData.userUnit" /></td> |
|
|
|
|
<td colspan="3"><el-input :disabled="disabled" class="custom-input" v-model="formData.userUnit" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1" class="line-label">使用单位地址</td> |
|
|
|
|
<td colspan="3"><el-input class="custom-input" v-model="formData.userAddress" /></td> |
|
|
|
|
<td colspan="3"><el-input :disabled="disabled" class="custom-input" v-model="formData.userAddress" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">使用单位统一社会信用代码</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.unifiedSocialCode" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.unifiedSocialCode" /></td> |
|
|
|
|
<td class="line-label">邮政编码</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.postalCode" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.postalCode" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">车牌号</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.licensePlate" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.licensePlate" /></td> |
|
|
|
|
<td class="line-label">车辆VIN码</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.vehicleVin" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.vehicleVin" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">投入使用日期</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.commissionDate" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.commissionDate" /></td> |
|
|
|
|
<td class="line-label">单位固定电话</td> |
|
|
|
|
<td> <el-input class="custom-input" v-model="formData.telephone" /></td> |
|
|
|
|
<td> <el-input :disabled="disabled" class="custom-input" v-model="formData.telephone" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="line-label">安全管理员</td> |
|
|
|
|
<td><el-input class="custom-input" v-model="formData.safetyManager" /></td> |
|
|
|
|
<td><el-input :disabled="disabled" class="custom-input" v-model="formData.safetyManager" /></td> |
|
|
|
|
<td class="line-label">移动电话</td> |
|
|
|
|
<td> <el-input class="custom-input" v-model="formData.mobilePhone" /></td> |
|
|
|
|
<td> <el-input :disabled="disabled" class="custom-input" v-model="formData.mobilePhone" /></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td class="dark-text" colspan="5"> |
|
|
|
@ -111,7 +111,7 @@ |
|
|
|
|
</table> |
|
|
|
|
<div class="dark-text tation">注:本式样适用于车用气瓶使用登记。</div> |
|
|
|
|
<div class="footer"> |
|
|
|
|
<el-button type="primary" @click="exportToWord">导出为Word</el-button> |
|
|
|
|
<el-button type="primary" @click="handleSubmit">{{disabled?'下载':'保存并下载'}}</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
@ -121,16 +121,22 @@ |
|
|
|
|
import JSZipUtils from 'jszip-utils' //JS解析文件 |
|
|
|
|
import Docxtemplater from 'docxtemplater' |
|
|
|
|
import { saveAs } from 'file-saver' |
|
|
|
|
import * as TicketSortApi from '@/api/ticketing/ticketsort' |
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
props: { |
|
|
|
|
initialData: { |
|
|
|
|
type: Object, |
|
|
|
|
default: () => ({}) |
|
|
|
|
}, |
|
|
|
|
disabled:{ |
|
|
|
|
type: Boolean, |
|
|
|
|
default: false |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
isout:false, |
|
|
|
|
formData: { |
|
|
|
|
"registrationCategory": "",//登记类别 |
|
|
|
|
"equipmentType": "",//设备品种 |
|
|
|
@ -169,10 +175,74 @@ |
|
|
|
|
}, |
|
|
|
|
created() { |
|
|
|
|
if (this.initialData) { |
|
|
|
|
if(this.initialData.infoList.length <3){ |
|
|
|
|
const requiredLength = 3; |
|
|
|
|
const emptyItem = { |
|
|
|
|
manufacturer: '', |
|
|
|
|
productionDate: '', |
|
|
|
|
productId: '', |
|
|
|
|
internalId: '' |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
while (this.initialData.infoList.length < requiredLength) { |
|
|
|
|
this.initialData.infoList.push({ ...emptyItem }); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.formData = { ...this.initialData } |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
async handleSubmit() { |
|
|
|
|
debugger |
|
|
|
|
if(!this.isout){ |
|
|
|
|
this.exportToWord() |
|
|
|
|
} |
|
|
|
|
if(this.disabled){ |
|
|
|
|
this.exportToWord() |
|
|
|
|
} |
|
|
|
|
if(!this.disabled){ |
|
|
|
|
try { |
|
|
|
|
|
|
|
|
|
console.log(this.formData) |
|
|
|
|
let appendDate = {...this.formData} |
|
|
|
|
//以下暂时写固定值 |
|
|
|
|
appendDate.manufacturer = "XX制造有限公司" |
|
|
|
|
appendDate.productionDate = "2025-04-11" |
|
|
|
|
appendDate.productId = new Date().getTime(); |
|
|
|
|
appendDate.internalId = new Date().toLocaleDateString().split('/').join('-') |
|
|
|
|
//以上暂时写固定值 |
|
|
|
|
if(appendDate.infoList.length <3){ |
|
|
|
|
const requiredLength = 3; |
|
|
|
|
const emptyItem = { |
|
|
|
|
manufacturer: '', |
|
|
|
|
productionDate: '', |
|
|
|
|
productId: '', |
|
|
|
|
internalId: '' |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
while (appendDate.infoList.length < requiredLength) { |
|
|
|
|
appendDate.infoList.push({ ...emptyItem }); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
appendDate.infoList = JSON.stringify(appendDate.infoList) |
|
|
|
|
await TicketSortApi.createOcr(appendDate).then(res => { |
|
|
|
|
console.log(res) |
|
|
|
|
if (res.code === 0) { |
|
|
|
|
this.$modal.msgSuccess('记录保存成功') |
|
|
|
|
this.$tab.closeAllPage(); |
|
|
|
|
const ss = { path: "/report/eventList/index", name: "事项清单" }; |
|
|
|
|
this.$tab.refreshPage(ss); |
|
|
|
|
}else{ |
|
|
|
|
this.$modal.msgError('记录保存失败') |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} catch (error) { |
|
|
|
|
console.log(error) |
|
|
|
|
} finally { |
|
|
|
|
this.$modal.closeLoading(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
async exportToWord() { |
|
|
|
|
// 加载模板文件(需放在public/templates目录下) |
|
|
|
|
let _this = this; |
|
|
|
@ -180,7 +250,6 @@ |
|
|
|
|
|
|
|
|
|
// 读取并获得模板文件的二进制内容 |
|
|
|
|
JSZipUtils.getBinaryContent("/templates/template.docx", function (error, content) { |
|
|
|
|
debugger |
|
|
|
|
// input.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据 |
|
|
|
|
// 抛出异常 |
|
|
|
|
if (error) { |
|
|
|
@ -221,13 +290,8 @@ |
|
|
|
|
}); |
|
|
|
|
// 将目标文件对象保存为目标类型的文件,并命名 |
|
|
|
|
saveAs(out, "特种设备使用登记表(式样二).docx"); |
|
|
|
|
_this.$modal.closeLoading(); |
|
|
|
|
_this.$modal.notify("文件已导出,请注意查看浏览器下载的文件"); |
|
|
|
|
setTimeout(() => { |
|
|
|
|
_this.$tab.closeAllPage(); |
|
|
|
|
const ss = { path: "/eventList", name: "事项清单" }; |
|
|
|
|
_this.$tab.refreshPage(ss); |
|
|
|
|
}, 2000); |
|
|
|
|
_this.isout = true |
|
|
|
|
}); |
|
|
|
|
// this.$tab.closeAllPage(); |
|
|
|
|
// const ss = { path: "/eventList", name: "事项清单" }; |
|
|
|
@ -351,4 +415,8 @@ |
|
|
|
|
line-height: 24px; |
|
|
|
|
border: none; |
|
|
|
|
} |
|
|
|
|
.custom-input.is-disabled .el-input__inner{ |
|
|
|
|
color: #000; |
|
|
|
|
background-color: transparent; |
|
|
|
|
} |
|
|
|
|
</style> |