yusheng 2 سال پیش
والد
کامیت
8bb54a5fe6
2فایلهای تغییر یافته به همراه64 افزوده شده و 26 حذف شده
  1. 14 0
      src/utils/util.js
  2. 50 26
      src/views/system/organization/components/org-edit.vue

+ 14 - 0
src/utils/util.js

@@ -33,3 +33,17 @@ export function randomString(len) {
   }
   return pwd;
 }
+// 深度拷贝
+export function copyObj(obj) {
+  //变量先置空
+  let newobj = null;
+
+  //判断是否需要继续进行递归
+  if (typeof obj == 'object' && obj !== null) {
+    newobj = obj instanceof Array ? [] : {}; //进行下一层递归克隆
+    for (const i in obj) {
+      newobj[i] = copyObj(obj[i]);
+    } //如果不是对象直接赋值
+  } else newobj = obj;
+  return newobj;
+}

+ 50 - 26
src/views/system/organization/components/org-edit.vue

@@ -77,7 +77,7 @@
           <el-form-item label="企业名称:" prop="name">
             <el-input
               clearable
-              :maxlength="20"
+              :maxlength="50"
               v-model="enterprise.name"
               placeholder="请输入企业名称"
               :disabled="true"
@@ -89,7 +89,7 @@
           <el-form-item label="企业地址:" prop="address">
             <el-input
               clearable
-              :maxlength="20"
+              :maxlength="50"
               v-model="enterprise.address"
               placeholder="请输入企业地址"
             />
@@ -122,7 +122,7 @@
           <el-form-item label="统一社会性代码:" prop="unifiedSocialCreditCode">
             <el-input
               clearable
-              :maxlength="20"
+              :maxlength="50"
               v-model="enterprise.unifiedSocialCreditCode"
               placeholder="请输入统一社会性代码"
             />
@@ -132,7 +132,8 @@
           <el-form-item label="经营范围:" prop="businessScope">
             <el-input
               clearable
-              :maxlength="20"
+              type="textarea"
+              :maxlength="100"
               v-model="enterprise.businessScope"
               placeholder="请输入经营范围"
             />
@@ -142,12 +143,22 @@
           <el-form-item label="经营产品:" prop="mainProduct">
             <el-input
               clearable
-              :maxlength="20"
+              type="textarea"
+              :maxlength="100"
               v-model="enterprise.mainProduct"
               placeholder="请输入经营产品"
             />
           </el-form-item>
         </el-col>
+        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }" style="margin-bottom: 20px;">
+          <el-form-item label="企业传真:" prop="fax">
+            <el-input
+              clearable
+              v-model="enterprise.fax"
+              placeholder="请输入企业传真"
+            />
+          </el-form-item>
+        </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
           <el-form-item prop="files" label="附件:">
             <fileUpload
@@ -178,6 +189,8 @@
   import OrgTypeSelect from './org-type-select.vue';
   import staffSelection from './staffSelection.vue';
   import fileUpload from '@/components/upload/fileUpload';
+  import { copyObj } from '@/utils/util';
+
   const defEnterprise = {
     businessLicenseFile: [],
     name: null,
@@ -187,11 +200,13 @@
     unifiedSocialCreditCode: '',
     businessScope: '',
     mainProduct: '',
-    remark: ''
+    remark: '',
+    fax:''
   };
   import {
     addOrganization,
-    updateOrganization,getById
+    updateOrganization,
+    getById
   } from '@/api/system/organization';
   export default {
     components: { OrgSelect, OrgTypeSelect, staffSelection, fileUpload },
@@ -218,7 +233,7 @@
         responsibleName: '',
         // 表单数据
         form: { ...defaultForm },
-        enterprise: {...defEnterprise},
+        enterprise: { ...defEnterprise },
         // 表单验证规则
         rules: {
           name: [
@@ -265,10 +280,10 @@
         ) {
           return false;
         }
-        let form={
+        let form = {
           ...this.form,
-          enterprise:this.enterprise
-        }
+          enterprise: this.enterprise
+        };
         this.loading = true;
         const data = {
           ...form,
@@ -324,25 +339,33 @@
       }
     },
     watch: {
-      'form.name'(n){
-        this.enterprise.name=n
-               
+      form: {
+        deep: true,
+        handler(n) {
+          this.enterprise.name = n.name;
+        }
       },
       visible(visible) {
         if (visible) {
           if (this.data) {
-            getById(this.data.id).then(res=>{
-              this.$util.assignObject(this.form, {
-              ...res,
-              parentId: res.parentId == 0 ? '' : res.parentId ?? ''
-            });
+            getById(this.data.id).then((res) => {
+              for (const key in res.enterprise) {
+                this.$set(this.enterprise, key, res.enterprise[key]);
+              }
+              for (const key in res) {
+                if (key == 'parentId') {
+                  this.$set(this.form, key, res[key] == 0 ? '' :res[key] ?? '');
+                }
+                if (key != 'enterprise') {
+                  this.$set(this.form, key, res[key]);
+                }
+              }
+            
               this.form.type = '' + this.form.type; //回显
               this.responsibleName =
-              res.manager &&
-              res.manager.map((item) => item.name).toString();
-              this.enterprise=res.enterprise
-            })
-      
+                res.manager && res.manager.map((item) => item.name).toString();
+            });
+
             // this.form.type = '' + this.form.type; //回显
             // this.responsibleName =
             //   this.data.manager &&
@@ -354,9 +377,10 @@
           }
         } else {
           this.$refs.form.clearValidate();
-          this.$refs.enterpriseForm&&this.$refs.enterpriseForm.clearValidate();
+          this.$refs.enterpriseForm &&
+            this.$refs.enterpriseForm.clearValidate();
           this.form = { ...this.defaultForm };
-          this.enterprise = { ...this.defEnterprise };
+          this.enterprise = { ...defEnterprise };
           this.responsibleName = '';
         }
       }