“linengliang”
2023-08-25 02d86ec24676f6d682277eb8e493e755d677c179
设备台账2.0
已添加8个文件
2906 ■■■■■ 文件已修改
src/views/eam/modules/equipmentNew/EquipmentDocumentModal.vue 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/equipmentNew/EquipmentModal.vue 693 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/equipmentNew/EquipmentPrecisionParametersModal.vue 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/equipmentNew/EquipmentProcessParametersModal.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/newEquipment/EquipmentDocumentList.vue 395 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/newEquipment/EquipmentList.vue 640 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/newEquipment/EquipmentPrecisionParametersList.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/newEquipment/EquipmentProcessParametersList.vue 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/eam/modules/equipmentNew/EquipmentDocumentModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,264 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="文档编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
              <a-input
                placeholder="请输入文档编号"
                v-model="model.num"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="文档类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fileType">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择文档类型"
                :triggerChange="true"
                dictCode="common_upload_type"
                v-model="model.fileType"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="文档上传" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fileType">
              <a-upload-dragger
                name="file"
                :customRequest="customRequest"
                @change="handleChange"
                :file-list="fileList"
                :multiple="false"
              >
                <p class="ant-upload-drag-icon">
                  <a-icon type="inbox" />
                </p>
                <p class="ant-upload-text">
                  ç‚¹å‡»ä¸Šä¼ æˆ–拖拽文件至该区域进行上传
                </p>
                <p class="ant-upload-hint">
                  ä»…支持单文件上传
                </p>
              </a-upload-dragger>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="文件名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
              <a-input
                placeholder="请输入文件名称"
                v-model="model.name"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
              <a-textarea
                placeholder="请输入备注"
                allow-clear
                v-model="model.remark"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
<script>
  import { httpAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
import { getAction, postFileAction } from '../../../../api/manage'
import { ACCESS_TOKEN, TENANT_ID } from "@/store/mutation-types"
import Vue from 'vue'
  export default {
    name: "EquipmentDocumentModal",
    components: {
    },
    props:{
      mainId:{
        type:String,
        required:false,
        default:''
      }
    },
    data () {
      return {
        title:"操作",
        width:800,
        visible: false,
        model:{
        },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        headers: {},
        confirmLoading: false,
        validatorRules: {
          num:[
           { required: true, message: '请输入文档编号!' },
          ],
          fileType:[
           { required: true, message: '请输入选择类型!' },
          ]
        },
        url: {
          add: "/eam/equipmentDocument/add",
          edit: "/eam/equipmentDocument/edit",
          listByBusIdAndBusType: "/system/sysUploadRela/listByBusIdAndBusType",
        },
        fileList: [],
        fileObject: {},
        isFileChange: false,
        uploadId: '',
      }
    },
    created () {
    //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
       // this.initFileTypes();
        const token = Vue.ls.get(ACCESS_TOKEN);
        const tenantid = Vue.ls.get(TENANT_ID)
        this.headers = {
          'Content-Type': 'multipart/form-data',
          "X-Access-Token": token,
          'X-Access-Tenant': tenantid
        };
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      customRequest(val) {
      if (this.fileList.length == 0) {
        this.fileObject = val;
      }
      },
      handleChange(info) {
      //默认给附件状态,仅控制样式
      let file = info.file;
      //文件更改,标记更新
      if (this.model.id) {
        this.isFileChange = true;
      }
      //删除
      if (file.status == "removed") {
        this.fileList = [];
        this.fileObject.file = {};
        this.model.name=''
        return false;
      }
      //单文件控制
      if (this.fileList.length > 0) {
        this.$message.warning("当前仅允许上传一个文件!");
        return false;
      }
      file.status = 'done';
      //页面展示上传文件
      this.fileList.push(file);
      this.model.name = file.name;
      this.model = Object.assign({}, this.model);
    },
      edit (record) {
        this.fileList = [];
        this.uploadId = ''
        this.model = Object.assign({}, record);
        var that = this;
        getAction(that.url.listByBusIdAndBusType, { busId: record.id, busType: 'equipment_file' }).then((res) => {
        if (res.success) {
          for (let i = 0; i < res.result.length; i++) {
            that.fileList.push({
              uid: res.result[i].upload.id,
              name: res.result[i].upload.name,
              status: "done",
            })
            that.$nextTick(() => {
              that.model.name = res.result[i].upload.name
            });
          }
        }
      })
        this.visible = true;
      },
      close () {
        this.$emit('close');
        this.visible = false;
        this.$refs.form.clearValidate();
      },
      handleOk () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (JSON.stringify(that.fileObject.file) == '{}' && that.uploadId == '' && that.fileList.length == 0) {
                that.$message.warning("请上传文件");
                return false
          }
          if (valid) {
              that.confirmLoading = true;
              let formData = Object.assign({}, that.model);
              let httpurl = ''
              let method = ''
              if (!that.model.id) {
                httpurl += that.url.add;
                method = 'post';
                formData.equipmentId = that.mainId;
              } else {
                httpurl += that.url.edit;
                method = 'put';
              }
              formData.type = "equipment_file";
              formData.uploadId = that.uploadId;
              // formData.fileType = "7";//文件类型  7:图片
              var saveDate = new FormData();
              formData.isFileChange = that.isFileChange;
              saveDate.append("file", that.fileObject.file);
              saveDate.append('data', JSON.stringify(formData));
              postFileAction(httpurl, saveDate, this.headers).then((res) => {
                if (res.success) {
                  that.$message.success(res.message);
                  that.$emit('ok');
                } else {
                  that.$message.warning(res.message);
                }
              }).finally(() => {
                that.confirmLoading = false;
                that.close();
              })
          }else{
             return false
          }
        })
      },
      handleCancel () {
        this.close()
      },
    },
  }
</script>
src/views/eam/modules/equipmentNew/EquipmentModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,693 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules" >
        <a-row>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> è®¾å¤‡åŸºç¡€ä¿¡æ¯ </a-divider>
          <a-col :span="6">
            <a-form-model-item label="设备所属分类" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentCategoryId">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择设备所属分类"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="mom_eam_equipment_category,name,id"
                v-model="model.equipmentCategoryId"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="统一编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
              <a-input v-model="model.num" placeholder="由系统生成"  :disabled="formDisabled"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="设备名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
              <a-input v-model="model.name" placeholder="请输入设备名称"  :disabled="formDisabled"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="型号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="model">
              <a-input v-model="model.model" placeholder="请输入型号"  :disabled="formDisabled"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="规格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="specification">
              <a-input v-model="model.specification" placeholder="请输入规格"  :disabled="formDisabled" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="总功率" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="gpo">
              <a-input v-model="model.gpo" placeholder="请输入总功率" :disabled="formDisabled"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="设备图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentPhoto">
              <j-image-upload
                :isMultiple="false"
                v-model="model.equipmentPhoto"
              ></j-image-upload>
            </a-form-model-item>
          </a-col>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">维护及使用信息</a-divider>
          <a-col :span="6">
            <a-form-model-item label="维护部门" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="manageId">
              <a-tree-select
                :disabled="formDisabled"
                style="width: 100%"
                :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
                :tree-data="treeData"
                placeholder="请选择维护部门"
                tree-default-expand-all
                v-model="model.manageId"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="使用部门" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="useId">
              <a-tree-select
                style="width: 100%"
                :disabled="formDisabled"
                :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
                :tree-data="treeData"
                placeholder="请选择使用部门"
                tree-default-expand-all
                v-model="model.useId"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="维修班组" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="teamId">
              <j-dict-select-tag
                allow-clear
                :disabled="formDisabled"
                placeholder="请选择责任班组"
                :triggerChange="true"
                dictCode="mom_base_team,name,id,status='1' and del_flag='0'"
                v-model="model.teamId"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="资产制造商" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="constructorId">
              <j-dict-select-tag
                allow-clear
                :disabled="formDisabled"
                placeholder="请选择资产制造商"
                :triggerChange="true"
                dictCode="mom_base_constructor,name,id,status!='0' and del_flag!='1'"
                v-model="model.constructorId"
              />
            </a-form-model-item>
          </a-col>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">状态及标识</a-divider>
          <a-col :span="6">
            <a-form-model-item label="关键设备标识" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="specificEquipment">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择关键设备标识"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="specific_equipment"
                v-model="model.specificEquipment"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="设备状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentStatus">
              <j-dict-select-tag
                allow-clear
                :disabled="formDisabled"
                placeholder="请输入设备状态"
                :triggerChange="true"
                dictCode="equipment_status"
                v-model="model.equipmentStatus"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="技术状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technologyStatus">
              <j-dict-select-tag
                allow-clear
                :disabled="formDisabled"
                placeholder="请选择技术状态"
                :triggerChange="true"
                dictCode="technology_status"
                v-model="model.technologyStatus"
              />
            </a-form-model-item>
          </a-col>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">出厂及安装信息</a-divider>
          <a-col :span="6">
            <a-form-model-item label="出厂编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryNumber">
              <a-input
               :disabled="formDisabled"
                placeholder="请输入出厂编号"
                v-model="model.factoryNumber"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="出厂日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leaveFactoryDate">
              <a-date-picker
                :disabled="formDisabled"
                placeholder="请输入出厂日期"
                style="width: 100%;"
                v-model="model.leaveFactoryDate"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="验收日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="acceptanceCheckDate">
              <a-date-picker
                :disabled="formDisabled"
                placeholder="请输入验收日期"
                style="width: 100%;"
                v-model="model.acceptanceCheckDate"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="立项卡号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="projectApprovalNo">
              <a-input v-model="model.projectApprovalNo" :disabled="formDisabled" placeholder="请输入立项卡号" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="工区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentUda1">
              <a-input v-model="model.equipmentUda1" placeholder="请输入工区" :disabled="formDisabled" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="重量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentUda3">
              <a-input v-model="model.equipmentUda3"  :disabled="formDisabled" placeholder="请输入重量" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="重量计量单位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentUda4">
              <a-input v-model="model.equipmentUda4" :disabled="formDisabled" placeholder="请输入重量计量单位ID" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="安装位置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="location">
              <a-input v-model="model.location" placeholder="请输入安装位置" :disabled="formDisabled" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="功能位置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentUda5">
              <a-input v-model="model.equipmentUda5" :disabled="formDisabled" placeholder="请输入功能位置" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="资金来源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fundSource">
              <a-input v-model="model.fundSource" :disabled="formDisabled" placeholder="请输入资金来源" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="资产来源国家" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sourceCountry">
              <a-input v-model="model.sourceCountry" :disabled="formDisabled" placeholder="请输入资产来源国家" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="安全配置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="securityConfiguration">
              <a-input v-model="model.securityConfiguration" :disabled="formDisabled" placeholder="请输入安全配置" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="冷却系统" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="coolingSystem">
              <a-input v-model="model.coolingSystem" :disabled="formDisabled" placeholder="请输入冷却系统" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="灭火器" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fireExtinguisher">
              <a-input v-model="model.fireExtinguisher" :disabled="formDisabled" placeholder="请输入灭火器" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="灭火器有效期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fireExtinguisherValidityPeriod">
              <a-input v-model="model.fireExtinguisherValidityPeriod" :disabled="formDisabled" placeholder="请输入灭火器有效期" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="操作系统" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operatingSystem">
              <a-input v-model="model.operatingSystem" :disabled="formDisabled" placeholder="请输入操作系统" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="系统" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="system">
              <a-input v-model="model.system" :disabled="formDisabled" placeholder="请输入系统" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="端口" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="port">
              <a-input v-model="model.port" :disabled="formDisabled"  placeholder="请输入端口" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="坐标数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="coordinateNum">
              <a-input-number v-model="model.coordinateNum" :disabled="formDisabled" placeholder="请输入坐标数量" style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
              <a-input v-model="model.remark" placeholder="请输入备注" :disabled="formDisabled" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;">ABC标识</a-divider>
          <a-col :span="6">
            <a-form-model-item label="平均使用率" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardA">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择平均使用率"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardA"
                v-model="model.standardA"
                @change="standardResultCompute"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="可替换性" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardB">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择可替换性"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardB"
                v-model="model.standardB"
                @change="standardResultCompute"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="故障影响度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardC">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择故障影响度"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardC"
                v-model="model.standardC"
                @change="standardResultCompute"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="生产超差度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardD">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择生产超差度"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardD"
                v-model="model.standardD"
                @change="standardResultCompute"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="故障频率" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardE">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择故障频率"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardE"
                @change="standardResultCompute"
                v-model="model.standardE"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="设备价值" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardF">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择设备价值"
                :disabled="formDisabled"
                :triggerChange="true"
                dictCode="ABC-standardF"
                v-model="model.standardF"
                @change="standardResultCompute"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="ABC标识" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentImportanceId">
              <j-dict-select-tag
                allow-clear
                :disabled="formDisabled"
                placeholder ="请选择ABC标识"
                :triggerChange="true"
                dictCode="ABC-standard-result"
                v-model="model.equipmentImportanceId"
              />
            </a-form-model-item>
          </a-col>
          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> ç²¾åº¦åŠæ¨¡ç‰ˆ </a-divider>
          <a-col :span="6">
            <a-form-model-item label="设备精度管理" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionParameters">
              <a-switch
                :disabled="formDisabled"
                checked-children="是"
                un-checked-children="否"
                :checked="model.precisionParameters == '1'"
                @change="handle2Switch(model.precisionParameters)"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6" v-if="model.precisionParameters == '1'">
            <a-form-model-item label="设备精度模版" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionParametersTemplateId">
              <a-input-search
              :disabled="formDisabled"
                placeholder="请选择设备精度模板"
                enter-button
                @search="onSearchPrecisionParametersTemplate()"
                :read-only="true"
                v-model="model.precisionParametersTemplateName"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
            <a-form-model-item label="工艺模版管理" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processParameters">
              <a-switch
              :disabled="formDisabled"
                checked-children="是"
                un-checked-children="否"
                :checked="model.processParameters == '1'"
                @change="handleSwitch(model.processParameters)"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="6" v-if="model.processParameters == '1'">
            <a-form-model-item label="设备工艺模版" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionParametersTemplateId">
              <a-input-search
              :disabled="formDisabled"
                placeholder="请选择设备工艺模板"
                enter-button
                @search="onSearchProcessParametersTemplate()"
                :read-only="true"
                v-model="model.processParametersTemplateName"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
      <process-parameters-template-list
      ref="ProcessParametersTemplateList"
      @sendProcessParametersTemplateRecord='sendProcessParametersTemplateRecord'
    ></process-parameters-template-list>
    <precision-parameters-template-list
      ref="PrecisionParametersTemplateList"
      @sendPrecisionParametersTemplateRecord='sendPrecisionParametersTemplateRecord'
    ></precision-parameters-template-list>
    </a-spin>
  </j-modal>
</template>
<script>
  import { httpAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
  import pick from 'lodash.pick'
  import { postAction, requestPut, getAction } from '@/api/manage'
  import { duplicateCheck } from '@/api/api'
  import moment from 'moment'
  import ProcessParametersTemplateList from '../equipment/ProcessParametersTemplateList'
  import PrecisionParametersTemplateList from '../equipment/PrecisionParametersTemplateList'
  import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
  import { JVXETypes } from '@/components/jeecg/JVxeTable'
  export default {
    name: "EquipmentModal",
    mixins: [JVxeTableModelMixin],
    components: {
      validateDuplicateValue,
      ProcessParametersTemplateList,
      PrecisionParametersTemplateList,
    },
    props:{
      disableSubmit: {
        type: Boolean,
        default: false,
        required: false
      },
    },
    data () {
      return {
        title:"操作",
        width:1500,
        visible: false,
        model:{
        },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 8 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
          num: [
            { required: true, message: '请输入设备编号!' },
            { min: 2, max: 30, message: '长度在 2 åˆ° 30 ä¸ªå­—符', trigger: 'blur' },
            { validator: this.validateNum },
          ],
        name:[
            { required: true, message: '请输入设备名称!' },
            { min: 2, max: 30, message: '长度在 2 åˆ° 30 ä¸ªå­—符', trigger: 'blur' },
            { validator: this.validateName },
          ],
        teamId:[
            { required: true, message: '请选择责任班组!' },
          ],
        processParametersTemplateName:[
            { required: true, message: '请选择工艺参数模板!' },
          ],
        precisionParametersTemplateName: [
            { required: true, message: '请选择设备精度模板!' },
          ],
        remark:[
            { min: 0, max: 100, message: '长度不超过 100 ä¸ªå­—符', trigger: 'blur' },
          ],
        equipmentCategoryId:[
          { required: true, message: '请选则设备类别!' },
        ]
        },
        url: {
          add: "/eam/equipment/add",
         edit: "/eam/equipment/edit",
         loadOptions: '/sys/sysDepart/loadDepartTreeOptions',
        },
        treeData: [],
      }
    },
    created () {
    //备份model原始值
      this.initOptions();
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        console.log(this.disabled)
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      close () {
        this.$emit('close');
        this.visible = false;
        this.$refs.form.clearValidate();
      },
      handleOk () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            }
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
            })
          }else{
             return false
          }
        })
      },
      handleCancel () {
        this.close()
      },
      validateNum(rule, value, callback) {
      var params = {
        tableName: 'mom_eam_equipment',
        fieldName: 'num',
        fieldVal: value,
        dataId: this.model.id,
        //数据库中存在字段del_flag并使用该字段作为未删除策略,真删除:false å‡åˆ é™¤ï¼štrue
        delFlag: '0',
      };
      duplicateCheck(params).then((res) => {
        if (res.success) {
          callback();
        } else {
          callback("编号已存在!");
        }
      })
    },
    //验证 åç§°
    validateName(rule, value, callback) {
      var params = {
        tableName: 'mom_eam_equipment',
        fieldName: 'name',
        fieldVal: value,
        dataId: this.model.id,
        //数据库中存在字段del_flag并使用该字段作为未删除策略,真删除:false å‡åˆ é™¤ï¼štrue
        delFlag: '0',
      };
      duplicateCheck(params).then((res) => {
        if (res.success) {
          callback();
        } else {
          callback("名称已存在!");
        }
      })
    },
    handleSwitch(processParameters) {
      if ('1' == processParameters) {
        this.model.processParameters = '0'
      } else {
        this.model.processParameters = '1'
      }
      this.model = Object.assign({},this.model);
    },
    handle2Switch(precisionParameters) {
      if ('1' == precisionParameters) {
        this.model.precisionParameters = '0'
      } else {
        this.model.precisionParameters = '1'
      }
      this.model = Object.assign({},this.model);
    },
    initOptions() {
      getAction(this.url.loadOptions).then(res => {
        if (res.success) {
          this.treeData = res.result
        } else {
          this.$message.warning(res.message)
        }
      })
    },
    handle2Change(val) {
      if (val === null) {
        setTimeout(() => {
          this.form.setFieldsValue({ useId: "" });
        }, 100)
      }
    },
    handle1Change(val) {
      if (val === null) {
        setTimeout(() => {
          this.form.setFieldsValue({ affiliationId: "" });
        }, 100)
      }
    },
    handle3Change(val) {
      if (val === null) {
        setTimeout(() => {
          this.form.setFieldsValue({ manageId: "" });
        }, 100)
      }
    },
    uploadOk(imgList) {
      this.model.sysUploadList = imgList
      this.equipmentPhoto = this.getSrc(imgList[0])
      // this.$set(this.model, 'photo', res);
      // this.$set(this.model, 'sysUploadList', imgList);
    },
    onSearchProcessParametersTemplate() {
      this.$refs.ProcessParametersTemplateList.list();
      this.$refs.ProcessParametersTemplateList.title = "选择工艺参数模板";
    },
    sendProcessParametersTemplateRecord(data) {
      let record = data.record;
      this.model.processParametersTemplateId = record.id
      this.model.processParametersTemplateName = record.name
      this.model = Object.assign({},this.model);
    },
    onSearchPrecisionParametersTemplate() {
      this.$refs.PrecisionParametersTemplateList.list();
      this.$refs.PrecisionParametersTemplateList.title = "选择设备精度模板";
    },
    sendPrecisionParametersTemplateRecord(data) {
      let record = data.record;
      this.model.precisionParametersTemplateId = record.id
      this.model.precisionParametersTemplateName = record.name
      this.model = Object.assign({},this.model);
    },
    standardResultCompute(){
      var standardA = this.model.standardA==null||this.model.standardA==undefined||this.model.standardA==''?0:parseInt(this.model.standardA);
      var standardB = this.model.standardB==null||this.model.standardB==undefined||this.model.standardB==''?0:parseInt(this.model.standardB);
      var standardC = this.model.standardA==null||this.model.standardC==undefined||this.model.standardC==''?0:parseInt(this.model.standardC);
      var standardD = this.model.standardD==null||this.model.standardD==undefined||this.model.standardD==''?0:parseInt(this.model.standardD);
      var standardE = this.model.standardE==null||this.model.standardE==undefined||this.model.standardE==''?0:parseInt(this.model.standardE);
      var standardF = this.model.standardF==null||this.model.standardF==undefined||this.model.standardF==''?0:parseInt(this.model.standardF);
      var sum = standardA+standardB+standardC+standardD+standardE+standardF;
      console.log(sum)
      if(sum>=18){
         this.model.equipmentImportanceId='A'
      }else if(sum>=10&&sum<=17){
        this.model.equipmentImportanceId='B'
      }else{
        this.model.equipmentImportanceId='C'
      }
      this.model = Object.assign({},this.model);
    }
    },
    computed: {
      formDisabled(){
        return this.disableSubmit
      },
    },
    watch: {
    alterFlag() {
      this.$bus.$emit('queryTreeData');
    },
    },
  }
</script>
src/views/eam/modules/equipmentNew/EquipmentPrecisionParametersModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,208 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="equipmentId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId">
              <a-input v-model="model.equipmentId"  placeholder="请输入equipmentId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="precisionParametersId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precisionParametersId">
              <a-input v-model="model.precisionParametersId"  placeholder="请输入precisionParametersId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="leaveFactoryValue" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leaveFactoryValue">
              <a-input v-model="model.leaveFactoryValue"  placeholder="请输入leaveFactoryValue" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="actualValue" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="actualValue">
              <a-input v-model="model.actualValue"  placeholder="请输入actualValue" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="verificationDate" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="verificationDate">
              <a-input v-model="model.verificationDate"  placeholder="请输入verificationDate" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda1">
              <a-input v-model="model.eppUda1"  placeholder="请输入eppUda1" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda2" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda2">
              <a-input v-model="model.eppUda2"  placeholder="请输入eppUda2" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda3" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda3">
              <a-input v-model="model.eppUda3"  placeholder="请输入eppUda3" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda4" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda4">
              <a-input v-model="model.eppUda4"  placeholder="请输入eppUda4" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda5" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda5">
              <a-input v-model="model.eppUda5"  placeholder="请输入eppUda5" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="remark" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
              <a-input v-model="model.remark"  placeholder="请输入remark" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="status" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status">
              <a-input v-model="model.status"  placeholder="请输入status" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="tenantId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="tenantId">
              <a-input v-model="model.tenantId"  placeholder="请输入tenantId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="delFlag" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag">
              <a-input-number v-model="model.delFlag"  placeholder="请输入delFlag" style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="initialMeasuredValue" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialMeasuredValue">
              <a-input-number v-model="model.initialMeasuredValue"  placeholder="请输入initialMeasuredValue" style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="allowableRange" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="allowableRange">
              <a-input-number v-model="model.allowableRange"  placeholder="请输入allowableRange" style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="upperLimit" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="upperLimit">
              <a-input-number v-model="model.upperLimit"  placeholder="请输入upperLimit" style="width: 100%" />
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="lowerLimit" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lowerLimit">
              <a-input-number v-model="model.lowerLimit"  placeholder="请输入lowerLimit" style="width: 100%" />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
<script>
  import { httpAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
  export default {
    name: "EquipmentPrecisionParametersModal",
    components: {
    },
    props:{
      mainId:{
        type:String,
        required:false,
        default:''
      }
    },
    data () {
      return {
        title:"操作",
        width:800,
        visible: false,
        model:{
        },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
        },
        url: {
          add: "/new/equipment/addEquipmentPrecisionParameters",
          edit: "/new/equipment/editEquipmentPrecisionParameters",
        }
      }
    },
    created () {
    //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      close () {
        this.$emit('close');
        this.visible = false;
        this.$refs.form.clearValidate();
      },
      handleOk () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            }
            this.model['equipmentId'] = this.mainId
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
            })
          }else{
             return false
          }
        })
      },
      handleCancel () {
        this.close()
      },
    }
  }
</script>
src/views/eam/modules/equipmentNew/EquipmentProcessParametersModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="equipmentId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId">
              <a-input v-model="model.equipmentId"  placeholder="请输入equipmentId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="processParametersId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processParametersId">
              <a-input v-model="model.processParametersId"  placeholder="请输入processParametersId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="parametersValue" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="parametersValue">
              <a-input v-model="model.parametersValue"  placeholder="请输入parametersValue" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda1">
              <a-input v-model="model.eppUda1"  placeholder="请输入eppUda1" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda2" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda2">
              <a-input v-model="model.eppUda2"  placeholder="请输入eppUda2" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda3" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda3">
              <a-input v-model="model.eppUda3"  placeholder="请输入eppUda3" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda4" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda4">
              <a-input v-model="model.eppUda4"  placeholder="请输入eppUda4" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="eppUda5" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eppUda5">
              <a-input v-model="model.eppUda5"  placeholder="请输入eppUda5" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="remark" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
              <a-input v-model="model.remark"  placeholder="请输入remark" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="status" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="status">
              <a-input v-model="model.status"  placeholder="请输入status" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="tenantId" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="tenantId">
              <a-input v-model="model.tenantId"  placeholder="请输入tenantId" ></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="delFlag" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag">
              <a-input-number v-model="model.delFlag"  placeholder="请输入delFlag" style="width: 100%" />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
  </j-modal>
</template>
<script>
  import { httpAction } from '@/api/manage'
  import { validateDuplicateValue } from '@/utils/util'
  export default {
    name: "EquipmentProcessParametersModal",
    components: {
    },
    props:{
      mainId:{
        type:String,
        required:false,
        default:''
      }
    },
    data () {
      return {
        title:"操作",
        width:800,
        visible: false,
        model:{
        },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
        },
        url: {
          add: "/new/equipment/addEquipmentProcessParameters",
          edit: "/new/equipment/editEquipmentProcessParameters",
        }
      }
    },
    created () {
    //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
    },
    methods: {
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      close () {
        this.$emit('close');
        this.visible = false;
        this.$refs.form.clearValidate();
      },
      handleOk () {
        const that = this;
        // è§¦å‘表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
               method = 'put';
            }
            this.model['equipmentId'] = this.mainId
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
              that.close();
            })
          }else{
             return false
          }
        })
      },
      handleCancel () {
        this.close()
      },
    }
  }
</script>
src/views/eam/newEquipment/EquipmentDocumentList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,395 @@
<template>
  <a-card :bordered="false" :class="'cust-erp-sub-tab'">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator" v-if="mainId">
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <!-- <a-button type="primary" icon="download" @click="handleExportXls('设备文档')">导出</a-button>
      <a-upload
        name="file"
        :showUploadList="false"
        :multiple="false"
        :headers="tokenHeader"
        :action="importExcelUrl"
        @change="handleImportExcel">
          <a-button type="primary" icon="import">导入</a-button>
      </a-upload> -->
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
      </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i> å·²é€‰æ‹© <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="id"
        :scroll="{x:true}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <span
          slot="size"
          slot-scope="text"
          class="error"
        >
          {{sizeConvert(text)}}
        </span>
        <span
          slot="action"
          slot-scope="text, record"
        >
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <Tooltip
            placement="top"
            title="预览图片"
          >
            <img
              v-if="record.upload.path && (record.upload.format.toLowerCase()=='jpg'||record.upload.format.toLowerCase()=='bmp'||record.upload.format.toLowerCase()=='png'||record.upload.format.toLowerCase()=='jpeg'||record.upload.format.toLowerCase()=='gif')"
              width="30"
              height="14"
              border="1"
              draggable="false"
              preview="1"
              :preview-text="''"
              :src="record.upload.src"
            />
          </Tooltip>
          <a
            v-if="record.upload.path && record.upload.format.toLowerCase()=='pdf'"
            href="javascript:;"
            @click="view(record)"
          >
            é¢„览
          </a>
          <a-divider
            v-if="record.upload.path && (record.upload.format.toLowerCase()=='jpg'||record.upload.format.toLowerCase()=='bmp'||record.upload.format.toLowerCase()=='png'||record.upload.format.toLowerCase()=='jpeg'||record.upload.format.toLowerCase()=='gif'||record.upload.format.toLowerCase()=='pdf')"
            type="vertical"
          />
          <a
            href="javascript:;"
            @click="handleDownload(record)"
          >下载</a>
          <a-divider type="vertical" />
          <a-popconfirm
            title="确定删除吗?"
            @confirm="() => handleDelete(record.id)"
          >
            <a>删除</a>
          </a-popconfirm>
        </span>
      </a-table>
    </div>
    <pdf-view ref="pdfview"></pdf-view>
    <equipmentDocument-modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></equipmentDocument-modal>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import EquipmentDocumentModal from '../modules/equipmentNew/EquipmentDocumentModal'
  import { preview } from 'vue-photo-preview'
  import { mixinDevice } from '@/utils/mixin'
 import { ACCESS_TOKEN } from '@/store/mutation-types'
 import Vue from 'vue'
 import PdfView from '@views/common/PdfView'
 import JInput from '@/components/jeecg/JInput'
import Tooltip from 'ant-design-vue/es/tooltip'
import JEllipsis from "@/components/jeecg/JEllipsis";
 import { getFileAccessHttpUrl } from '@/api/manage';
 import '@/assets/less/TableExpand.less'
 import store from '@/store/'
import { downFile, getAction } from '../../../api/manage'
  export default {
    name: "EquipmentDocumentList",
    mixins:[JeecgListMixin,mixinDevice],
    components: {
      EquipmentDocumentModal,
      PdfView,
      preview,
      JInput,
      Tooltip,
      JEllipsis,
  },
    props:{
      mainId:{
        type:String,
        default:'',
        required:false
      }
    },
    watch:{
      mainId:{
        immediate: true,
        handler(val) {
          if(!this.mainId){
            this.clearList()
          }else{
            this.queryParam['equipmentId'] = val
            this.loadData(1);
          }
        }
      }
    },
    data () {
      return {
        description: '设备台账管理页面',
        disableMixinCreated:true,
        colorMap: {},
        // è¡¨å¤´
        columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          }
        },
        {
          title: '文档编号',
          dataIndex: 'num',
          align: "center",
          width:300,
        },
        {
          title: '文档名称',
          align: 'center',
          dataIndex: 'name',
          width:300,
        },
        {
          title: '文档类型',
          align: 'center',
          dataIndex: 'type_dictText',
          width:300,
        },
        {
          title: '上传时间',
          align: "center",
          dataIndex: 'createTime',
          width:300,
        },
        {
          title: '上传者',
          align: "center",
          dataIndex: 'createBy',
          width:300,
        },
        {
          title: '大小',
          align: "center",
          dataIndex: 'size',
          scopedSlots: {
            customRender: 'size'
          },
          width:300,
        },
        {
          title: '操作',
          align: "center",
          dataIndex: 'action',
          scopedSlots: {
            customRender: 'action'
          },
          width: 200,
        },
        ],
        url: {
            list: "/eam/equipmentDocument/list",
            delete: "/eam/equipmentDocument/delete",
            deleteBatch: '/eam/equipmentDocument/deleteBatch',
            urlDownload: window._CONFIG['staticDomainURL'],
            download: '/sys/upload/downloadFile',
        },
        dictOptions:{
        }
      }
    },
    created() {
    },
    computed: {
      importExcelUrl(){
        return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`;
      }
    },
    methods: {
      clearList(){
        this.dataSource=[]
        this.selectedRowKeys=[]
        this.ipagination.current = 1
      },
      sizeConvert(limit) {
      var size = "";
      if (limit < 0.1 * 1024) {
        size = parseFloat(limit).toFixed(2) + "B";//小于0.1KB,则转化成B
      } else if (limit < 0.1 * 1024 * 1024) {
        size = (parseFloat(limit) / 1024).toFixed(2) + "KB";//小于0.1MB,则转化成KB
      } else if (limit < 0.1 * 1024 * 1024 * 1024) {
        size = (parseFloat(limit) / (1024 * 1024)).toFixed(2) + "MB";//小于0.1GB,则转化成MB
      } else {
        size = (parseFloat(limit) / (1024 * 1024 * 1024)).toFixed(2) + "GB";//其他转化成GB
      }
      var sizeStr = size + "";//转成字符串
      var index = sizeStr.indexOf(".");//获取小数点处的索引
      var dou = sizeStr.substr(index + 1, 2);//获取小数点后两位的值
      if (dou == "00") {//判断后两位是否为00,如果是则删除00
        return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2);
      }
      return size;
    },
    getSrc(record) {
      if (!record.path) {
        return '';
      }
      //本地:local\Minio:minio\阿里云:alioss
      if (record.uploadType == 'local') {
        let ssoLoginFlag = Vue.ls.get("ssoLoginFlag");
        let deployMode = Vue.ls.get("deployMode");
        if (ssoLoginFlag && deployMode == "container") {
          var baseProject = Vue.ls.get("baseProject");
          console.log("baseProject==>" + baseProject)
          var hostname = window.location.protocol + "//" + window.location.host;
          var url = hostname + '/' + baseProject + '/sys/common/static';
          return getFileAccessHttpUrl(record.path + record.encodeName, url, window._CONFIG['hyperTextTransfer'])
        } else {
          //根据发布状态修改https æˆ– http
          return getFileAccessHttpUrl(record.path + record.encodeName, this.url.urlDownload, window._CONFIG['hyperTextTransfer'])
        }
      } else if (record.uploadType == 'alioss') {
        const OSS = require('ali-oss')
        const client = new OSS({
          // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
          region: window._CONFIG['region'],
          // é˜¿é‡Œäº‘主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
          accessKeyId: window._CONFIG['accessKeyId'],
          accessKeySecret: window._CONFIG['accessKeySecret'],
          bucket: window._CONFIG['bucket'],
        })
        // object-key表示从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
        return client.signatureUrl(record.path)
      }
      },
      view(record) {
      this.$refs.pdfview.showPdf(record.upload.src);
      },
    handleDownload(record) {
      downFile(this.url.download, { id: record.id }).then((res) => {
        if (!res) {
          this.$message.warning('文件下载失败')
          return
        } else {
          let fileName = record.name;
          if (typeof window.navigator.msSaveBlob !== 'undefined') {
            window.navigator.msSaveBlob(new Blob([res]), fileName);
          } else {
            let url = window.URL.createObjectURL(new Blob([res]));
            let link = document.createElement('a');
            link.style.display = 'none';
            link.href = url;
            link.setAttribute('download', fileName);
            document.body.appendChild(link);
            link.click()
            document.body.removeChild(link) //下载完成移除元素
            window.URL.revokeObjectURL(url) //释放掉blob对象
          }
        }
      })
    },
    loadData(arg) {
      if (!this.url.list) {
        this.$message.error("请设置url.list属性!")
        return
      }
      //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
      if (arg === 1) {
        this.ipagination.current = 1;
      }
      var params = this.getQueryParams();//查询条件
      if (this.equipmentId == '') {
        params.equipmentId = '-1';
      }
      this.loading = true;
      getAction(this.url.list, params).then((res) => {
        if (res.success) {
          for (let i = 0; i < res.result.records.length; i++) {
            let r = res.result.records[i].upload;
            r.src = this.getSrc(res.result.records[i].upload);
          }
          this.dataSource = res.result.records || res.result;
          if (res.result.total) {
            this.ipagination.total = res.result.total;
          } else {
            this.ipagination.total = 0;
          }
          //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
        } else {
          this.$message.warning(res.message)
        }
      }).finally(() => {
        this.loading = false
      })
    },
    }
  }
</script>
<style scoped>
 @import '~@assets/less/common.less';
/deep/ .frozenRowClass {
  color: #c9c9c9;
}
.success {
  color: green;
}
.error {
  color: red;
}
.fontweight {
  font-weight: bold;
}
.ant-card {
  margin-left: -30px;
  margin-right: -30px;
}
</style>
src/views/eam/newEquipment/EquipmentList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,640 @@
<template>
  <a-card :bordered="false">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :span="6">
            <a-form-item label="设备所属分类">
              <j-dict-select-tag
                allow-clear
                placeholder="请选择设备所属分类"
                :triggerChange="true"
                dictCode="mom_eam_equipment_category,name,id"
                v-model="queryParam.equipmentCategoryId"
              />
            </a-form-item>
          </a-col>
          <a-col
          :span="6"
          >
            <a-form-item label="设备编号">
              <a-input
                placeholder="请输入设备编号查询"
                v-model="queryParam.num"
              ></a-input>
            </a-form-item>
          </a-col>
          <a-col
          :span="6"
          >
            <a-form-item label="设备名称">
              <a-input
                placeholder="请输入设备名称查询"
                v-model="queryParam.name"
              ></a-input>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator">
      <a-button
        type="primary"
        @click="searchQuery"
        icon="search"
      >查询</a-button>
      <a-button
        @click="searchReset"
        icon="reload"
      >重置</a-button>
      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
      <a-button type="primary" icon="download" @click="handleExportXls('设备台账')">导出</a-button>
      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
        <a-button type="primary" icon="import">导入</a-button>
      </a-upload>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i> å·²é€‰æ‹© <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="id"
        :scroll="{x:true}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
        :customRow="clickThenSelect"
        @change="handleTableChange">
        <template slot="htmlSlot" slot-scope="text">
          <div v-html="text"></div>
        </template>
        <template slot="imgSlot" slot-scope="text,record">
          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
        </template>
        <template slot="fileSlot" slot-scope="text">
          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
          <a-button
            v-else
            :ghost="true"
            type="primary"
            icon="download"
            size="small"
            @click="downloadFile(text)">
            ä¸‹è½½
          </a-button>
        </template>
         <!--工艺参数个性展示-->
      <span
        slot="processParameters"
        slot-scope="text,record"
      >
        <a-badge
          v-if="record.processParameters==1"
          status="success"
        />
        <span
          v-if="record.processParameters==1"
          class="success"
        >是</span>
        <a-badge
          v-if="record.processParameters==0"
          status="error"
        />
        <span
          v-if="record.processParameters==0"
          class="error"
        >否</span>
      </span>
      <span
        slot="processParameters"
        slot-scope="text,record"
      >
        <a-badge
          v-if="record.processParameters==1"
          status="success"
        />
        <span
          v-if="record.processParameters==1"
          class="success"
        >是</span>
        <a-badge
          v-if="record.processParameters==0"
          status="error"
        />
        <span
          v-if="record.processParameters==0"
          class="error"
        >否</span>
      </span>
      <span
        slot="precisionParameters"
        slot-scope="text,record"
      >
        <a-badge
          v-if="record.precisionParameters==1"
          status="success"
        />
        <span
          v-if="record.precisionParameters==1"
          class="success"
        >是</span>
        <a-badge
          v-if="record.precisionParameters==0"
          status="error"
        />
        <span
          v-if="record.precisionParameters==0"
          class="error"
        >否</span>
      </span>
      <span
        slot="verification"
        slot-scope="text,record"
      >
        <a-badge
          v-if="record.verification==1"
          status="success"
        />
        <span
          v-if="record.verification==1"
          class="success"
        >是</span>
        <a-badge
          v-if="record.verification==0"
          status="error"
        />
        <span
          v-if="record.verification==0"
          class="error"
        >否</span>
      </span>
      <span
        slot="action"
        slot-scope="text, record"
      >
        <!-- class="table-operation" -->
        <!-- <a
          href="javascript:;"
          @click="equipmentStructuresShow(record)"
        >设备结构</a>
        <a-divider type="vertical" /> -->
        <a
          href="javascript:;"
          @click='handleDetail(record)'
        >详情</a>
        <a-divider type="vertical" />
        <a-dropdown>
          <a class="ant-dropdown-link">
            æ›´å¤š
            <a-icon type="down" />
          </a>
          <a-menu slot="overlay">
            <a-menu-item>
              <a @click="equipmentResumeShow(record)">设备履历</a>
            </a-menu-item>
            <a-menu-item>
              <a @click="handleEdit(record)">编辑</a>
            </a-menu-item>
            <a-menu-item>
              <a-popconfirm
                title="确定删除吗?"
                @confirm="() => handleDelete(record.id)"
              >
                <a>删除</a>
              </a-popconfirm>
            </a-menu-item>
          </a-menu>
        </a-dropdown>
      </span>
      </a-table>
    </div>
    <equipment-resume-drawer
      ref="EquipmentResumeDrawer"
      @ok="modalFormOk"
    ></equipment-resume-drawer>
    <a-tabs defaultActiveKey="1">
      <a-tab-pane tab="工艺参数" key="1" >
        <EquipmentProcessParametersList :mainId="equipmentProcessParametersMainId" />
      </a-tab-pane>
      <a-tab-pane tab="设备精度" key="2" forceRender>
        <EquipmentPrecisionParametersList :mainId="equipmentPrecisionParametersMainId" />
      </a-tab-pane>
      <a-tab-pane tab="设备文档" key="3" forceRender>
        <EquipmentDocumentList :mainId="equipmentDocumentMainId" />
      </a-tab-pane>
    </a-tabs>
    <equipment-modal ref="modalForm" @ok="modalFormOk"></equipment-modal>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import { mixinDevice } from '@/utils/mixin'
  import EquipmentModal from '../modules/equipmentNew/EquipmentModal'
  import { getAction } from '@/api/manage'
  import EquipmentProcessParametersList from './EquipmentProcessParametersList'
  import EquipmentDocumentList from './EquipmentDocumentList'
  import EquipmentPrecisionParametersList from './EquipmentPrecisionParametersList'
  import '@/assets/less/TableExpand.less'
  import EquipmentResumeDrawer from '../modules/equipment/EquipmentResume/EquipmentResumeDrawer'
  export default {
    name: "EquipmentList",
    mixins:[JeecgListMixin,mixinDevice],
    components: {
      EquipmentProcessParametersList,
      EquipmentDocumentList,
      EquipmentPrecisionParametersList,
      EquipmentModal,
      EquipmentResumeDrawer
    },
    data () {
      return {
        description: '设备台账管理页面',
        // è¡¨å¤´
        columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          align: 'center',
          customRender: function (t, r, index) {
            return parseInt(index) + 1
          },
          width: 50,
        },
        {
          title: '设备类型',
          align: "center",
          dataIndex: 'equipmentCategoryId_dictText',
        },
        {
          title: '统一编码',
          align: "center",
          dataIndex: 'num',
        },
        {
          title: '设备名称',
          align: "center",
          dataIndex: 'name',
        },
        {
          title: '型号',
          align: "center",
          dataIndex: 'model',
        },
        {
          title: '规格',
          align: "center",
          dataIndex: 'specification',
        },
        {
          title: '总功率',
          align: "center",
          dataIndex: 'gpo',
        },
        {
          title: '使用部门',
          align: "center",
          dataIndex: 'useId_dictText',
        },
        {
          title: '维护部门',
          align: "center",
          dataIndex: 'manageId_dictText',
        },
        {
          title: '维修班组',
          align: "center",
          dataIndex: 'teamId_dictText',
        },
        {
          title: 'ABC标识',
          align: "center",
          dataIndex: 'equipmentImportanceId_dictText',
        },
        {
          title: '关键设备标识',
          align: "center",
          dataIndex: 'specificEquipment_dictText',
        },
        // {
        //   title: '工区',
        //   align: "center",
        //   dataIndex: 'equipmentUda1',
        // },
        // {
        //   title: '安全配置',
        //   align: "center",
        //   dataIndex: 'securityConfiguration',
        // },
        // {
        //   title: '冷却系统',
        //   align: "center",
        //   dataIndex: 'coolingSystem',
        // },
        // {
        //   title: '灭火器',
        //   align: "center",
        //   dataIndex: 'fireExtinguisher',
        // },
        // {
        //   title: '灭火器有效期',
        //   align: "center",
        //   dataIndex: 'fireExtinguisherValidityPeriod',
        // },
        // {
        //   title: '操作系统',
        //   align: "center",
        //   dataIndex: 'operatingSystem',
        // },
        // {
        //   title: '系统',
        //   align: "center",
        //   dataIndex: 'system',
        // },
        // {
        //   title: '设备端口',
        //   align: "center",
        //   dataIndex: 'port',
        // },
        // {
        //   title: '坐标数量',
        //   align: "center",
        //   dataIndex: 'coordinateNum',
        // },
        // {
        //   title: '设备状态',
        //   align: "center",
        //   dataIndex: 'equipmentStatus_dictText',
        // },
        // {
        //   title: '重量',
        //   align: "center",
        //   dataIndex: 'equipmentUda3',
        // },
        // {
        //   title: '重量计量单位',
        //   align: "center",
        //   dataIndex: 'equipmentUda4_dictText',
        // },
        // {
        //   title: '功能位置',
        //   align: "center",
        //   dataIndex: 'equipmentUda5',
        // },
        // {
        //   title: '安装位置',
        //   align: "center",
        //   dataIndex: 'equipmentUda2',
        // },
        // {
        //   title: '出厂日期',
        //   align: "center",
        //   dataIndex: 'leaveFactoryDate',
        // },
        // {
        //   title: '立项卡号',
        //   align: "center",
        //   dataIndex: 'projectApprovalNo',
        // },
        // {
        //   title: '资金来源',
        //   align: "center",
        //   dataIndex: 'fundSource',
        // },
        // {
        //   title: '验收日期',
        //   align: "center",
        //   dataIndex: 'acceptanceCheckDate',
        // },
        // {
        //   title: '出厂编号',
        //   align: "center",
        //   dataIndex: 'factoryNo',
        // },
        // {
        //   title: '资产制造商',
        //   align: "center",
        //   dataIndex: 'constructorId_dictText',
        // },
        // {
        //   title: '资产的来源国家',
        //   align: "center",
        //   dataIndex: 'sourceCountry',
        // },
        {
          title: '工艺参数管理',
          align: "center",
          dataIndex: 'processParameters',
          scopedSlots: { customRender: 'processParameters' },
        },
        {
          title: '工艺参数模板',
          align: "center",
          dataIndex: 'processParametersTemplateName',
        },
        {
          title: '设备精度管理',
          align: "center",
          dataIndex: 'precisionParameters',
          scopedSlots: { customRender: 'precisionParameters' },
        },
        {
          title: '精度参数模板',
          align: "center",
          dataIndex: 'precisionParametersTemplateName',
        },
        // {
        //   title: '备注',
        //   align: "center",
        //   dataIndex: 'remark',
        // },
        {
          title: '操作',
          align: "center",
          dataIndex: 'action',
          scopedSlots: {
            customRender: 'action',
          },
          width: 200,
          fixed: 'right',
        },
        ],
        url: {
          list: "/eam/equipment/list",
          delete: "/eam/equipment/delete",
          deleteBatch: "/eam/equipment/deleteBatch",
          active: "/eam/equipment/active",
          exportXlsUrl: '/eam/equipment/exportXls',
          importExcelUrl: "/eam/equipment/importExcel",
        },
        dictOptions:{
        },
        /* åˆ†é¡µå‚æ•° */
        ipagination:{
          current: 1,
          pageSize: 5,
          pageSizeOptions: ['5', '10', '50'],
          showTotal: (total, range) => {
            return range[0] + "-" + range[1] + " å…±" + total + "条"
          },
          showQuickJumper: true,
          showSizeChanger: true,
          total: 0
        },
        selectedMainId:'',
        superFieldList:[],
        equipmentProcessParametersMainId: '',
        equipmentDocumentMainId: '',
        equipmentPrecisionParametersMainId: '',
      }
    },
    created() {
      this.getSuperFieldList();
    },
    computed: {
      importExcelUrl: function(){
        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      }
    },
    methods: {
      initDictConfig(){
      },
      equipmentResumeShow(record) {
      this.$refs.EquipmentResumeDrawer.visible = true
      this.$refs.EquipmentResumeDrawer.title = '设备履历'
      this.$refs.EquipmentResumeDrawer.handleShow(record)
       },
      clickThenSelect(record) {
        return {
          on: {
            click: () => {
              this.onSelectChange(record.id.split(","), [record]);
            }
          }
        }
      },
      onClearSelected() {
        this.selectedRowKeys = [];
        this.selectionRows = [];
        this.selectedMainId=''
      },
      onSelectChange(selectedRowKeys, selectionRows) {
        this.selectedMainId=selectedRowKeys[0]
        this.selectedRowKeys = selectedRowKeys;
        this.selectionRows = selectionRows;
        this.equipmentProcessParametersMainId = selectionRows[0]['id']
        this.equipmentDocumentMainId = selectionRows[0]['id']
        this.equipmentPrecisionParametersMainId = selectionRows[0]['id']
      },
      loadData(arg) {
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
          return
        }
        //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1;
        }
        this.onClearSelected()
        var params = this.getQueryParams();//查询条件
        this.loading = true;
        getAction(this.url.list, params).then((res) => {
          if (res.success) {
            this.dataSource = res.result.records;
            this.ipagination.total = res.result.total;
          }
          if(res.code===510){
            this.$message.warning(res.message)
          }
          this.loading = false;
        })
      },
      getSuperFieldList(){
        let fieldList=[];
        fieldList.push({type:'string',value:'num',text:'统一编码',dictCode:''})
        fieldList.push({type:'string',value:'name',text:'设备名称',dictCode:''})
        fieldList.push({type:'string',value:'model',text:'型号',dictCode:''})
        fieldList.push({type:'string',value:'specification',text:'规格',dictCode:''})
        fieldList.push({type:'string',value:'equipmentStatus',text:'设备状态',dictCode:''})
        fieldList.push({type:'string',value:'technologyStatus',text:'technologyStatus',dictCode:''})
        fieldList.push({type:'string',value:'assetNumber',text:'assetNumber',dictCode:''})
        fieldList.push({type:'string',value:'equipmentCategoryId',text:'equipmentCategoryId',dictCode:''})
        fieldList.push({type:'string',value:'specificEquipment',text:'specificEquipment',dictCode:''})
        fieldList.push({type:'string',value:'equipmentPhoto',text:'equipmentPhoto',dictCode:''})
        fieldList.push({type:'string',value:'constructorId',text:'资产制造商',dictCode:''})
        fieldList.push({type:'string',value:'supplierId',text:'supplierId',dictCode:''})
        fieldList.push({type:'string',value:'factoryNumber',text:'factoryNumber',dictCode:''})
        fieldList.push({type:'string',value:'leaveFactoryDate',text:'出厂日期',dictCode:''})
        fieldList.push({type:'string',value:'acceptanceCheckDate',text:'验收日期',dictCode:''})
        fieldList.push({type:'string',value:'affiliationId',text:'affiliationId',dictCode:''})
        fieldList.push({type:'string',value:'manageId',text:'维护部门ID',dictCode:''})
        fieldList.push({type:'string',value:'manager',text:'manager',dictCode:''})
        fieldList.push({type:'string',value:'useId',text:'使用部门ID',dictCode:''})
        fieldList.push({type:'string',value:'functionary',text:'functionary',dictCode:''})
        fieldList.push({type:'string',value:'location',text:'location',dictCode:''})
        fieldList.push({type:'string',value:'equipmentImportanceId',text:'ABC标识ID',dictCode:''})
        fieldList.push({type:'string',value:'processParameters',text:'processParameters',dictCode:''})
        fieldList.push({type:'string',value:'processParametersTemplateId',text:'processParametersTemplateId',dictCode:''})
        fieldList.push({type:'string',value:'precisionParameters',text:'precisionParameters',dictCode:''})
        fieldList.push({type:'string',value:'precisionParametersTemplateId',text:'precisionParametersTemplateId',dictCode:''})
        fieldList.push({type:'string',value:'verification',text:'verification',dictCode:''})
        fieldList.push({type:'string',value:'verificationPeriod',text:'verificationPeriod',dictCode:''})
        fieldList.push({type:'string',value:'lastVerificationDate',text:'lastVerificationDate',dictCode:''})
        fieldList.push({type:'string',value:'nextVerificationDate',text:'nextVerificationDate',dictCode:''})
        fieldList.push({type:'string',value:'status',text:'status',dictCode:''})
        fieldList.push({type:'string',value:'remark',text:'remark',dictCode:''})
        fieldList.push({type:'string',value:'equipmentUda1',text:'工区',dictCode:''})
        fieldList.push({type:'string',value:'equipmentUda2',text:'安装位置',dictCode:''})
        fieldList.push({type:'string',value:'equipmentUda3',text:'重量',dictCode:''})
        fieldList.push({type:'string',value:'equipmentUda4',text:'重量计量单位ID',dictCode:''})
        fieldList.push({type:'string',value:'equipmentUda5',text:'功能位置',dictCode:''})
        fieldList.push({type:'string',value:'tenantId',text:'tenantId',dictCode:''})
        fieldList.push({type:'int',value:'delFlag',text:'delFlag',dictCode:''})
        fieldList.push({type:'string',value:'teamId',text:'维修班组ID',dictCode:''})
        fieldList.push({type:'string',value:'sourceId',text:'sourceId',dictCode:''})
        fieldList.push({type:'string',value:'fundSource',text:'资金来源',dictCode:''})
        fieldList.push({type:'string',value:'factoryNo',text:'出厂编号',dictCode:''})
        fieldList.push({type:'string',value:'mfr',text:'制造商',dictCode:''})
        fieldList.push({type:'string',value:'sourceCountry',text:'资产来源国家',dictCode:''})
        fieldList.push({type:'string',value:'gpo',text:'总功率',dictCode:''})
        fieldList.push({type:'string',value:'keyEquipmentIdentification',text:'关键设备标识',dictCode:''})
        fieldList.push({type:'string',value:'securityConfiguration',text:'安全配置',dictCode:''})
        fieldList.push({type:'string',value:'coolingSystem',text:'冷却系统',dictCode:''})
        fieldList.push({type:'string',value:'fireExtinguisher',text:'灭火器',dictCode:''})
        fieldList.push({type:'string',value:'fireExtinguisherValidityPeriod',text:'灭火器有效期',dictCode:''})
        fieldList.push({type:'string',value:'operatingSystem',text:'操作系统',dictCode:''})
        fieldList.push({type:'string',value:'system',text:'系统',dictCode:''})
        fieldList.push({type:'string',value:'port',text:'端口',dictCode:''})
        fieldList.push({type:'BigDecimal',value:'coordinateNum',text:'坐标数量',dictCode:''})
        fieldList.push({type:'string',value:'projectApprovalNo',text:'立项卡号',dictCode:''})
        this.superFieldList = fieldList
      }
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less'
</style>
src/views/eam/newEquipment/EquipmentPrecisionParametersList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,285 @@
<template>
  <a-card :bordered="false" :class="'cust-erp-sub-tab'">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator" v-if="mainId">
      <!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
      <!-- <a-button type="primary" icon="download" @click="handleExportXls('设备精度')">导出</a-button>
      <a-upload
        name="file"
        :showUploadList="false"
        :multiple="false"
        :headers="tokenHeader"
        :action="importExcelUrl"
        @change="handleImportExcel">
          <a-button type="primary" icon="import">导入</a-button>
      </a-upload> -->
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
      </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i> å·²é€‰æ‹© <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="id"
        :scroll="{x:true}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <template
          v-for="col in columns"
          :slot="col.dataIndex"
          slot-scope='text, record, index'
        >
          <div :key="col.dataIndex">
            <span v-if="col.dataIndex == 'remark'">
              <j-ellipsis
                :value="text"
                :length="10"
              />
            </span>
            <a-input-number
              :value="text"
              v-if="col.dataIndex == 'upperLimit'"
              @change="(e)=>handleChange(e, record.key, col, index)"
              style="width: 100%"
            />
            <a-input-number
              :value="text"
              v-if="col.dataIndex == 'lowerLimit'"
              @change="(e)=>handleChange(e, record.key, col, index)"
              style="width: 100%"
            />
            <a-input-number
              :value="text"
              v-if="col.dataIndex == 'actualValue'"
              @change="(e)=>handleChange(e, record.key, col, index)"
              style="width: 100%"
            />
            <span v-if="col.dataIndex == 'action'">
              <a-button
                type="primary"
                @click="handleEdit(record)"
              >提交</a-button>
            </span>
          </div>
        </template>
        <!-- <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
            <a>删除</a>
          </a-popconfirm>
        </span> -->
      </a-table>
    </div>
    <equipmentPrecisionParameters-modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></equipmentPrecisionParameters-modal>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import EquipmentPrecisionParametersModal from '../modules/equipmentNew/EquipmentPrecisionParametersModal'
import { postAction } from '../../../api/manage'
  export default {
    name: "EquipmentPrecisionParametersList",
    mixins:[JeecgListMixin],
    components: { EquipmentPrecisionParametersModal },
    props:{
      mainId:{
        type:String,
        default:'',
        required:false
      }
    },
    watch:{
      mainId:{
        immediate: true,
        handler(val) {
          if(!this.mainId){
            this.clearList()
          }else{
            this.queryParam['equipmentId'] = val
            this.loadData(1);
          }
        }
      }
    },
    data () {
      return {
        description: '设备台账管理页面',
        disableMixinCreated:true,
        // è¡¨å¤´
        columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          },
        },
        {
          title: '精度参数编码',
          dataIndex: 'precisionParametersNum',
          align: "center",
          width:250,
        },
        {
          title: '精度参数名称',
          dataIndex: 'precisionParametersName',
          align: "center",
          width:250,
        },
        {
          title: '计量单位',
          dataIndex: 'precisionParametersUnitName',
          align: "center",
          width:250,
        },
        {
          title: '上限值',
          dataIndex: 'upperLimit',
          align: "center",
          scopedSlots: {
            customRender: 'upperLimit'
          },
          width:250,
        },
        {
          title: '下限值',
          dataIndex: 'lowerLimit',
          align: "center",
          scopedSlots: {
            customRender: 'lowerLimit'
          },
          width:250,
        },
        {
          title: '实际精度值',
          dataIndex: 'actualValue',
          align: "center",
          scopedSlots: {
            customRender: 'actualValue'
          },
          width:250,
        },
        {
          title: '备注',
          dataIndex: 'remark',
          align: "center",
        },
        {
          title: '操作',
          dataIndex: 'action',
          width: 160,
          align: "center",
          scopedSlots: {
            customRender: 'action'
          },
        },
        ],
        url: {
          list: "/eam/equipmentPrecisionParameters/list",
          edit: "/eam/equipmentPrecisionParameters/edit",
          // delete: "/new/equipment/deleteEquipmentPrecisionParameters",
          // deleteBatch: "/new/equipment/deleteBatchEquipmentPrecisionParameters",
          // exportXlsUrl: "/new/equipment/exportEquipmentPrecisionParameters",
          // importUrl: "/new/equipment/importEquipmentPrecisionParameters",
        },
        dictOptions:{
        }
      }
    },
    created() {
    },
    computed: {
      importExcelUrl(){
        return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`;
      }
    },
    methods: {
      clearList(){
        this.dataSource=[]
        this.selectedRowKeys=[]
        this.ipagination.current = 1
      },
      handleChange(value, key, column, index) {
      let that = this;
      const temp = [...that.dataSource];
      const target = temp.filter(item => key === item.key)[index];
      if (target) {
        target[column.dataIndex] = value;
        if ('actualValue' == column.dataIndex) {
          target['actualValue'] = value;
        }
        if ('upperLimit' == column.dataIndex) {
          target['upperLimit'] = value;
        }
        if ('lowerLimit' == column.dataIndex) {
          target['lowerLimit'] = value;
        }
        //显示带过来的数据
        that.dataSource = temp;
      }
    },
    handleEdit(record) {
      this.loading = true;
      if (record.actualValue === "" || record.actualValue === null) {
        this.$message.warning("参考值不能为空!")
        this.loading = false;
        return
      }
      postAction(this.url.edit, record).then((res) => {
        if (res.success) {
          this.$message.success(res.message);
          this.loadData()
        } else {
          this.$message.warning(res.message);
        }
      }).finally(() => {
        this.loading = false;
      });
    },
    modalFormOk() {
      this.loadData(1);
    },
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less'
</style>
src/views/eam/newEquipment/EquipmentProcessParametersList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,243 @@
<template>
  <a-card :bordered="false" :class="'cust-erp-sub-tab'">
    <!-- æŸ¥è¯¢åŒºåŸŸ -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
        </a-row>
      </a-form>
    </div>
    <!-- æŸ¥è¯¢åŒºåŸŸ-END -->
    <!-- æ“ä½œæŒ‰é’®åŒºåŸŸ -->
    <div class="table-operator" v-if="mainId">
      <!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
      <!-- <a-button type="primary" icon="download" @click="handleExportXls('工艺参数')">导出</a-button>
      <a-upload
        name="file"
        :showUploadList="false"
        :multiple="false"
        :headers="tokenHeader"
        :action="importExcelUrl"
        @change="handleImportExcel">
          <a-button type="primary" icon="import">导入</a-button>
      </a-upload> -->
      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
        </a-menu>
        <a-button style="margin-left: 8px"> æ‰¹é‡æ“ä½œ <a-icon type="down" /></a-button>
      </a-dropdown>
    </div>
    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
        <i class="anticon anticon-info-circle ant-alert-icon"></i> å·²é€‰æ‹© <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>
      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="id"
        :scroll="{x:true}"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        <template
          v-for="col in columns"
          :slot="col.dataIndex"
          slot-scope='text, record, index'
        >
          <div :key="col.dataIndex">
            <span v-if="col.dataIndex == 'remark'">
              <j-ellipsis
                :value="text"
                :length="10"
              />
            </span>
            <a-input-number
              :value="text"
              v-if="col.dataIndex == 'parametersValue'"
              @change="(e)=>handleChange(e, record.key, col, index)"
              style="width: 100%"
            />
            <span v-if="col.dataIndex == 'action'">
              <a-button
                type="primary"
                @click="handleEdit(record)"
              >提交</a-button>
            </span>
          </div>
        </template>
        <!-- <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">编辑</a>
          <a-divider type="vertical" />
          <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
            <a>删除</a>
          </a-popconfirm>
        </span> -->
      </a-table>
    </div>
    <equipmentProcessParameters-modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></equipmentProcessParameters-modal>
  </a-card>
</template>
<script>
  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  import EquipmentProcessParametersModal from '../modules/equipmentNew/EquipmentProcessParametersModal'
import { postAction } from '../../../api/manage'
  export default {
    name: "EquipmentProcessParametersList",
    mixins:[JeecgListMixin],
    components: { EquipmentProcessParametersModal },
    props:{
      mainId:{
        type:String,
        default:'',
        required:false
      }
    },
    watch:{
      mainId:{
        immediate: true,
        handler(val) {
          if(!this.mainId){
            this.clearList()
          }else{
            this.queryParam['equipmentId'] = val
            this.loadData(1);
          }
        }
      }
    },
    data () {
      return {
        description: '设备台账管理页面',
        disableMixinCreated:true,
        // è¡¨å¤´
        columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          }
        },
        {
          title: '工艺参数编码',
          align: "center",
          dataIndex: 'processParametersNum',
          width:350,
        },
        {
          title: '工艺参数名称',
          align: "center",
          dataIndex: 'processParametersName',
          width:350,
        },
        {
          title: '计量单位',
          align: "center",
          dataIndex: 'processParametersUnitName',
          width:350,
        },
        {
          title: '参数值',
          align: "center",
          dataIndex: 'parametersValue',
          scopedSlots: {
            customRender: 'parametersValue'
          },
          width:350,
        },
        {
          title: '备注',
          align: "center",
          dataIndex: 'remark',
          scopedSlots: {
            customRender: 'remark'
          },
        },
        {
          title: '操作',
          align: "center",
          dataIndex: 'action',
          scopedSlots: {
            customRender: 'action'
          },
          width:200
        },
        ],
        url: {
          list: "/eam/equipmentProcessParameters/list",
          edit: "/eam/equipmentProcessParameters/edit",
          // delete: "/new/equipment/deleteEquipmentProcessParameters",
          // deleteBatch: "/new/equipment/deleteBatchEquipmentProcessParameters",
          // exportXlsUrl: "/new/equipment/exportEquipmentProcessParameters",
          // importUrl: "/new/equipment/importEquipmentProcessParameters",
        },
        dictOptions:{
        }
      }
    },
    created() {
    },
    computed: {
      importExcelUrl(){
        return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`;
      }
    },
    methods: {
      clearList(){
        this.dataSource=[]
        this.selectedRowKeys=[]
        this.ipagination.current = 1
      },
      handleEdit(record) {
      this.loading = true;
      if (record.parametersValue === "" || record.parametersValue === null) {
        this.$message.warning("参考值不能为空!")
        this.loading = false;
        return
      }
      postAction(this.url.edit, record).then((res) => {
        if (res.success) {
          this.$message.success(res.message);
          this.loadData()
        } else {
          this.$message.warning(res.message);
        }
      }).finally(() => {
        this.loading = false;
      });
    },
    handleChange(value, key, column, index) {
      let that = this;
      const temp = [...that.dataSource];
      const target = temp.filter(item => key === item.key)[index];
      if (target) {
        target[column.dataIndex] = value;
        if ('parametersValue' == column.dataIndex) {
          target['parametersValue'] = value;
        }
        //显示带过来的数据
        that.dataSource = temp;
      }
    },
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less'
</style>