2213980799@qq.com 1 год назад
Родитель
Сommit
e73bfd71f7

+ 37 - 3
src/views/enterpriseModel/dept/components/org-edit.vue

@@ -55,7 +55,19 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="负责人:" style="margin-bottom: 22px">
+          <el-form-item label="一级负责人:" style="margin-bottom: 22px">
+            <el-input
+              @focus="addOpen"
+              @clear="clearManagerFirst"
+              v-model="managerFirst.name"
+
+              placeholder="请选择"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="二级负责人:" style="margin-bottom: 22px">
             <el-input
               @click.native="openStaffSelection"
               v-model="responsibleName"
@@ -300,6 +312,7 @@
       ref="staffSelection"
       @confirm="confirmStaffSelection"
     ></staffSelection>
+    <addUser ref="addUserRef" @success="userBk"></addUser>
   </ele-modal>
 </template>
 
@@ -309,6 +322,7 @@ import OrgTypeSelect from './org-type-select.vue';
 import staffSelection from './staffSelection.vue';
 import fileUpload from '@/components/upload/fileUpload';
 import AreaSelect from '@/views/enterpriseModel/regionalManage/components/area-cascader.vue';
+import addUser from '@/views/system/user/components/add.vue';
 
 const defEnterprise = {
   businessLicenseFile: [],
@@ -334,6 +348,7 @@ const defFactoryForm = {
     location: [],
     locationDetail: ''
   },
+
   areaIdList: [],
   enabled: 1,
   parentId: 0,
@@ -355,7 +370,8 @@ export default {
     OrgTypeSelect,
     staffSelection,
     fileUpload,
-    AreaSelect
+    AreaSelect,
+    addUser
   },
   props: {
     // 弹窗是否打开
@@ -376,7 +392,8 @@ export default {
       sort: null,
       status: 1,
       manager: [],
-      groupCode:''
+      groupCode: '',
+      managerFirst: []
     };
     return {
       defaultForm,
@@ -387,6 +404,7 @@ export default {
       factoryForm: {
         ...defFactoryForm
       },
+      managerFirst:{},
       cityDataLabel,
       // 表单验证规则
       rules: {
@@ -445,6 +463,9 @@ export default {
       if (!this.isUpdate) {
         delete data.id;
       }
+      if(this.managerFirst?.name){
+        this.form.managerFirst[0]=this.managerFirst
+      }
       const saveOrUpdate = this.isUpdate ? updateOrganization : addOrganization;
       saveOrUpdate(data)
         .then((msg) => {
@@ -493,6 +514,15 @@ export default {
       this.form.manager = JSON.parse(JSON.stringify(data));
       this.responsibleName = data.map((item) => item.name).toString();
     },
+    addOpen() {
+      this.$refs.addUserRef.open();
+    },
+    clearManagerFirst(){
+      this.managerFirst={}
+    },
+    userBk(data) {
+      this.managerFirst = data;
+    },
     openStaffSelection() {
       console.log(this.form.manager);
       this.$refs.staffSelection.open(
@@ -529,6 +559,9 @@ export default {
             }
 
             this.form.type = '' + this.form.type; //回显
+            if(this.form?.managerFirst.length){
+              this.managerFirst=this.form.managerFirst[0]
+            }
             this.responsibleName =
               res.manager && res.manager.map((item) => item.name).toString();
           });
@@ -550,6 +583,7 @@ export default {
         this.$refs.enterpriseForm && this.$refs.enterpriseForm.clearValidate();
         this.form = { ...this.defaultForm };
         this.enterprise = { ...defEnterprise };
+        this.managerFirst={}
         this.responsibleName = '';
       }
     }

+ 165 - 172
src/views/enterpriseModel/dept/components/staffSelection.vue

@@ -136,187 +136,153 @@
   </div>
 </template>
 <script>
-  import { listOrganizations, getUserPage } from '@/api/system/organization';
-  export default {
-    data() {
-      return {
-        form: {
-          groupId: null
-        },
-        treeList: [],
-        staffList: [],
-        selectStafflist: [], //已选员工
-        defaultProps: {
-          children: 'children',
-          label: 'name',
-          value: 'code'
-        },
-        pageNum: 1, //设备当前页数
-        size: 10,
-        isMore: false,
-        dialogVisible: false
-      };
-    },
-    created() {},
-    methods: {
-      open(selectedList) {
-
-        this.dialogVisible = true;
-        this.selectStafflist = selectedList;
-        this.getInfo();
+import { listOrganizations, getUserPage } from '@/api/system/organization';
+export default {
+  data() {
+    return {
+      form: {
+        groupId: null
       },
-      //初始数据
-      async getInfo() {
-        let list = await listOrganizations();
-        this.treeList = this.$util.toTreeData({
-          data: list,
-          idField: 'id',
-          parentIdField: 'parentId'
-        });
-        //this.treeList = res.data;
+      treeList: [],
+      staffList: [],
+      selectStafflist: [], //已选员工
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+        value: 'code'
       },
-      //选择分类
-      handleNodeClick(data) {
-        this.staffList = [];
+      pageNum: 1, //设备当前页数
+      size: 10,
+      isMore: false,
+      dialogVisible: false
+    };
+  },
+  created() {},
+  methods: {
+    open(selectedList) {
+      this.dialogVisible = true;
+      this.selectStafflist = selectedList;
+      this.getInfo();
+    },
+    //初始数据
+    async getInfo() {
+      let list = await listOrganizations();
+      this.treeList = this.$util.toTreeData({
+        data: list,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+      //this.treeList = res.data;
+    },
+    //选择分类
+    handleNodeClick(data) {
+      this.staffList = [];
 
-        this.form.groupId = data.id;
-        let params = {
-          pageNum: 1,
-          size: this.size,
-          groupId: this.form.groupId
-        };
-        this.getStaffList(params);
-      },
-      //获取员工列表
-      async getStaffList(params) {
-        let res = await getUserPage(params);
-        let list = res.list;
-        if (list.length < res.count) {
-          this.isMore = true;
+      this.form.groupId = data.id;
+      let params = {
+        pageNum: 1,
+        size: this.size,
+        groupId: this.form.groupId
+      };
+      this.getStaffList(params);
+    },
+    //获取员工列表
+    async getStaffList(params) {
+      let res = await getUserPage(params);
+      let list = res.list;
+      if (list.length < res.count) {
+        this.isMore = true;
+      } else {
+        this.isMore = false;
+      }
+      list.forEach((el) => {
+        let _index = this.selectStafflist.findIndex((n) => n.id == el.id);
+        if (_index !== -1) {
+          el.disabled = true;
         } else {
-          this.isMore = false;
+          el.disabled = false;
         }
-        list.forEach((el) => {
-          let _index = this.selectStafflist.findIndex((n) => n.id == el.id);
-          if (_index !== -1) {
-            el.disabled = true;
-          } else {
-            el.disabled = false;
-          }
-        });
-        this.staffList = [...this.staffList, ...list];
-        // this.pageNum = res.pageNum;
-      },
-      //查询更多员工
-      async getMore() {
-        this.pageNum = this.pageNum + 1;
-        let params = {
-          pageNum: this.pageNum,
-          size: this.size,
-          groupId: this.form.groupId
-        };
-        this.getStaffList(params);
-      },
-      //选择员工
-      choiceAsset(info) {
-        let data = JSON.parse(JSON.stringify(info));
-        this.selectStafflist.push(data);
-        info.disabled = true;
-      },
-      //删除已选员工
-      deleteSelectStaff(info, index) {
-        this.staffList.forEach((el) => {
-          if (el.id == info.id) {
-            el.disabled = false;
-          }
-        });
-        this.selectStafflist.splice(index, 1);
-      },
-      //保存
-      sumbit() {
-        if (this.selectStafflist.length === 0) {
-          this.$message.warning('请选择员工');
-        } else {
-          this.$emit(
-            'confirm',
-            JSON.parse(JSON.stringify(this.selectStafflist))
-          );
-          this.handleClose();
+      });
+      this.staffList = [...this.staffList, ...list];
+      // this.pageNum = res.pageNum;
+    },
+    //查询更多员工
+    async getMore() {
+      this.pageNum = this.pageNum + 1;
+      let params = {
+        pageNum: this.pageNum,
+        size: this.size,
+        groupId: this.form.groupId
+      };
+      this.getStaffList(params);
+    },
+    //选择员工
+    choiceAsset(info) {
+      let data = JSON.parse(JSON.stringify(info));
+      this.selectStafflist.push(data);
+      info.disabled = true;
+    },
+    //删除已选员工
+    deleteSelectStaff(info, index) {
+      this.staffList.forEach((el) => {
+        if (el.id == info.id) {
+          el.disabled = false;
         }
-      },
-      handleClose() {
-        this.staffList = [];
-        this.selectStafflist = [];
-        this.dialogVisible = false;
-      }
+      });
+      this.selectStafflist.splice(index, 1);
+    },
+    //保存
+    sumbit() {
+      this.selectStafflist = this.selectStafflist || [];
+      this.$emit('confirm', JSON.parse(JSON.stringify(this.selectStafflist)));
+      this.handleClose();
+    },
+    handleClose() {
+      this.staffList = [];
+      this.selectStafflist = [];
+      this.dialogVisible = false;
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .container {
-    padding: 10px 0;
-  }
-  .zw-container {
-    height: 500px;
-    overflow-y: auto;
-  }
-  .zw-header-title {
-    display: inline-block;
-    margin-right: 10px;
-    font-weight: 600;
-  }
-  .details-title {
-    line-height: 32px;
-    height: 32px;
-  }
-  .zw-page-list-p {
-    font-size: 14px;
-    margin-bottom: 18px;
+.container {
+  padding: 10px 0;
+}
+.zw-container {
+  height: 500px;
+  overflow-y: auto;
+}
+.zw-header-title {
+  display: inline-block;
+  margin-right: 10px;
+  font-weight: 600;
+}
+.details-title {
+  line-height: 32px;
+  height: 32px;
+}
+.zw-page-list-p {
+  font-size: 14px;
+  margin-bottom: 18px;
+  display: flex;
+  justify-content: space-between;
+  // align-items: center;
+  .zw-page-list-right {
     display: flex;
-    justify-content: space-between;
-    // align-items: center;
-    .zw-page-list-right {
-      display: flex;
-    }
   }
-  .zw-page {
-    background: #fff;
-    //padding: 20px 0;
-    height: 600px;
-    .zw-page-left {
-      padding: 0 10px;
-    }
-    .zw-page-main {
-      padding: 0 10px;
-      .zw-page-main-list {
-        span {
-          margin-right: 10px;
-        }
-        .zw-page-span-num {
-          font-size: 12px;
-          color: #157a2c;
-        }
-        .zw-page-p-operation {
-          text-align: right;
-          // width: 200px;
-        }
-        .zw-page-operation-num {
-          width: 100px;
-          margin: 0 10px;
-        }
-      }
-      .zw-page-list-more {
-        text-align: center;
-      }
-    }
-    .zw-page-right {
-      .zw-card-header {
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        height: 32px;
-      }
+}
+.zw-page {
+  background: #fff;
+  //padding: 20px 0;
+  height: 600px;
+  .zw-page-left {
+    padding: 0 10px;
+  }
+  .zw-page-main {
+    padding: 0 10px;
+    .zw-page-main-list {
       span {
         margin-right: 10px;
       }
@@ -324,10 +290,37 @@
         font-size: 12px;
         color: #157a2c;
       }
+      .zw-page-p-operation {
+        text-align: right;
+        // width: 200px;
+      }
+      .zw-page-operation-num {
+        width: 100px;
+        margin: 0 10px;
+      }
+    }
+    .zw-page-list-more {
+      text-align: center;
     }
   }
-  .notes {
-    font-size: 12px;
-    color: #909090;
+  .zw-page-right {
+    .zw-card-header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      height: 32px;
+    }
+    span {
+      margin-right: 10px;
+    }
+    .zw-page-span-num {
+      font-size: 12px;
+      color: #157a2c;
+    }
   }
+}
+.notes {
+  font-size: 12px;
+  color: #909090;
+}
 </style>

+ 12 - 2
src/views/enterpriseModel/dept/index.vue

@@ -167,11 +167,21 @@ export default {
         },
         {
           prop: '',
-          label: '负责人',
+          label: '一级负责人',
           showOverflowTooltip: true,
           align: 'center',
           formatter: (_row) => {
-            return _row.manager.map(item => item.name).join(',')
+            return _row.managerFirst&&_row.managerFirst.map(item => item.name).toString()
+          },
+          minWidth: 110,
+        },
+        {
+          prop: '',
+          label: '二级负责人',
+          showOverflowTooltip: true,
+          align: 'center',
+          formatter: (_row) => {
+            return _row.manager.map(item => item.name).toString()
           },
           minWidth: 110,
         },

+ 226 - 203
src/views/system/organization/components/org-edit.vue

@@ -10,6 +10,16 @@
   >
     <el-form ref="form" :model="form" :rules="rules" label-width="140px">
       <el-row :gutter="15">
+        <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+          <el-form-item label="编码:">
+            <el-input
+              clearable
+              :maxlength="20"
+              v-model="form.groupCode"
+              :disabled="true"
+            />
+          </el-form-item>
+        </el-col>
         <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
           <el-form-item label="上级机构:">
             <org-select
@@ -45,30 +55,31 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item
-            label="负责人:"
-            style="margin-bottom: 22px"
-          >
+          <el-form-item label="一级负责人:" style="margin-bottom: 22px">
             <el-input
-              @click.native="openStaffSelection"
-              v-model="responsibleName"
+              @focus="addOpen"
+              @clear="clearManagerFirst"
+              v-model="managerFirst.name"
               placeholder="请选择"
+              clearable
             ></el-input>
           </el-form-item>
         </el-col>
-
         <el-col :span="12">
-          <el-form-item
-            label="排序:"
-            style="margin-bottom: 22px"
-          >
+          <el-form-item label="二级负责人:" style="margin-bottom: 22px">
             <el-input
-              v-model="form.sort"
+              @click.native="openStaffSelection"
+              v-model="responsibleName"
               placeholder="请选择"
             ></el-input>
           </el-form-item>
         </el-col>
-        
+
+        <el-col :span="12">
+          <el-form-item label="排序:" style="margin-bottom: 22px">
+            <el-input v-model="form.sort" placeholder="请选择"></el-input>
+          </el-form-item>
+        </el-col>
       </el-row>
     </el-form>
     <headerTitle
@@ -196,216 +207,228 @@
       ref="staffSelection"
       @confirm="confirmStaffSelection"
     ></staffSelection>
+    <addUser ref="addUserRef" @success="userBk"></addUser>
   </ele-modal>
 </template>
 
 <script>
-  import OrgSelect from './org-select.vue';
-  import OrgTypeSelect from './org-type-select.vue';
-  import staffSelection from './staffSelection.vue';
-  import fileUpload from '@/components/upload/fileUpload';
-  import { copyObj } from '@/utils/util';
+import OrgSelect from './org-select.vue';
+import OrgTypeSelect from './org-type-select.vue';
+import staffSelection from './staffSelection.vue';
+import fileUpload from '@/components/upload/fileUpload';
+import { copyObj } from '@/utils/util';
+import addUser from '@/views/system/user/components/add.vue';
+const defEnterprise = {
+  businessLicenseFile: [],
+  name: null,
+  address: null,
+  tel: '',
+  registerDate: '',
+  unifiedSocialCreditCode: '',
+  businessScope: '',
+  mainProduct: '',
+  remark: '',
+  fax: ''
+};
+import {
+  addOrganization,
+  updateOrganization,
+  getById,
+  getCode
+} from '@/api/system/organization';
+export default {
+  components: { OrgSelect, OrgTypeSelect, staffSelection, fileUpload, addUser },
+  props: {
+    // 弹窗是否打开
+    visible: Boolean,
+    // 修改回显的数据
+    data: Object,
+    // 上级id
+    parentId: [Number, String],
+    // 机构数据
+    organizationList: Array
+  },
+  data() {
+    const defaultForm = {
+      id: null,
+      parentId: null,
+      name: '',
+      type: '',
+      sort: null,
+      manager: [],
+      groupCode: '',
+      managerFirst: []
 
-  const defEnterprise = {
-    businessLicenseFile: [],
-    name: null,
-    address: null,
-    tel: '',
-    registerDate: '',
-    unifiedSocialCreditCode: '',
-    businessScope: '',
-    mainProduct: '',
-    remark: '',
-    fax: ''
-  };
-  import {
-    addOrganization,
-    updateOrganization,
-    getById
-  } from '@/api/system/organization';
-  export default {
-    components: { OrgSelect, OrgTypeSelect, staffSelection, fileUpload },
-    props: {
-      // 弹窗是否打开
-      visible: Boolean,
-      // 修改回显的数据
-      data: Object,
-      // 上级id
-      parentId: [Number, String],
-      // 机构数据
-      organizationList: Array
-    },
-    data() {
-      const defaultForm = {
-        id: null,
-        parentId: null,
-        name: '',
-        type: '',
-        sort: null,
-        manager: []
+    };
+    return {
+      defaultForm,
+      responsibleName: '',
+      managerFirst:{},
+      // 表单数据
+      form: { ...defaultForm },
+      enterprise: { ...defEnterprise },
+      // 表单验证规则
+      rules: {
+        name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
+        manager: [{ required: true, message: '请选择负责人', trigger: 'blur' }],
+        type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }]
+      },
+      // 表单验证规则
+      enterpriseRules: {
+        name: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
+        address: [
+          { required: true, message: '请输入企业地址', trigger: 'blur' }
+        ],
+        unifiedSocialCreditCode: [
+          { required: true, message: '请输入统一社会性代码', trigger: 'blur' }
+        ]
+      },
+      // 提交状态
+      loading: false,
+      // 是否是修改
+      isUpdate: false
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  methods: {
+    /* 保存编辑 */
+    async save() {
+      if (!(await this.formValidate())) {
+        return false;
+      }
+      if (
+        ['10', '20'].includes(this.form.type) &&
+        !(await this.enterpriseValidate())
+      ) {
+        return false;
+      }
+      let form = {
+        ...this.form
       };
-      return {
-        defaultForm,
-        responsibleName: '',
-        // 表单数据
-        form: { ...defaultForm },
-        enterprise: { ...defEnterprise },
-        // 表单验证规则
-        rules: {
-          name: [
-            { required: true, message: '请输入机构名称', trigger: 'blur' }
-          ],
-          manager: [
-            { required: true, message: '请选择负责人', trigger: 'blur' }
-          ],
-          type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }]
-        },
-        // 表单验证规则
-        enterpriseRules: {
-          name: [
-            { required: true, message: '请输入企业名称', trigger: 'blur' }
-          ],
-          address: [
-            { required: true, message: '请输入企业地址', trigger: 'blur' }
-          ],
-          unifiedSocialCreditCode: [
-            { required: true, message: '请输入统一社会性代码', trigger: 'blur' }
-          ]
-        },
-        // 提交状态
-        loading: false,
-        // 是否是修改
-        isUpdate: false
+      if (['10', '20'].includes(this.form.type)) {
+        form['enterprise'] = this.enterprise;
+      }
+      if(this.managerFirst?.name){
+        this.form.managerFirst[0]=this.managerFirst
+      }
+      this.loading = true;
+      const data = {
+        ...form,
+        parentId: this.form.parentId || 0
       };
-    },
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive() {
-        return this.$store.state.theme.styleResponsive;
+      if (!this.isUpdate) {
+        delete data.id;
       }
+      const saveOrUpdate = this.isUpdate ? updateOrganization : addOrganization;
+      saveOrUpdate(data)
+        .then((msg) => {
+          this.loading = false;
+          this.$message.success(msg);
+          this.updateVisible(false);
+          this.$emit('done');
+        })
+        .catch((e) => {
+          this.loading = false;
+          // this.$message.error(e.message);
+        });
     },
-    methods: {
-      /* 保存编辑 */
-      async save() {
-        if (!(await this.formValidate())) {
-          return false;
-        }
-        if (
-          ['10', '20'].includes(this.form.type) &&
-          !(await this.enterpriseValidate())
-        ) {
-          return false;
-        }
-        let form = {
-          ...this.form
-        };
-        if (['10', '20'].includes(this.form.type)) {
-          form['enterprise'] = this.enterprise;
-        }
-        this.loading = true;
-        const data = {
-          ...form,
-          parentId: this.form.parentId || 0
-        };
-        if (!this.isUpdate) {
-          delete data.id;
-        }
-        const saveOrUpdate = this.isUpdate
-          ? updateOrganization
-          : addOrganization;
-        saveOrUpdate(data)
-          .then((msg) => {
-            this.loading = false;
-            this.$message.success(msg);
-            this.updateVisible(false);
-            this.$emit('done');
-          })
-          .catch((e) => {
-            this.loading = false;
-            // this.$message.error(e.message);
-          });
-      },
-      formValidate() {
-        return new Promise((resolve, reject) => {
-          this.$refs.form.validate((valid) => {
-            resolve(valid);
-          });
+    formValidate() {
+      return new Promise((resolve, reject) => {
+        this.$refs.form.validate((valid) => {
+          resolve(valid);
         });
-      },
-      enterpriseValidate() {
-        return new Promise((resolve, reject) => {
-          this.$refs.enterpriseForm.validate((valid) => {
-            resolve(valid);
-          });
+      });
+    },
+    enterpriseValidate() {
+      return new Promise((resolve, reject) => {
+        this.$refs.enterpriseForm.validate((valid) => {
+          resolve(valid);
         });
-      },
+      });
+    },
 
-      //选择负责人
-      confirmStaffSelection(data) {
-        this.form.manager = JSON.parse(JSON.stringify(data));
-        this.responsibleName = data.map((item) => item.name).toString();
-      },
-      openStaffSelection() {
-        console.log(this.form.manager);
-        this.$refs.staffSelection.open(
-          JSON.parse(JSON.stringify(this.form.manager)) || []
-        );
-      },
-      /* 更新visible */
-      updateVisible(value) {
-        this.$emit('update:visible', value);
+    //选择负责人
+    confirmStaffSelection(data) {
+      this.form.manager = JSON.parse(JSON.stringify(data));
+      this.responsibleName = data.map((item) => item.name).toString();
+    },
+    openStaffSelection() {
+      console.log(this.form.manager);
+      this.$refs.staffSelection.open(
+        JSON.parse(JSON.stringify(this.form.manager)) || []
+      );
+    },
+    addOpen() {
+      this.$refs.addUserRef.open();
+    },
+    clearManagerFirst() {
+      this.managerFirst = {};
+    },
+    userBk(data) {
+      this.managerFirst = data;
+    },
+    /* 更新visible */
+    updateVisible(value) {
+      this.$emit('update:visible', value);
+    }
+  },
+  watch: {
+    form: {
+      deep: true,
+      handler(n) {
+        this.enterprise.name = n.name;
       }
     },
-    watch: {
-      form: {
-        deep: true,
-        handler(n) {
-          this.enterprise.name = n.name;
-        }
-      },
-      visible(visible) {
-        if (visible) {
-          if (this.data) {
-            getById(this.data.id).then((res) => {
-              for (const key in res.enterprise) {
-                this.$set(this.enterprise, key, res.enterprise[key]);
+    visible(visible) {
+      if (visible) {
+        if (this.data) {
+          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] ?? '');
               }
-              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]);
-                }
+              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.form.type = '' + this.form.type; //回显
+            if(this.form?.managerFirst.length){
+              this.managerFirst=this.form.managerFirst[0]
+            }
+            this.responsibleName =
+              res.manager && res.manager.map((item) => item.name).toString();
+          });
 
-            // this.form.type = '' + this.form.type; //回显
-            // this.responsibleName =
-            //   this.data.manager &&
-            //   this.data.manager.map((item) => item.name).toString();
-            this.isUpdate = true;
-          } else {
-            this.form.parentId = this.parentId;
-            this.isUpdate = false;
-          }
+          // this.form.type = '' + this.form.type; //回显
+          // this.responsibleName =
+          //   this.data.manager &&
+          //   this.data.manager.map((item) => item.name).toString();
+          this.isUpdate = true;
         } else {
-          this.$refs.form.clearValidate();
-          this.$refs.enterpriseForm &&
-            this.$refs.enterpriseForm.clearValidate();
-          this.form = { ...this.defaultForm };
-          this.enterprise = { ...defEnterprise };
-          this.responsibleName = '';
+          this.form.parentId = this.parentId;
+          getCode().then((res) => {
+            this.form.groupCode = res;
+          });
+          this.isUpdate = false;
         }
+      } else {
+        this.$refs.form.clearValidate();
+        this.$refs.enterpriseForm && this.$refs.enterpriseForm.clearValidate();
+        this.form = { ...this.defaultForm };
+        this.enterprise = { ...defEnterprise };
+        this.managerFirst={}
+        this.responsibleName = '';
       }
     }
-  };
+  }
+};
 </script>

+ 165 - 171
src/views/system/organization/components/staffSelection.vue

@@ -136,186 +136,153 @@
   </div>
 </template>
 <script>
-  import { listOrganizations, getUserPage } from '@/api/system/organization';
-  export default {
-    data() {
-      return {
-        form: {
-          groupId: null
-        },
-        treeList: [],
-        staffList: [],
-        selectStafflist: [], //已选员工
-        defaultProps: {
-          children: 'children',
-          label: 'name',
-          value: 'code'
-        },
-        pageNum: 1, //设备当前页数
-        size: 10,
-        isMore: false,
-        dialogVisible: false
-      };
-    },
-    created() {},
-    methods: {
-      open(selectedList) {
-        this.dialogVisible = true;
-        this.selectStafflist = selectedList;
-        this.getInfo();
+import { listOrganizations, getUserPage } from '@/api/system/organization';
+export default {
+  data() {
+    return {
+      form: {
+        groupId: null
       },
-      //初始数据
-      async getInfo() {
-        let list = await listOrganizations();
-        this.treeList = this.$util.toTreeData({
-          data: list,
-          idField: 'id',
-          parentIdField: 'parentId'
-        });
-        //this.treeList = res.data;
+      treeList: [],
+      staffList: [],
+      selectStafflist: [], //已选员工
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+        value: 'code'
       },
-      //选择分类
-      handleNodeClick(data) {
-        this.staffList = [];
+      pageNum: 1, //设备当前页数
+      size: 10,
+      isMore: false,
+      dialogVisible: false
+    };
+  },
+  created() {},
+  methods: {
+    open(selectedList) {
+      this.dialogVisible = true;
+      this.selectStafflist = selectedList;
+      this.getInfo();
+    },
+    //初始数据
+    async getInfo() {
+      let list = await listOrganizations();
+      this.treeList = this.$util.toTreeData({
+        data: list,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+      //this.treeList = res.data;
+    },
+    //选择分类
+    handleNodeClick(data) {
+      this.staffList = [];
 
-        this.form.groupId = data.id;
-        let params = {
-          pageNum: 1,
-          size: this.size,
-          groupId: this.form.groupId
-        };
-        this.getStaffList(params);
-      },
-      //获取员工列表
-      async getStaffList(params) {
-        let res = await getUserPage(params);
-        let list = res.list;
-        if (list.length < res.count) {
-          this.isMore = true;
+      this.form.groupId = data.id;
+      let params = {
+        pageNum: 1,
+        size: this.size,
+        groupId: this.form.groupId
+      };
+      this.getStaffList(params);
+    },
+    //获取员工列表
+    async getStaffList(params) {
+      let res = await getUserPage(params);
+      let list = res.list;
+      if (list.length < res.count) {
+        this.isMore = true;
+      } else {
+        this.isMore = false;
+      }
+      list.forEach((el) => {
+        let _index = this.selectStafflist.findIndex((n) => n.id == el.id);
+        if (_index !== -1) {
+          el.disabled = true;
         } else {
-          this.isMore = false;
+          el.disabled = false;
         }
-        list.forEach((el) => {
-          let _index = this.selectStafflist.findIndex((n) => n.id == el.id);
-          if (_index !== -1) {
-            el.disabled = true;
-          } else {
-            el.disabled = false;
-          }
-        });
-        this.staffList = [...this.staffList, ...list];
-        // this.pageNum = res.pageNum;
-      },
-      //查询更多员工
-      async getMore() {
-        this.pageNum = this.pageNum + 1;
-        let params = {
-          pageNum: this.pageNum,
-          size: this.size,
-          groupId: this.form.groupId
-        };
-        this.getStaffList(params);
-      },
-      //选择员工
-      choiceAsset(info) {
-        let data = JSON.parse(JSON.stringify(info));
-        this.selectStafflist.push(data);
-        info.disabled = true;
-      },
-      //删除已选员工
-      deleteSelectStaff(info, index) {
-        this.staffList.forEach((el) => {
-          if (el.id == info.id) {
-            el.disabled = false;
-          }
-        });
-        this.selectStafflist.splice(index, 1);
-      },
-      //保存
-      sumbit() {
-        if (this.selectStafflist.length === 0) {
-          this.$message.warning('请选择员工');
-        } else {
-          this.$emit(
-            'confirm',
-            JSON.parse(JSON.stringify(this.selectStafflist))
-          );
-          this.handleClose();
+      });
+      this.staffList = [...this.staffList, ...list];
+      // this.pageNum = res.pageNum;
+    },
+    //查询更多员工
+    async getMore() {
+      this.pageNum = this.pageNum + 1;
+      let params = {
+        pageNum: this.pageNum,
+        size: this.size,
+        groupId: this.form.groupId
+      };
+      this.getStaffList(params);
+    },
+    //选择员工
+    choiceAsset(info) {
+      let data = JSON.parse(JSON.stringify(info));
+      this.selectStafflist.push(data);
+      info.disabled = true;
+    },
+    //删除已选员工
+    deleteSelectStaff(info, index) {
+      this.staffList.forEach((el) => {
+        if (el.id == info.id) {
+          el.disabled = false;
         }
-      },
-      handleClose() {
-        this.staffList = [];
-        this.selectStafflist = [];
-        this.dialogVisible = false;
-      }
+      });
+      this.selectStafflist.splice(index, 1);
+    },
+    //保存
+    sumbit() {
+      this.selectStafflist = this.selectStafflist || [];
+      this.$emit('confirm', JSON.parse(JSON.stringify(this.selectStafflist)));
+      this.handleClose();
+    },
+    handleClose() {
+      this.staffList = [];
+      this.selectStafflist = [];
+      this.dialogVisible = false;
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .container {
-    padding: 10px 0;
-  }
-  .zw-container {
-    height: 500px;
-    overflow-y: auto;
-  }
-  .zw-header-title {
-    display: inline-block;
-    margin-right: 10px;
-    font-weight: 600;
-  }
-  .details-title {
-    line-height: 32px;
-    height: 32px;
-  }
-  .zw-page-list-p {
-    font-size: 14px;
-    margin-bottom: 18px;
+.container {
+  padding: 10px 0;
+}
+.zw-container {
+  height: 500px;
+  overflow-y: auto;
+}
+.zw-header-title {
+  display: inline-block;
+  margin-right: 10px;
+  font-weight: 600;
+}
+.details-title {
+  line-height: 32px;
+  height: 32px;
+}
+.zw-page-list-p {
+  font-size: 14px;
+  margin-bottom: 18px;
+  display: flex;
+  justify-content: space-between;
+  // align-items: center;
+  .zw-page-list-right {
     display: flex;
-    justify-content: space-between;
-    // align-items: center;
-    .zw-page-list-right {
-      display: flex;
-    }
   }
-  .zw-page {
-    background: #fff;
-    //padding: 20px 0;
-    height: 600px;
-    .zw-page-left {
-      padding: 0 10px;
-    }
-    .zw-page-main {
-      padding: 0 10px;
-      .zw-page-main-list {
-        span {
-          margin-right: 10px;
-        }
-        .zw-page-span-num {
-          font-size: 12px;
-          color: #157a2c;
-        }
-        .zw-page-p-operation {
-          text-align: right;
-          // width: 200px;
-        }
-        .zw-page-operation-num {
-          width: 100px;
-          margin: 0 10px;
-        }
-      }
-      .zw-page-list-more {
-        text-align: center;
-      }
-    }
-    .zw-page-right {
-      .zw-card-header {
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        height: 32px;
-      }
+}
+.zw-page {
+  background: #fff;
+  //padding: 20px 0;
+  height: 600px;
+  .zw-page-left {
+    padding: 0 10px;
+  }
+  .zw-page-main {
+    padding: 0 10px;
+    .zw-page-main-list {
       span {
         margin-right: 10px;
       }
@@ -323,10 +290,37 @@
         font-size: 12px;
         color: #157a2c;
       }
+      .zw-page-p-operation {
+        text-align: right;
+        // width: 200px;
+      }
+      .zw-page-operation-num {
+        width: 100px;
+        margin: 0 10px;
+      }
+    }
+    .zw-page-list-more {
+      text-align: center;
     }
   }
-  .notes {
-    font-size: 12px;
-    color: #909090;
+  .zw-page-right {
+    .zw-card-header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      height: 32px;
+    }
+    span {
+      margin-right: 10px;
+    }
+    .zw-page-span-num {
+      font-size: 12px;
+      color: #157a2c;
+    }
   }
+}
+.notes {
+  font-size: 12px;
+  color: #909090;
+}
 </style>