spring
2025-03-06 f2bc9fde40010ddb6fdbc4c36ee9fc0e83af8f03
src/views/system/user/index.vue
@@ -6,7 +6,7 @@
        class="default-theme"
      >
        <!--部门数据-->
        <pane size="12">
        <pane size="14">
          <el-col>
            <div class="head-container addButton">
              <el-input
@@ -17,7 +17,7 @@
                prefix-icon="el-icon-search"
                style="margin-bottom: 20px"
              />
              <el-button
              <!-- <el-button
                style="margin-left: 4px"
                type="primary"
                plain
@@ -25,7 +25,7 @@
                size="mini"
                circle
                @click="addSchema"
              ></el-button>
              ></el-button> -->
            </div>
            <div class="head-container">
              <el-tree
@@ -43,7 +43,7 @@
          </el-col>
        </pane>
        <!--用户数据-->
        <pane size="88">
        <pane size="86">
          <div class="search_form">
            <div>
              <el-form
@@ -297,9 +297,19 @@
                  v-for="item in postOptions"
                  :key="item.id"
                  :label="item.company"
                  :value="item.id + ''"
                  :value="item.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="归属部门" prop="deptId">
              <treeselect
                v-model="form.deptId"
                :options="enabledDeptOptions"
                :show-count="true"
                placeholder="请选择归属部门"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -310,14 +320,15 @@
                class="avatar-uploader"
                :action="uploadAction"
                :show-file-list="false"
                :headers="upload.headers"
                accept=".png, .jpg, .jpeg, .gif"
                :on-error="handleUploadError"
                :on-success="handleUploadSuccess"
                :before-upload="handleBeforeUpload"
              >
                <img
                  v-if="signatureUrl"
                  :src="signatureUrl"
                  v-if="form.signatureUrl"
                  :src="javaApi + '/img/' + form.signatureUrl"
                  class="avatar"
                  alt=""
                />
@@ -331,14 +342,15 @@
                class="avatar-uploader"
                :action="uploadAction"
                :show-file-list="false"
                :headers="upload.headers"
                accept=".png, .jpg, .jpeg, .gif"
                :on-error="handleUploadError1"
                :on-success="handleUploadSuccess1"
                :before-upload="handleBeforeUpload1"
              >
                <img
                  v-if="pictureUrl"
                  :src="pictureUrl"
                  v-if="form.pictureUrl"
                  :src="javaApi + '/img/' + form.pictureUrl"
                  class="avatar"
                  alt=""
                />
@@ -423,7 +435,7 @@
            <el-tree
              :data="datathirdParty"
              node-key="companyId"
              :props="defaultProps"
              :props="companyProps"
              @node-click="nodeClick2"
              style="height: calc(100% - 42px)"
              @node-expand="nodeOpen0"
@@ -462,8 +474,7 @@
              <el-table-column type="selection" width="50"> </el-table-column>
              <el-table-column prop="employeeID" label="员工号">
              </el-table-column>
              <el-table-column prop="nickName" label="员工姓名">
              </el-table-column>
              <el-table-column prop="name" label="员工姓名"> </el-table-column>
              <el-table-column prop="department" label="部门" min-width="200">
              </el-table-column>
              <el-table-column
@@ -586,6 +597,10 @@
        children: "children",
        label: "label",
      },
      companyProps: {
        children: "children",
        label: "companyName",
      },
      // 用户导入参数
      upload: {
        // 是否显示弹出层(用户导入)
@@ -602,8 +617,6 @@
        url: process.env.VUE_APP_BASE_API + "/system/user/importData",
      },
      uploadAction: process.env.VUE_APP_BASE_API + "/deviceScope/uploadFile",
      signatureUrl: "",
      pictureUrl: "",
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -627,12 +640,14 @@
      rules: {
        nickName: [{ required: true, message: "请填写姓名", trigger: "blur" }],
        userName: [{ required: true, message: "请填写账号", trigger: "blur" }],
        nameEn: [{ required: true, message: "请输入姓名EN", trigger: "blur" }],
        // nameEn: [
        //   { required: true, message: "请输入姓名EN", trigger: "blur" }
        // ],
        status: [{ required: true, message: "请选择状态", trigger: "change" }],
        roleIds: [{ required: true, message: "请选择角色", trigger: "change" }],
        password: [
          { required: true, message: "密码不能为空", trigger: "blur" },
        ],
        // password: [
        //   { required: true, message: "密码不能为空", trigger: "blur" },
        // ],
        phonenumber: [
          {
            required: true,
@@ -660,6 +675,7 @@
        fatherId: 10001,
        nickName: "",
      },
      multipleSelection: [],
    };
  },
  watch: {
@@ -781,7 +797,11 @@
        status: "0",
        company: "",
        roleIds: [],
        signatureUrl: "",
        pictureUrl: "",
      };
      // this.signatureUrl = '';
      // this.pictureUrl = ''
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
@@ -802,6 +822,7 @@
      this.ids = selection.map((item) => item.userId);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
      this.multipleSelection = selection;
    },
    // 更多操作触发
    handleCommand(command, row) {
@@ -840,8 +861,8 @@
        .catch(() => {
          this.thirdPartyLoading = false;
        });
      if (this.componentData.entity.roleId > 10000)
        this.$message.warning("由于未选中具体角色,新增用户将成为默认角色");
      // if (this.componentData.entity.roleId > 10000)
      //   this.$message.warning("由于未选中具体角色,新增用户将成为默认角色");
    },
    tranListToTreeData(list, rootValue) {
      const arr = [];
@@ -889,7 +910,7 @@
      }
    },
    nodeOpen0(data, node, el) {
      this.currentCompaniesList[node.level - nodeOpen01] = data.id;
      this.currentCompaniesList[node.level - 1] = data.id;
    },
    filterNode2(value, data) {
      if (!value) return true;
@@ -902,12 +923,6 @@
      if (this.currentCompaniesList.length === 0) {
        return this.$message.error("请选择组织");
      }
      /* for (let index = this.currentCompaniesList.length-1; index >1; index--) {
        let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index])
        if(!obj){
          this.currentCompaniesList.splice(index,1)
        }
      } */
      let arr = [];
      this.currentCompaniesList.forEach((b) => {
        let obj = this.companiesList.find((a) => a.companyId == b);
@@ -917,7 +932,7 @@
      addPersonUser({
        company: arr,
        person: this.multipleSelection,
        roleId: this.componentData.entity.roleId,
        roleId: null,
      })
        .then((res) => {
          if (res.code === 201) {
@@ -938,6 +953,7 @@
    /** 新增按钮操作 */
    handleAdd() {
      this.reset();
      this.form.deptId = this.queryParams.deptId;
      this.open = true;
      selectCustomEnum().then((res) => {
        this.postOptions = res.data;
@@ -956,6 +972,7 @@
      const userId = row.userId || this.ids;
      getUser(userId).then((response) => {
        this.form = response.data;
        this.form.password = "";
        this.roleOptions = response.roles;
        this.$set(this.form, "roleIds", response.roleIds);
        this.open = true;
@@ -1075,18 +1092,14 @@
      // 如果上传成功
      if (res.code == 200) {
        // 获取富文本组件实例
        let quill = this.Quill;
        // 获取光标所在位置
        let length = quill.getSelection().index;
        // 插入图片  res.url为服务器返回的图片地址
        quill.insertEmbed(
          length,
          "image",
          process.env.VUE_APP_BASE_API + res.fileName
        );
        // 调整光标到最后
        quill.setSelection(length + 1);
        this.signatureUrl = res.data.url;
        // let quill = this.Quill;
        // // 获取光标所在位置
        // let length = quill.getSelection().index;
        // // 插入图片  res.url为服务器返回的图片地址
        // quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName);
        // // 调整光标到最后
        // quill.setSelection(length + 1);
        this.form.signatureUrl = res.data.url;
      } else {
        this.$message.error("图片插入失败");
      }
@@ -1117,18 +1130,14 @@
      // 如果上传成功
      if (res.code == 200) {
        // 获取富文本组件实例
        let quill = this.Quill;
        // 获取光标所在位置
        let length = quill.getSelection().index;
        // 插入图片  res.url为服务器返回的图片地址
        quill.insertEmbed(
          length,
          "image",
          process.env.VUE_APP_BASE_API + res.fileName
        );
        // 调整光标到最后
        quill.setSelection(length + 1);
        this.pictureUrl = res.data.url;
        // let quill = this.Quill;
        // // 获取光标所在位置
        // let length = quill.getSelection().index;
        // // 插入图片  res.url为服务器返回的图片地址
        // quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName);
        // // 调整光标到最后
        // quill.setSelection(length + 1);
        this.form.pictureUrl = res.data.url;
      } else {
        this.$message.error("图片插入失败");
      }
@@ -1144,10 +1153,12 @@
.search_form {
  display: flex;
  justify-content: space-between;
  .options_button {
    margin-top: 3px;
  }
}
.avatar-uploader ::v-deep .el-upload {
  border: 1px dashed #666666;
  border-radius: 6px;
@@ -1155,9 +1166,11 @@
  position: relative;
  overflow: hidden;
}
.avatar-uploader ::v-deep .el-upload:hover {
  border-color: #409eff;
}
.avatar-uploader-icon {
  font-size: 20px;
  color: #8c939d;
@@ -1166,11 +1179,13 @@
  line-height: 90px;
  text-align: center;
}
.avatar {
  width: 90px;
  height: 90px;
  display: block;
}
.addButton {
  display: flex;
  align-items: flex-start;