zhangherong
2025-03-25 e59527c22e7598e0c099b01893885cbd7f9eb020
src/views/eam/equipment/modules/EamEquipmentModal.vue
@@ -3,234 +3,229 @@
    :title="title"
    :width="1200"
    :visible="visible"
    centered
    :confirmLoading="confirmLoading"
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-divider
          orientation="center"
          style="font-size: large;font-style: italic;color: #66aeed;"
        > 设备基础信息
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 设备基础信息
        </a-divider>
        <a-row :gutter="24">
          <a-col :span="18">
            <a-row>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentCode" label="设备编号">
                  <a-input placeholder="请输入设备编号" v-model="model.equipmentCode" />
                <a-form-model-item prop="equipmentCode" label="设备编号">
                  <a-input placeholder="请输入设备编号" v-model="model.equipmentCode" :disabled="editable || disableSubmit" />
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentName" label="设备名称">
                  <a-input placeholder="请输入设备名称" v-model="model.equipmentName" />
                <a-form-model-item prop="equipmentName" label="设备名称">
                  <a-input placeholder="请输入设备名称" v-model="model.equipmentName"  :disabled="disableSubmit" />
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentModel" label="设备型号">
                  <a-input placeholder="请输入设备型号" v-model="model.equipmentModel" />
                <a-form-model-item prop="equipmentModel" label="设备型号">
                  <a-input :placeholder="disableSubmit?'':'请输入设备型号'" v-model="model.equipmentModel" :disabled="disableSubmit"/>
                </a-form-model-item>
              </a-col>
            </a-row>
            <a-row>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentSpecification"
                <a-form-model-item prop="equipmentSpecification"
                                   label="设备规格">
                  <a-input placeholder="请输入设备规格" v-model="model.equipmentSpecification" />
                  <a-input :placeholder="disableSubmit?'':'请输入设备规格'" v-model="model.equipmentSpecification" :disabled="disableSubmit"/>
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentCategory"
                <a-form-model-item prop="equipmentCategory"
                                   label="设备分类">
                  <j-dict-select-tag dict-code="equipment_category" placeholder="请选择设备分类" v-model="model.equipmentCategory" />
                  <j-dict-select-tag dict-code="equipment_category" placeholder="请选择设备分类"
                                     v-model="model.equipmentCategory" :disabled="disableSubmit" />
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operationSystem"
                <a-form-model-item prop="operationSystem"
                                   label="操作系统">
                  <a-input placeholder="请输入操作系统" v-model="model.operationSystem" />
                  <a-input :placeholder="disableSubmit?'':'请输入操作系统'" v-model="model.operationSystem" :disabled="disableSubmit" />
                </a-form-model-item>
              </a-col>
            </a-row>
            <a-row>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentImportance"
                <a-form-model-item prop="equipmentImportance"
                                   label="关键设备标识">
                  <lx-switch
                    checked-children='是'
                    un-checked-children='否'
                    v-model="model.equipmentImportance"
                    :disabled="disableSubmit"
                  />
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentPower" label="总功率">
                  <a-input placeholder="请输入总功率" v-model="model.equipmentPower" />
                <a-form-model-item prop="equipmentPower" label="总功率">
                  <a-input :placeholder="disableSubmit?'':'请输入总功率'" v-model="model.equipmentPower" :disabled="disableSubmit"/>
                </a-form-model-item>
              </a-col>
              <a-col :span="8">
                <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cardNumber" label="立项卡号">
                  <a-input placeholder="请输入立项卡号" v-model="model.cardNumber" />
                <a-form-model-item prop="cardNumber" label="立项卡号">
                  <a-input :placeholder="disableSubmit?'':'请输入立项卡号'" v-model="model.cardNumber" :disabled="disableSubmit"/>
                </a-form-model-item>
              </a-col>
            </a-row>
          </a-col>
          <a-col :span="6">
            <j-image-upload></j-image-upload>
            <j-image-upload text="设备图片" biz="eam_equipment_image" v-model="model.equipmentImage"></j-image-upload>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentWeight" label="重量">
              <a-input placeholder="请输入重量" v-model="model.equipmentWeight" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentPort" label="设备端口">
              <a-input placeholder="请输入设备端口" v-model="model.equipmentPort" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="coordinateNum" label="坐标数量">
              <a-input-number v-model="model.coordinateNum" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetStatus" label="资产状态">
              <j-dict-select-tag dict-code="asset_status" placeholder="请选择资产状态" v-model="model.assetStatus" disabled/>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-divider
          orientation="center"
          style="font-size: large;font-style: italic;color: #66aeed;"
        > 出厂信息
        </a-divider>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryNumber" label="出厂编号">
              <a-input placeholder="请输入出厂编号" v-model="model.factoryNumber" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leaveFactoryDate" label="出厂日期">
              <a-date-picker placeholder="请选择出厂日期" v-model="model.leaveFactoryDate" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="acceptanceCheckDate"
                               label="验收日期">
              <a-date-picker placeholder="请选择验收日期" v-model="model.acceptanceCheckDate" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="installationPosition"
                               label="安装位置">
              <a-input placeholder="请输入安装位置" v-model="model.installationPosition" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="spindleConnectDimension"
                               label="主轴连接尺寸">
              <a-input placeholder="请输入主轴连接尺寸" v-model="model.spindleConnectDimension" />
            <a-form-model-item prop="equipmentWeight" label="重量">
              <a-input :placeholder="disableSubmit?'':'请输入重量'" v-model="model.equipmentWeight" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="specialEquipment"
                               label="是否特种设备">
              <lx-switch
                checked-children='是'
                un-checked-children='否'
                v-model="model.specialEquipment"
              />
            <a-form-model-item prop="equipmentPort" label="设备端口">
              <a-input :placeholder="disableSubmit?'':'请输入设备端口'" v-model="model.equipmentPort" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="manufacturingEnterprise"
                               label="制造厂家">
              <a-input placeholder="请输入制造厂家" v-model="model.manufacturingEnterprise" />
            <a-form-model-item prop="coordinateNum" label="坐标数量">
              <a-input-number :placeholder="disableSubmit?'':'请输入坐标数量'" v-model="model.coordinateNum" style="width: 100%" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originCountry" label="来源国家">
              <a-input placeholder="请输入来源国家" v-model="model.originCountry" />
            <a-form-model-item prop="assetStatus" label="资产状态">
              <j-dict-select-tag dict-code="asset_status" v-model="model.assetStatus"
                                 disabled/>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-divider
          orientation="center"
          style="font-size: large;font-style: italic;color: #66aeed;"
        > 使用信息
        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 出厂信息
        </a-divider>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orgId" label="使用部门">
              <a-input placeholder="请输入使用部门" v-model="model.orgId" />
            <a-form-model-item prop="factoryNumber" label="出厂编号">
              <a-input :placeholder="disableSubmit?'':'请输入出厂编号'" v-model="model.factoryNumber" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentManager" label="设备管理员">
              <a-input placeholder="请输入设备管理员" v-model="model.equipmentManager" />
            <a-form-model-item prop="leaveFactoryDate" label="出厂日期">
              <a-date-picker placeholder="请选择出厂日期" v-model="model.leaveFactoryDate" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technologyStatus" label="技术状态">
              <j-dict-select-tag dict-code="technology_status" placeholder="请选择技术状态" v-model="model.technologyStatus" />
            <a-form-model-item prop="acceptanceCheckDate" label="验收日期">
              <a-date-picker placeholder="请选择验收日期" v-model="model.acceptanceCheckDate" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mdcFlag" label="是否实施MDC">
              <lx-switch
                checked-children='是'
                un-checked-children='否'
                v-model="model.mdcFlag"
              />
            <a-form-model-item prop="installationPosition" label="安装位置">
              <a-input :placeholder="disableSubmit?'':'请输入安装位置'" v-model="model.installationPosition" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warrantyStartDate"
                               label="质保开始日期">
              <a-date-picker placeholder="请选择开始日期" v-model="model.warrantyStartDate" />
            <a-form-model-item prop="spindleConnectDimension" label="主轴连接尺寸">
              <a-input :placeholder="disableSubmit?'':'请输入主轴连接尺寸'" v-model="model.spindleConnectDimension" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warrantyEndDate"
                               label="质保结束日期">
              <a-date-picker placeholder="请选择结束日期" v-model="model.warrantyEndDate" />
            <a-form-model-item prop="specialEquipment" label="是否特种设备">
              <lx-switch checked-children='是' un-checked-children='否' v-model="model.specialEquipment" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processParametersFlag"
                               label="有无工艺参数">
              <lx-switch
                checked-children='有'
                un-checked-children='无'
                v-model="model.processParametersFlag"
              />
            <a-form-model-item prop="manufacturingEnterprise" label="制造厂家">
              <a-input :placeholder="disableSubmit?'':'请输入制造厂家'" v-model="model.manufacturingEnterprise" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionParametersFlag"
                               label="有无精度参数">
              <lx-switch
                checked-children='有'
                un-checked-children='无'
                v-model="model.precisionParametersFlag"
              />
            <a-form-model-item prop="originCountry" label="来源国家">
              <a-input :placeholder="disableSubmit?'':'请输入来源国家'" v-model="model.originCountry" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 使用信息
        </a-divider>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item prop="orgId" label="使用车间">
              <a-tree-select v-model="model.orgId"
                             style="width: 100%"
                             :tree-data="treeData"
                             :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
                             placeholder="请选择使用车间"
                             allow-clear
                             tree-default-expand-all
                             :disabled="editable || disableSubmit"
                >
              </a-tree-select>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="equipmentManager" label="设备管理员">
              <j-search-select-tag  placeholder="请选择设备管理员" v-model="model.equipmentManager" dict="sys_user,realname, username, del_flag=0" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="technologyStatus" label="技术状态">
              <j-dict-select-tag dict-code="technology_status" placeholder="请选择技术状态"
                                 v-model="model.technologyStatus" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="mdcFlag" label="是否实施MDC">
              <lx-switch checked-children='是' un-checked-children='否' @change="handleMdcFlagChange" v-model="model.mdcFlag" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6" v-if="model.mdcFlag === '1'">
            <a-form-model-item prop="deviceType" label="MDC设备类型">
              <j-search-select-tag placeholder="请选择设备类型" v-model="model.deviceType" dict="mdc_equipment_type,equipment_type_name, equipment_type_name, equipment_type_states='Y'" :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-model-item prop="warrantyStartDate" label="质保开始日期">
              <a-date-picker :placeholder="disableSubmit?'':'请选择开始日期'" v-model="model.warrantyStartDate" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="warrantyEndDate" label="质保结束日期">
              <a-date-picker :placeholder="disableSubmit?'':'请选择结束日期'" v-model="model.warrantyEndDate" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="processParametersFlag" label="有无工艺参数">
              <lx-switch checked-children='有' un-checked-children='无' v-model="model.processParametersFlag" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item prop="precisionParametersFlag" label="有无精度参数">
              <lx-switch checked-children='有' un-checked-children='无' v-model="model.precisionParametersFlag" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="24">
            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="备注">
              <a-textarea placeholder="请输入备注" v-model="model.remark" />
            <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="备注">
              <a-textarea :placeholder="disableSubmit?'':'请输入备注'" v-model="model.remark" :disabled="disableSubmit"/>
            </a-form-model-item>
          </a-col>
        </a-row>
@@ -240,25 +235,38 @@
</template>
<script>
import { httpAction } from '@/api/manage'
import { getAction, httpAction } from '@/api/manage'
import { validateDuplicateValueInDelFlag } from '@/utils/util'
import JSelectProduction from '@comp/jeecgbiz/JSelectProduction.vue'
export default {
  name: 'EamEquipmentModal',
  components: { JSelectProduction },
  data() {
    return {
      title: '操作',
      visible: false,
      //控制编辑
      editable: false,
      //详情控制
      disableSubmit: false,
      model: {},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 10 }
        sm: { span: 9 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 14 }
      },
      labelColLong: {
        xs: { span: 24 },
        sm: { span: 2 }
      },
      wrapperColLong: {
        xs: { span: 24 },
        sm: { span: 22 }
      },
      confirmLoading: false,
      validatorRules: {
        equipmentCode: [
@@ -266,35 +274,50 @@
          { validator: (rule, value, callback) => validateDuplicateValueInDelFlag('eam_equipment', 'equipment_code', value, this.model.id, true, callback) }
        ],
        equipmentName: [
          { required: true, message: '请输入设备名称' },
          { required: true, message: '请输入设备名称' }
        ],
        equipmentCategory: [
          { required: true, message: '请选择设备分类' },
          { required: true, message: '请选择设备分类' }
        ],
        leaveFactoryDate: [
          { required: true, message: '请选择出厂日期' },
          { required: true, message: '请选择出厂日期' }
        ],
        acceptanceCheckDate: [
          { required: true, message: '请选择验收日期' },
          { required: true, message: '请选择验收日期' }
        ],
        technologyStatus: [
          { required: true, message: '请选择技术状态' },
          { required: true, message: '请选择技术状态' }
        ],
        orgId: [
          { required: true, message: '请选择使用车间' }
        ],
        equipmentManager: [
          { required: true, message: '请选择设备管理员' }
        ],
        deviceType: [
          { required: false, message: '请选择设备类型' }
        ]
      },
      url: {
        add: '/eam/equipment/add',
        edit: '/eam/equipment/edit'
      }
        edit: '/eam/equipment/edit',
        loadProductionOptions:'/mdc/mdcProduction/loadProductionTreeOptions'
      },
      treeData: [],
    }
  },
  created() {
    this.loadAllProductionTree();
  },
  methods: {
    add() {
      this.editable = false;
      //初始化默认值
      this.edit({})
      this.model = {};
      this.visible = true
    },
    edit(record) {
      this.editable = true;
      this.model = Object.assign({}, record)
      this.visible = true
    },
@@ -336,12 +359,55 @@
    },
    handleCancel() {
      this.close()
    },
    loadAllProductionTree() {
      //加载车间选择树
      getAction(this.url.loadProductionOptions).then(res => {
        if (res.success) {
          this.treeData = [...res.result]
        }else {
          that.$message.warning(res.message)
        }
      })
    },
    handleMdcFlagChange(checked){
      this.model.deviceType = '';
      if (checked) {
        this.validatorRules.deviceType[0].required = true
      } else {
        this.validatorRules.deviceType[0].required = false
      }
    }
  }
}
</script>
<style lang="less" scoped>
/deep/ .ant-modal-body {
  padding: 0 24px;
}
/deep/ .ant-upload {
  width: 185px;
  height: 185px;
}
/deep/ .img {
  display: flex;
  justify-content: center;
  .ant-upload-picture-card-wrapper {
    width: auto;
  }
}
/deep/ .ant-upload-list-picture-card-container {
  width: 185px;
  height: 185px;
}
/deep/ .ant-upload-list-item {
  width: 185px;
  height: 185px;
}
</style>