xiangpei
2025-04-08 6cf7ea7aa09553b9fe148f94ec6158dbb2b2c9bc
src/views/projectEngineering/projectLibrary/component/legalPerson.vue
@@ -2,16 +2,37 @@
  <div class="basic-info">
    <el-form ref="demoFormRef" :disabled="disabled" :model="legalPersonForm" class="dialog_form">
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="项目总投额" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model="legalPersonForm.totalInvestment" class="item" clearable maxlength="255" placeholder="请输入" />
<!--        <el-col :span="6">-->
<!--          <el-form-item label="项目总投额" label-width="120px" prop="investmentType" style="width: 100%">-->
<!--            <el-input v-model="legalPersonForm.totalInvestment" class="item" clearable maxlength="255" style="width: 90%"-->
<!--                      placeholder="请输入"/>-->
<!--            <span class="money">万元</span>-->
<!--          </el-form-item>-->
<!--        </el-col>-->
        <el-col :span="12">
          <el-form-item label="项目单位" label-width="120px" prop="investmentType"
                        >
            <el-select
              v-model="legalPersonForm.projectUnit"
              filterable
              placeholder="请选择或输入"
              style="width: 100%;"
              @change="handleSelectChange"
              remote
              :remote-method="handleBlur"
            >
              <el-option
                v-for="item in options"
                :key="item.id"
                :label="item.projectUnit"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="项目单位" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model="legalPersonForm.projectUnit" class="item" clearable maxlength="255" placeholder="请输入" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="项目单位类型" label-width="120px" prop="projectType" style="width: 100%">
            <el-select
@@ -70,75 +91,84 @@
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="证件号码" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.certificateNumber" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.certificateNumber" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="注册地址" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.registeredAddress" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.registeredAddress" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="注册资金" label-width="120px" prop="projectType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.registeredCapital" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.registeredCapital" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="法人代表" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.legalRepresentative" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.legalRepresentative" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="固定电话" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.fixedPhone" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.fixedPhone" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="法人身份证号" label-width="120px" prop="projectType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.legalPersonIdcard" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.legalPersonIdcard" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="项目联系人" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.projectContactPerson" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.projectContactPerson" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="移动电话" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.phone" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.phone" class="item" clearable maxlength="255" placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="联系人身份证号" label-width="120px" prop="projectType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.contactIdcard" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.contactIdcard" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="微信号" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.wechat" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.wechat" class="item" clearable maxlength="255" placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="联系人通讯地址" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.contactAddress" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.contactAddress" class="item" clearable maxlength="255"
                      placeholder="请输入"/>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="邮政编码" label-width="120px" prop="projectType" style="width: 100%">
            <el-input v-model.trim="legalPersonForm.postCode" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model.trim="legalPersonForm.postCode" class="item" clearable maxlength="255" placeholder="请输入"/>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="6">
          <el-form-item label="电子邮箱" label-width="120px" prop="investmentType" style="width: 100%">
            <el-input v-model="legalPersonForm.email" class="item" clearable  maxlength="255" placeholder="请输入" />
            <el-input v-model="legalPersonForm.email" class="item" clearable maxlength="255" placeholder="请输入"/>
          </el-form-item>
        </el-col>
      </el-row>
@@ -152,70 +182,100 @@
import {
  addProjectUnitRegistrationInfo,
  editProjectUnitRegistrationInfo,
  getProjectUnitRegistrationInfoById
  getProjectUnitRegistrationInfoById,
  getUnitRegistrationInfoByName
} from "@/api/projectEngineering/projectUnitRegistrationInfo";
export default {
  dicts: ['sys_unit_type','sys_registration_type','sys_holding_situation','sys_license_type'],
  dicts: ['sys_unit_type', 'sys_registration_type', 'sys_holding_situation', 'sys_license_type'],
  name: 'LegalPersonForm',
  props: {
    disabled: {
      type: Boolean,
      default: false,
      required: true
    }
    },
  },
  data() {
    return {
      //项目单位选择框
      selectProjectUnit:'',
      projectForm: {},
      //单位法人信息
      options:[],
      legalPersonForm: {
        id: '',
        totalInvestment: '',
        // id: '',
        // totalInvestment: '',
        projectUnit: '',
        projectUnitType: '',
        registrationType: '',
        holdingSituation: '',
        certificateType: '',
        certificateNumber: '',
        registeredAddress: '',
        registeredCapital: '',
        projectId: '',
        legalRepresentative: '',
        fixedPhone: '',
        legalPersonIdcard: '',
        projectContactPerson: '',
        phone: '',
        contactIdcard: '',
        wechat: '',
        contactAddress: '',
        postCode: '',
        email: ''
        // projectUnitType: '',
        // registrationType: '',
        // holdingSituation: '',
        // certificateType: '',
        // certificateNumber: '',
        // registeredAddress: '',
        // registeredCapital: '',
        // projectId: '',
        // legalRepresentative: '',
        // fixedPhone: '',
        // legalPersonIdcard: '',
        // projectContactPerson: '',
        // phone: '',
        // contactIdcard: '',
        // wechat: '',
        // contactAddress: '',
        // postCode: '',
        // email: ''
      },
    }
  },
  mounted() {
    this.legalPersonForm.projectId = this.$route.query.projectId;
    const legalPersonForm = Cookies.get("legalPersonForm");
    const projectForm = Cookies.get("projectForm");
    const legalPersonForm = localStorage.getItem("legalPersonForm");
    const projectForm = localStorage.getItem("projectForm");
    const parsedLegalPersonForm = legalPersonForm ? JSON.parse(legalPersonForm) : null;
    const parsedProjectForm = projectForm ? JSON.parse(projectForm) : null;
    if (parsedLegalPersonForm) {
      this.legalPersonForm = parsedLegalPersonForm
    }
    if (parsedProjectForm){
    if (parsedProjectForm) {
      this.projectForm = parsedProjectForm
    }
    // 如果路由存在id且没有缓存,视为编辑或查看,调用api
    if (this.legalPersonForm.projectId && !parsedLegalPersonForm) {
    if (this.$route.query.projectId && !parsedLegalPersonForm) {
      this.getProjectUnitRegistrationInfo();
    }
    this.legalPersonForm.projectId = this.projectForm.id;
  },
  beforeDestroy() {
    Cookies.set("legalPersonForm", JSON.stringify(this.legalPersonForm));
    if(Object.keys(this.legalPersonForm).length !==0)  localStorage.setItem("legalPersonForm", JSON.stringify(this.legalPersonForm));
  },
  methods: {
    handleSelectChange(row) {
      if (this.options !== null) {
        this.options.forEach(item => {
          if (item.id === row) {
            this.legalPersonForm = item;
            this.legalPersonForm.id = null;
          }
        })
      }
    },
    //项目单位输入时触发
    handleBlur(query){
      this.legalPersonForm.projectUnit = query;
      if (this.legalPersonForm.projectUnit !== null && this.legalPersonForm.projectUnit !== '' && this.legalPersonForm.projectUnit !== undefined){
        getUnitRegistrationInfoByName(this.legalPersonForm).then(res =>{
          this.options = res.data;
        })
      }
    },
    getProjectUnitRegistrationInfo() {
      getProjectUnitRegistrationInfoById(this.legalPersonForm.projectId ).then(res => {
      getProjectUnitRegistrationInfoById(this.$route.query.projectId).then(res => {
        this.legalPersonForm = res.data;
      });
    },
@@ -224,7 +284,7 @@
        this.$message.error("请先保存投资管理基本信息")
      } else {
        this.legalPersonForm.projectId = this.projectForm.id;
        if (this.legalPersonForm.id != null) {
        if (this.legalPersonForm.id) {
          editProjectUnitRegistrationInfo(this.legalPersonForm).then(response => {
            this.$modal.msgSuccess("修改成功");
            //跳转到下个组件
@@ -240,6 +300,25 @@
        }
      }
    },
  },
  watch: {
    'legalPersonForm.projectUnit':{
      deep:true,
      handler(newVal) {
        if (newVal === null || newVal === ''){
          this.options = null;
        }
      }
    },
    legalPersonForm: {
      deep: true,
      handler(newVal) {
        this.$emit('legalPersonForm', newVal)
      }
    },
  }
}
</script>
@@ -257,7 +336,11 @@
    width: 100%;
  }
}
.money {
  font-size: 12px;
  margin-left: 2px;
  color: #909399;
}
.map-btn {
  width: 32px;
  height: 32px;