2025-09-25 19:20:00 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<!-- 弹窗内容区域 -->
|
|
|
|
|
|
<div class="app-container" style="height: calc(100vh - 84px);overflow-y:unset">
|
|
|
|
|
|
<div class="page-header">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<i class="el-icon-arrow-left goBack-btn" @click="goBack"
|
|
|
|
|
|
style="border-color: transparent;color: #00a288;background: transparent;padding-left: 0;padding-right: 0;"
|
|
|
|
|
|
>返回</i>
|
|
|
|
|
|
<span class="page-title">新增装备</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="dialog-footer" style="float: right">
|
|
|
|
|
|
<el-button size="medium" @click="goBack">取消</el-button>
|
|
|
|
|
|
<el-button type="primary" size="medium" @click="handleSubmit">确认</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<el-form
|
|
|
|
|
|
label-width="110px"
|
|
|
|
|
|
ref="formRef"
|
|
|
|
|
|
style="padding: 12px;overflow-y: auto;height: calc(100vh - 180px);width: 100%"
|
|
|
|
|
|
label-position="right"
|
|
|
|
|
|
:model="form"
|
|
|
|
|
|
:rules="equipRules"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="display:flex;padding-bottom: 5px">
|
|
|
|
|
|
<div style="width: 5px;background-color: #00a288;margin-right: 10px"></div>
|
|
|
|
|
|
基础信息
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-row :gutter="24" style="padding-top: 10px">
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="专业" prop="major">
|
|
|
|
|
|
<el-select v-model="form.major" placeholder="请选择专业" @change="majorChange" style="width: 100%"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in majorList"
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="工序" prop="process">
|
|
|
|
|
|
<el-cascader style="width: 100%" clearable
|
|
|
|
|
|
v-model="form.process"
|
|
|
|
|
|
placeholder="请选择工序"
|
|
|
|
|
|
:options="processList"
|
|
|
|
|
|
@change="processChange"
|
|
|
|
|
|
></el-cascader>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="装备类目" prop="category">
|
|
|
|
|
|
<el-cascader style="width: 100%" clearable
|
|
|
|
|
|
v-model="form.category"
|
|
|
|
|
|
:options="categoryList"
|
|
|
|
|
|
placeholder="请选择装备类目"
|
|
|
|
|
|
@change="categoryChange"
|
|
|
|
|
|
></el-cascader>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="装备名称" prop="name">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="30"
|
|
|
|
|
|
placeholder="请输入装备名称"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.name"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="24">
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="规格型号" prop="specificationModel">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="30"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.specificationModel"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请输入规格型号"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="资产原值" prop="originalValue">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
|
|
|
|
|
@input="handlePriceInput"
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="20"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.originalValue"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请输入资产原值"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-14 17:23:57 +08:00
|
|
|
|
<el-form-item label="生产厂家" prop="manufacturerId">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-select
|
2025-10-14 17:23:57 +08:00
|
|
|
|
v-model="form.manufacturerId"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
placeholder="请选择生产厂家"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in manufacturerList"
|
|
|
|
|
|
:key="item.id"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.id"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="生产日期" prop="productionDate">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-date-picker
|
|
|
|
|
|
v-model="form.productionDate"
|
|
|
|
|
|
type="date"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
placeholder="请选择生产日期"
|
2025-10-13 09:27:53 +08:00
|
|
|
|
value-format="yyyy-MM-dd"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="24">
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="下次维保日期" prop="nextMaintenanceDate">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-date-picker
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.nextMaintenanceDate"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请选择下次维保日期"
|
2025-10-13 09:27:53 +08:00
|
|
|
|
value-format="yyyy-MM-dd"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
type="date"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="装备原始编码" prop="originalCode">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
|
|
|
|
|
clearable
|
|
|
|
|
|
maxlength="20"
|
2025-10-13 19:20:43 +08:00
|
|
|
|
placeholder="请输入装备原始编码"
|
|
|
|
|
|
v-model="form.originalCode"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="最大使用年限" prop="maxServiceLifeYears">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
clearable
|
|
|
|
|
|
maxlength="20"
|
|
|
|
|
|
placeholder="请输入最大使用年限"
|
|
|
|
|
|
v-model="form.maxServiceLifeYears"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="管理模式" prop="manageType">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-select
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.manageType"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请选择管理方式"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
@change="deviceTypeChange"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option label="编码" :value="0"/>
|
|
|
|
|
|
<el-option label="数量" :value="1"/>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="24">
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="装备数量" prop="count">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.count"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请输入装备数量"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
maxlength="10"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
2025-10-13 19:20:43 +08:00
|
|
|
|
<el-form-item label="计数单位" prop="unit">
|
2025-09-25 19:20:00 +08:00
|
|
|
|
<el-input
|
2025-10-13 19:20:43 +08:00
|
|
|
|
v-model="form.unit"
|
2025-09-25 19:20:00 +08:00
|
|
|
|
placeholder="请输入计数单位"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
maxlength="11"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
2025-10-14 17:23:57 +08:00
|
|
|
|
<el-col :span="6">
|
2025-10-14 18:09:30 +08:00
|
|
|
|
<el-form-item label="采购日期" prop="purchaseDate">
|
2025-10-14 17:23:57 +08:00
|
|
|
|
<el-date-picker
|
|
|
|
|
|
v-model="form.purchaseDate"
|
2025-10-14 18:09:30 +08:00
|
|
|
|
placeholder="请选择采购日期"
|
2025-10-14 17:23:57 +08:00
|
|
|
|
value-format="yyyy-MM-dd"
|
|
|
|
|
|
type="date"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
2025-09-25 19:20:00 +08:00
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<div style="display:flex;padding-bottom: 10px">
|
|
|
|
|
|
<div style="width: 5px;background-color: #00a288;margin-right: 10px"></div>
|
|
|
|
|
|
特征属性
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-row :gutter="24" style="padding-top: 10px">
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="专业特征" prop="specialtyFeature">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="30"
|
|
|
|
|
|
v-model="form.specialtyFeature"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="工序特征" prop="processFeature">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="30"
|
|
|
|
|
|
v-model="form.processFeature"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
|
<el-form-item label="类目特征" prop="categoryFeature">
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
autocomplete="off"
|
|
|
|
|
|
maxlength="30"
|
|
|
|
|
|
v-model="form.categoryFeature"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<div style="display:flex;padding-bottom: 10px">
|
|
|
|
|
|
<div style="width: 5px;background-color: #00a288;margin-right: 10px"></div>
|
|
|
|
|
|
装备图片
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-row :gutter="24" style="padding-top: 10px">
|
|
|
|
|
|
<el-col>
|
|
|
|
|
|
<el-form-item label="展示图" prop="mainFileList">
|
|
|
|
|
|
<ImageUpload
|
|
|
|
|
|
v-model="form.mainFileList"
|
|
|
|
|
|
:value="form.mainFileList"
|
|
|
|
|
|
:limit="6"
|
|
|
|
|
|
@change="handleImageChange"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<div style="display:flex;padding-bottom: 10px">
|
|
|
|
|
|
<div style="width: 5px;background-color: #00a288;margin-right: 10px"></div>
|
|
|
|
|
|
相关证书
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-row :gutter="24" style="padding-top: 10px">
|
|
|
|
|
|
<el-col>
|
|
|
|
|
|
<el-form-item label="合格证" prop="certificateList">
|
|
|
|
|
|
<FileUpload
|
|
|
|
|
|
v-model="form.certificateList"
|
|
|
|
|
|
:value="form.certificateList"
|
|
|
|
|
|
:limit="3"
|
|
|
|
|
|
:fileSize="10"
|
|
|
|
|
|
:fileType="['doc','docx', 'ppt','pdf']"
|
|
|
|
|
|
@change="handleCertificateChange"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
|
|
<el-form-item label="检测证书" prop="inspectionList">
|
|
|
|
|
|
<FileUpload
|
|
|
|
|
|
v-model="form.inspectionList"
|
|
|
|
|
|
:value="form.inspectionList"
|
|
|
|
|
|
:limit="3"
|
|
|
|
|
|
:fileSize="10"
|
|
|
|
|
|
:fileType="['doc','docx', 'ppt','pdf']"
|
|
|
|
|
|
@change="handleInspectionChange"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
2025-10-13 19:20:43 +08:00
|
|
|
|
|
|
|
|
|
|
<el-form-item label="采购发票" prop="purchaseInvoices">
|
|
|
|
|
|
<FileUpload
|
|
|
|
|
|
v-model="form.purchaseInvoices"
|
|
|
|
|
|
:value="form.purchaseInvoices"
|
|
|
|
|
|
:limit="3"
|
|
|
|
|
|
:fileSize="10"
|
|
|
|
|
|
:fileType="['pdf', 'jpg', 'png', 'jpeg']"
|
|
|
|
|
|
@change="handlePurchaseInvoicesChange"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</el-form-item>
|
2025-09-25 19:20:00 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
addInterDevice,
|
2025-09-25 19:20:00 +08:00
|
|
|
|
getEquipmentAddIdApi,
|
|
|
|
|
|
firstLevel,
|
|
|
|
|
|
secondAndThirdLevel,
|
|
|
|
|
|
fourthToSixthLevel
|
|
|
|
|
|
} from '@/api/EquipmentEntryApply'
|
2025-10-13 19:20:43 +08:00
|
|
|
|
import { getManufacturerSelectApi } from '@/api/EquipmentLedger/index.js'
|
2025-09-25 19:20:00 +08:00
|
|
|
|
import ImageUpload from '@/components/ImageUpload'
|
|
|
|
|
|
import FileUpload from '@/components/ImageUpload'
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
name: 'EquipmentEntryEditDialog', // 明确组件名称
|
|
|
|
|
|
emits: ['update:isVisible', 'submit', 'getOrderId'], // 声明事件
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
// 下拉列表数据
|
|
|
|
|
|
majorList: [],
|
|
|
|
|
|
processList: [],
|
|
|
|
|
|
categoryList: [],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
manufacturerList: [],
|
2025-09-25 19:20:00 +08:00
|
|
|
|
form: {
|
|
|
|
|
|
major: '', // 专业
|
|
|
|
|
|
process: '', // 工序
|
|
|
|
|
|
category: '', // 类目
|
2025-10-13 19:20:43 +08:00
|
|
|
|
name: '', // 装备名称
|
|
|
|
|
|
specificationModel: '', // 规格型号
|
|
|
|
|
|
originalValue: '', // 资产原值
|
2025-09-25 19:20:00 +08:00
|
|
|
|
productionDate: '', // 出厂日期
|
2025-10-14 17:23:57 +08:00
|
|
|
|
manufacturerId: '', // 生产厂家
|
2025-10-13 19:20:43 +08:00
|
|
|
|
originalCode: '', // 装备原始编码
|
|
|
|
|
|
nextMaintenanceDate: '', // 下次维保日期
|
|
|
|
|
|
maxServiceLifeYears: '', // 装备寿命
|
|
|
|
|
|
manageType: '', // 管理模式
|
|
|
|
|
|
count: 1, // 装备数量
|
|
|
|
|
|
unit: '', // 计数单位
|
2025-10-14 17:23:57 +08:00
|
|
|
|
purchaseDate: '',
|
2025-09-25 19:20:00 +08:00
|
|
|
|
specialtyFeature: '', // 专业特征
|
|
|
|
|
|
processFeature: '', // 工序特征
|
|
|
|
|
|
categoryFeature: '', // 类目特征
|
2025-10-13 19:20:43 +08:00
|
|
|
|
// deviceTypeList: [], // 装备类型列表
|
2025-09-25 19:20:00 +08:00
|
|
|
|
mainFileList: [], // 展示图
|
|
|
|
|
|
certificateList: [], // 合格证
|
|
|
|
|
|
inspectionList: [] // 检测证书
|
|
|
|
|
|
},
|
|
|
|
|
|
// 表单校验规则(所有字段均为必填)
|
|
|
|
|
|
equipRules: {
|
|
|
|
|
|
major: [
|
|
|
|
|
|
{ required: true, message: '请选择专业', trigger: 'change' }
|
|
|
|
|
|
],
|
|
|
|
|
|
process: [
|
|
|
|
|
|
{ required: true, message: '请选择工序', trigger: 'change' }
|
|
|
|
|
|
],
|
|
|
|
|
|
category: [
|
|
|
|
|
|
{ required: true, message: '请选择装备类目', trigger: 'change' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
name: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入装备名称', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
specificationModel: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入规格型号', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
originalValue: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入资产原值', trigger: 'blur' }
|
|
|
|
|
|
],
|
|
|
|
|
|
productionDate: [
|
|
|
|
|
|
{ required: true, message: '请选择出厂日期', trigger: 'change' }
|
|
|
|
|
|
],
|
2025-10-14 17:23:57 +08:00
|
|
|
|
manufacturerId: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入生产厂家', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
originalCode: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入装备原始编码', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
nextMaintenanceDate: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请选择下次维保日期', trigger: 'change' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
maxServiceLifeYears: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入装备寿命', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
manageType: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请选择管理方式', trigger: 'change' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
count: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入装备数量', trigger: 'blur' }
|
|
|
|
|
|
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
unit: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请输入计数单位', trigger: 'blur' }
|
|
|
|
|
|
],
|
2025-10-14 18:10:21 +08:00
|
|
|
|
purchaseDate: [
|
|
|
|
|
|
{ required: true, message: '请选择采购日期', trigger: 'change' }
|
|
|
|
|
|
],
|
2025-10-13 19:20:43 +08:00
|
|
|
|
// deviceTypeList: [
|
|
|
|
|
|
// { required: true, message: '请选择装备类型', trigger: 'change' }
|
|
|
|
|
|
// ],
|
2025-10-13 09:27:53 +08:00
|
|
|
|
/* certificateList: [
|
2025-09-25 19:20:00 +08:00
|
|
|
|
{ required: true, message: '请上传合格证', trigger: 'change' }
|
|
|
|
|
|
],
|
|
|
|
|
|
inspectionList: [
|
|
|
|
|
|
{ required: true, message: '请上传检测证书', trigger: 'change' }
|
2025-10-13 09:27:53 +08:00
|
|
|
|
] */
|
2025-09-25 19:20:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
created() {
|
|
|
|
|
|
this.firstLevel()
|
2025-10-13 19:20:43 +08:00
|
|
|
|
this.getManufacturerSelectList()
|
2025-09-25 19:20:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
// 获取厂家
|
|
|
|
|
|
getManufacturerSelectList() {
|
|
|
|
|
|
getManufacturerSelectApi().then((res) => {
|
|
|
|
|
|
console.log('🚀 ~ getManufacturerSelectList ~ res:', res)
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
this.manufacturerList = res.data
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
2025-09-25 19:20:00 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 获取一级类型
|
|
|
|
|
|
*/
|
|
|
|
|
|
firstLevel() {
|
|
|
|
|
|
firstLevel().then(res => {
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
this.majorList = res.data
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
majorChange(item) {
|
|
|
|
|
|
if (!item) {
|
|
|
|
|
|
this.processList = []
|
|
|
|
|
|
this.form.process = ''
|
|
|
|
|
|
} else {
|
|
|
|
|
|
secondAndThirdLevel({ firstLevelId: item }).then(res => {
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
this.processList = this.convertToSubTree(res.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
processChange(item) {
|
|
|
|
|
|
if (item.length === 0) {
|
|
|
|
|
|
this.categoryList = []
|
|
|
|
|
|
this.form.category = ''
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fourthToSixthLevel({ thirdLevelId: item[item.length - 1] }).then(res => {
|
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
|
this.categoryList = this.convertToSubTree(res.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
categoryChange(item) {
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
// 返回上一页
|
|
|
|
|
|
goBack() {
|
2025-10-14 17:23:57 +08:00
|
|
|
|
// this.$router.go(-1)
|
|
|
|
|
|
this.$router.push({ path: '/equipment/equipment-input/index' })
|
2025-09-25 19:20:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
deviceTypeChange(val) {
|
|
|
|
|
|
if (val === 0) {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
this.form.count = '1'
|
2025-09-25 19:20:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 价格输入处理
|
|
|
|
|
|
handlePriceInput(v) {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
this.form.originalValue = v.replace(/[^\d.]/g, '')
|
2025-09-25 19:20:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
// 处理图片上传变化
|
|
|
|
|
|
handleImageChange(files) {
|
|
|
|
|
|
this.form.mainFileList = files
|
|
|
|
|
|
this.$refs.formRef.validateField('mainFileList')
|
|
|
|
|
|
},
|
|
|
|
|
|
// 处理合格证上传变化
|
|
|
|
|
|
handleCertificateChange(files) {
|
|
|
|
|
|
this.form.certificateList = files
|
|
|
|
|
|
this.$refs.formRef.validateField('certificateList')
|
|
|
|
|
|
},
|
|
|
|
|
|
// 处理检测证书上传变化
|
|
|
|
|
|
handleInspectionChange(files) {
|
|
|
|
|
|
this.form.inspectionList = files
|
|
|
|
|
|
this.$refs.formRef.validateField('inspectionList')
|
|
|
|
|
|
},
|
2025-10-13 19:20:43 +08:00
|
|
|
|
// 处理采购发票上传变化
|
|
|
|
|
|
handlePurchaseInvoicesChange(files) {
|
|
|
|
|
|
this.form.purchaseInvoices = files
|
|
|
|
|
|
this.$refs.formRef.validateField('purchaseInvoices')
|
|
|
|
|
|
},
|
2025-09-25 19:20:00 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 处理表单提交
|
|
|
|
|
|
*/
|
|
|
|
|
|
async handleSubmit() {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
console.log('🚀 ~ handleSubmit ~ this.form:', this.form)
|
2025-09-25 19:20:00 +08:00
|
|
|
|
this.$refs['formRef'].validate(async valid => {
|
|
|
|
|
|
if (valid) {
|
|
|
|
|
|
const result = await getEquipmentAddIdApi()
|
|
|
|
|
|
this.orderId = result.data.id
|
|
|
|
|
|
this.form.orderId = this.orderId
|
|
|
|
|
|
// 获取数组最后一个元素(最末级分类ID)
|
2025-10-13 09:27:53 +08:00
|
|
|
|
// this.form.typeId = this.form.deviceTypeList[this.form.deviceTypeList.length - 1]
|
|
|
|
|
|
// 获取类目的最后一个值
|
|
|
|
|
|
this.form.typeId = this.form.category[this.form.category.length - 1]
|
2025-10-14 17:23:57 +08:00
|
|
|
|
let appearanceImages = [] // 装备图片
|
|
|
|
|
|
let certificates = [] // 合格证
|
|
|
|
|
|
let inspectionReports = [] // 验收报告
|
|
|
|
|
|
let purchaseInvoices = [] // 采购发票
|
2025-10-13 19:20:43 +08:00
|
|
|
|
if (this.form.mainFileList) {
|
|
|
|
|
|
const arr = this.form.mainFileList.split(',')
|
|
|
|
|
|
console.log('🚀 ~ 提交 ~ arr:', arr)
|
2025-10-14 17:23:57 +08:00
|
|
|
|
appearanceImages = arr.map(item => {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
const parts = item.split('/')
|
|
|
|
|
|
return {
|
|
|
|
|
|
fileName: parts[parts.length - 1],
|
|
|
|
|
|
fileUrl: item
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-10-14 17:23:57 +08:00
|
|
|
|
console.log('🚀 ~ handleSubmit ~ appearanceImages:', appearanceImages)
|
2025-10-13 19:20:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (this.form.certificateList) {
|
|
|
|
|
|
const arr = this.form.certificateList.split(',')
|
2025-10-14 17:23:57 +08:00
|
|
|
|
certificates = arr.map(item => {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
const parts = item.split('/')
|
|
|
|
|
|
return {
|
|
|
|
|
|
fileName: parts[parts.length - 1],
|
|
|
|
|
|
fileUrl: item
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-10-14 17:23:57 +08:00
|
|
|
|
console.log('🚀 ~ handleSubmit ~ certificates:', certificates)
|
2025-10-13 19:20:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (this.form.inspectionList) {
|
|
|
|
|
|
const arr = this.form.inspectionList.split(',')
|
2025-10-14 17:23:57 +08:00
|
|
|
|
inspectionReports = arr.map(item => {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
const parts = item.split('/')
|
|
|
|
|
|
return {
|
|
|
|
|
|
fileName: parts[parts.length - 1],
|
|
|
|
|
|
fileUrl: item
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-10-14 17:23:57 +08:00
|
|
|
|
console.log('🚀 ~ handleSubmit ~ inspectionReports:', inspectionReports)
|
2025-10-13 19:20:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (this.form.purchaseInvoices) {
|
|
|
|
|
|
const arr = this.form.purchaseInvoices.split(',')
|
2025-10-14 17:23:57 +08:00
|
|
|
|
purchaseInvoices = arr.map(item => {
|
2025-10-13 19:20:43 +08:00
|
|
|
|
const parts = item.split('/')
|
|
|
|
|
|
return {
|
|
|
|
|
|
fileName: parts[parts.length - 1],
|
|
|
|
|
|
fileUrl: item
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-10-14 17:23:57 +08:00
|
|
|
|
console.log('🚀 ~ handleSubmit ~ purchaseInvoices:', purchaseInvoices)
|
2025-10-13 19:20:43 +08:00
|
|
|
|
}
|
2025-10-13 09:27:53 +08:00
|
|
|
|
|
2025-10-14 17:23:57 +08:00
|
|
|
|
const res = await addInterDevice({ ...this.form, appearanceImages, certificates, inspectionReports, purchaseInvoices })
|
2025-09-25 19:20:00 +08:00
|
|
|
|
if (res.code === 200) {
|
2025-10-13 21:54:00 +08:00
|
|
|
|
// this.goBack()
|
|
|
|
|
|
this.$router.push({
|
|
|
|
|
|
name: 'equipmentInput',
|
2025-10-14 17:23:57 +08:00
|
|
|
|
query: {
|
2025-10-13 21:54:00 +08:00
|
|
|
|
orderId: this.orderId,
|
|
|
|
|
|
isAddVisible: false,
|
|
|
|
|
|
isApprovalVisible: false
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-09-25 19:20:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 转换类型数据为树形结构(适用于级联选择器)
|
|
|
|
|
|
*/
|
|
|
|
|
|
convertToSubTree(list) {
|
|
|
|
|
|
const map = {}
|
|
|
|
|
|
const tree = []
|
|
|
|
|
|
|
|
|
|
|
|
// 构建节点映射
|
|
|
|
|
|
list.forEach(item => {
|
|
|
|
|
|
map[item.value] = {
|
|
|
|
|
|
value: item.value.toString(),
|
|
|
|
|
|
label: item.label
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// 构建树形关系
|
|
|
|
|
|
list.forEach(item => {
|
|
|
|
|
|
const current = map[item.value]
|
|
|
|
|
|
const parent = map[item.parentId]
|
|
|
|
|
|
|
|
|
|
|
|
if (parent) {
|
|
|
|
|
|
if (!parent.children) {
|
|
|
|
|
|
parent.children = []
|
|
|
|
|
|
}
|
|
|
|
|
|
parent.children.push(current)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
tree.push(current)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
return tree
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.page-header {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
padding-bottom: 15px;
|
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
border-bottom: 1px solid #e6e6e6;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.page-title {
|
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
margin-left: 15px;
|
|
|
|
|
|
color: #303133;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.dialog-content {
|
|
|
|
|
|
padding: 10px 0;
|
|
|
|
|
|
min-height: 200px; // 确保有足够高度
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.goBack-btn:hover {
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
color: #33b5a0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.dialog-footer {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
gap: 10px; // 按钮间距
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|