fix(order): -移除英文字段验证
- 删除与OA流程相关的无用代码和组件
- 移除系统用户管理中的获取三方人员功能
- 更新设备二维码链接使用动态API地址
- 清理不合格处理页面中的OA相关功能和字段
- 移除登录页面的集团集成登录按钮
- 删除未使用的API接口和组件引用
已删除3个文件
已修改22个文件
771 ■■■■■ 文件已修改
src/api/business/unpass.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/unqualifiedHandler.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/login.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/date.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/process/demand/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/process/method/standardMethod/index.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/files.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/management.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/addOrder.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/addView.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/components/OAProcess.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/index-manage.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/logindemo.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/performance/manHour/workTimeStatistics.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capability/index.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/customer/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/thirdpartylogin.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/unpass.js
@@ -46,7 +46,7 @@
  });
}
// æŸ¥çœ‹OA详情
// æŸ¥çœ‹ä¸åˆæ ¼å¤„理详情
export function getUnqualifiedHandler(query) {
  return request({
    url: "/unqualifiedHandler/getUnqualifiedHandler",
src/api/business/unqualifiedHandler.js
@@ -17,19 +17,3 @@
    params: query,
  });
}
//提交OA流程
export function pushOA(query) {
  return request({
    url: "/unqualifiedHandler/pushOA",
    method: "post",
    data: query,
  });
}
//查看OA流程
export function getOaFlow(query) {
  return request({
    url: "/unqualifiedHandler/getOaFlow",
    method: "get",
    params: query,
  });
}
src/api/login.js
@@ -19,27 +19,6 @@
  })
}
// èŽ·å–å•ç‚¹ç™»å½•åœ°å€
export function getSsoAuthUrl() {
  return request({
    url: '/getSsoAuthUrl',
    method: 'get'
  })
}
// å•点登录
export function LoginBySSO(accessToken) {
  return request({
    url: '/loginBySSO',
    headers: {
      isToken: false,
      repeatSubmit: false
    },
    method: 'post',
    params: accessToken
  })
}
// æ³¨å†Œæ–¹æ³•
export function register(data) {
  return request({
src/api/system/user.js
@@ -135,29 +135,6 @@
  });
}
// èŽ·å–äººäº‹ç³»ç»Ÿç»„ç»‡
export function selectCompaniesList() {
  return request({
    url: "/companies/selectCompaniesList",
    method: "get",
  });
}
// èŽ·å–äººäº‹ç³»ç»Ÿç»„ç»‡ä¸‹çš„äººå‘˜
export function selectSimpleList(data) {
  return request({
    url: "/companies/selectSimpleList",
    method: "post",
    params: data,
  });
}
// èŽ·å–äººäº‹ç³»ç»Ÿç»„ç»‡ä¸‹çš„äººå‘˜
export function addPersonUser(data) {
  return request({
    url: "/companies/addPersonUser",
    method: "post",
    data: data,
  });
}
// èŽ·å–è§’è‰²
export function selectRoleList() {
  return request({
src/components/Table/lims-table.vue
@@ -162,7 +162,7 @@
// plain:按elementUi æ–‡æ¡£ä¸ºå‡†
// clickFun:按钮的回调函数
export default {
  name: "ZTTable",
  name: "LimsTable",
  filters: {
    typeFn(val, row) {
      if (typeof val === "function") {
src/permission.js
@@ -9,7 +9,7 @@
NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register', '/thirdpartylogin', '/logindemo']
const whiteList = ['/login', '/register']
const isWhiteList = (path) => {
  return whiteList.some(pattern => isPathMatch(pattern, path))
src/router/index.js
@@ -46,18 +46,6 @@
    component: () => import("@/views/login"),
    hidden: true,
  },
  // ç¬¬ä¸‰æ–¹ç™»å½•页
  {
    path: "/thirdpartylogin",
    component: () => import("@/views/thirdpartylogin"),
    hidden: true,
  },
  // ç¬¬ä¸‰æ–¹ç™»å½•页中转
  {
    path: "/logindemo",
    component: () => import("@/views/logindemo"),
    hidden: true,
  },
  {
    path: "/register",
    component: () => import("@/views/register"),
src/store/modules/user.js
@@ -1,4 +1,4 @@
import { login, logout, getInfo, LoginBySSO } from "@/api/login";
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
import { isHttp, isEmpty } from "@/utils/validate";
import defAva from "@/assets/images/profile.jpg";
@@ -68,23 +68,6 @@
            reject(error);
          });
      });
    },
    // å•点登录
    LoginBySSO({ commit }, accessToken) {
      return new Promise((resolve, reject) => {
        LoginBySSO(accessToken)
          .then((res) => {
            setToken(res.token);
            commit("SET_TOKEN", res.token);
            Vue.prototype.uploadHeader = {
              Authorization: "Bearer " + res.token,
            };
            resolve();
          })
          .catch((error) => {
            reject(error);
          });
      })
    },
    // èŽ·å–ç”¨æˆ·ä¿¡æ¯
    GetInfo({ commit, state }) {
src/utils/date.js
@@ -58,7 +58,7 @@
 * @param date
 * @returns {string}
 */
export function getYearAndMonthAndDaysZTZB(date = new Date()) {
export function getPayrollMonthDate(date = new Date()) {
  let year = date.getFullYear();
  let month = date.getMonth();
  let days = date.getDate();
src/views/CNAS/process/demand/index.vue
@@ -115,7 +115,7 @@
            </tr>
            <tr>
              <td>
                <p>记录编号: ZTT/QR-16-04-a</p>
                <p>记录编号:</p>
              </td>
              <td>
                <p>归档部门:综合室</p>
src/views/CNAS/process/method/standardMethod/index.vue
@@ -191,9 +191,6 @@
      addRules: {
        code: [{ required: true, message: "请输入标准编号", trigger: "blur" }],
        name: [{ required: true, message: "请输入标准描述", trigger: "blur" }],
        nameEn: [
          { required: true, message: "请输入标准描述EN", trigger: "blur" },
        ],
        isProduct: [
          { required: true, message: "请选择是否产品标准", trigger: "change" },
        ],
src/views/CNAS/resourceDemand/device/component/files.vue
@@ -426,7 +426,7 @@
          <div class="device-footer">
            <div>
              <vueQr class="qr-code"
                :text="'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' + Mdata.managementNumber + '&type=device'"
                :text="javaApi + '/qr/qrScan?code=' + Mdata.managementNumber + '&type=device'"
                :size="200" :margin="10"></vueQr>
            </div>
            <div class="device-number">
@@ -491,9 +491,6 @@
      rules1: {
        deviceName: [
          { required: true, message: '请输入仪器名称', trigger: 'blur' },
        ],
        enDeviceName: [
          { required: true, message: '请输入仪器名称EN', trigger: 'blur' },
        ],
        specificationModel: [
          { required: true, message: '请输入规格型号', trigger: 'blur' },
src/views/CNAS/resourceDemand/device/component/management.vue
@@ -59,7 +59,7 @@
                            <el-form-item label="仪器名称:" required prop="deviceName">
                                <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
                            </el-form-item>
                            <el-form-item label="仪器名称EN:" required>
                            <el-form-item label="仪器名称EN:">
                                <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
                            </el-form-item>
                            <el-form-item label="规格型号:" required>
@@ -216,7 +216,7 @@
                            <el-form-item label="仪器名称:" required>
                                <el-input v-model="formData2.deviceName" size="small"></el-input>
                            </el-form-item>
                            <el-form-item label="仪器名称EN:" required>
                            <el-form-item label="仪器名称EN:">
                                <el-input v-model="formData2.enDeviceName" size="small"></el-input>
                            </el-form-item>
                            <el-form-item label="规格型号:" required>
@@ -781,10 +781,6 @@
                this.$message.error('未输入仪器名称')
                return
            }
            if (!this.formData.enDeviceName) {
                this.$message.error('未输入仪器名称EN')
                return
            }
            if (!this.formData.specificationModel) {
                this.$message.error('未输入规格型号')
                return
@@ -836,10 +832,6 @@
        submitForm2() {
            if (!this.formData2.deviceName) {
                this.$message.error('未输入仪器名称')
                return
            }
            if (!this.formData2.enDeviceName) {
                this.$message.error('未输入仪器名称EN')
                return
            }
            if (!this.formData2.specificationModel) {
src/views/business/productOrder/components/addOrder.vue
@@ -695,9 +695,6 @@
        production: [
          { required: true, message: '请填写生产单位', trigger: 'blur' }
        ],
        productionEn: [
          { required: true, message: '请填写生产单位EN', trigger: 'blur' }
        ],
      },
      sample: {
        sampleCode: null,
src/views/business/productOrder/components/addView.vue
@@ -689,9 +689,6 @@
        production: [
          { required: true, message: '请填写生产单位', trigger: 'blur' }
        ],
        productionEn: [
          { required: true, message: '请填写生产单位EN', trigger: 'blur' }
        ],
      },
      sample: {
        sampleCode: null,
src/views/business/unpass/components/OAProcess.vue
ÎļþÒÑɾ³ý
src/views/business/unpass/index-manage.vue
@@ -28,52 +28,33 @@
                  :page="page" :tableLoading="tableLoading"></lims-table>
    </div>
    <el-dialog
      title="提交"
      :show-close="false"
      :close-on-press-escape="false"
      :close-on-click-modal="false"
      :visible.sync="dialogVisible"
      width="30%">
      <span>是否确认提交OA?</span>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitOA" :loading="submitOALoading">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="删除"
      :show-close="false"
      :close-on-press-escape="false"
      :close-on-click-modal="false"
      :visible.sync="deleteVisible"
      width="30%">
      <span>是否确认<span style="color: #FF4902">删除</span>OA?</span>
      <span>是否确认<span style="color: #FF4902">删除</span>该记录?</span>
      <span slot="footer" class="dialog-footer">
        <el-button @click="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="cancelOA" :loading="cancelOALoading">ç¡® å®š</el-button>
        <el-button type="primary" @click="deleteRecord" :loading="deleteLoading">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <UnPassDialog ref="unPassDialog" v-if="unPassDialog"
                  :orderId="orderId"
                  @resetForm="resetForm1"
                  :unPassDialog="unPassDialog"></UnPassDialog>
    <OAProcess ref="OAProcess"
               :OAProcess="OAProcess"
               @closeOAProcess="closeOAProcess"
               v-if="OAProcess"></OAProcess>
  </div>
</template>
<script>
import UnPassDialog from "./components/unPassDialog.vue";
import OAProcess from "./components/OAProcess.vue";
import limsTable from "@/components/Table/lims-table.vue";
import {deleteUnqualifiedHandler, page, pushOA} from "@/api/business/unqualifiedHandler";
import {deleteUnqualifiedHandler, page} from "@/api/business/unqualifiedHandler";
export default {
  components: {
    limsTable,
    OAProcess,
    UnPassDialog,
  },
  data() {
@@ -87,34 +68,6 @@
      tableLoading: false,
      column: [
        { label: '编号', prop: 'no', width: "160px", },
        // {
        //   label: "OA审核状态",
        //   prop: "oaState",
        //   width: "100px",
        //   dataType: "tag",
        //   formatData: (params) => {
        //     if (params == 1) {
        //       return "待审核";
        //     } else if(params == 2) {
        //       return "审核中";
        //     }  else if(params == 3) {
        //       return "通过";
        //     } else {
        //       return "驳回";
        //     }
        //   },
        //   formatType: (params) => {
        //     if (params == 1) {
        //       return "warning";
        //     } else if(params == 2) {
        //       return "info";
        //     }  else if(params == 3) {
        //       return "success";
        //     } else {
        //       return "danger";
        //     }
        //   },
        // },
        { label: '订单号', prop: 'orderNo' },
        {
          label: "零件号",
@@ -190,36 +143,10 @@
          width: '180px',
          operation: [
            {
              name: '提交OA',
              type: 'text',
              clickFun: (row) => {
                this.openOA(row);
              },
              disabled: (row, index) => {
                return row.requestId !== null  // æœ‰requestId说明已经提交过OA,不可再次提交
              },
              showHide: (row) => {
                return this.checkPermi(["unpass:add"]);
              },
            },
            {
              name: '查看OA流程',
              type: 'text',
              clickFun: (row) => {
                this.OAView(row);
              },
              showHide: (row) => {
                return this.checkPermi(["unpass:view"]);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.deleteOA(row);
              },
              disabled: (row, index) => {
                return row.requestId !== null  // æœ‰requestId说明已经提交过OA,不可再次提交
                this.openDelete(row);
              },
              showHide: (row) => {
                return this.checkPermi(["unpass:delete"]);
@@ -234,13 +161,10 @@
        current: 1
      },
      statusList: [],
      dialogVisible: false, // ç¡®è®¤æäº¤OA弹框
      unPassDialog: false, // ä¸åˆæ ¼å¤„理弹框
      orderId: '',
      OAProcess: false, // OA流程弹框
      submitOALoading: false, // OA流程弹框提交按钮loading
      deleteVisible: false, // OA流程删除弹框
      cancelOALoading: false, // OA流程删除弹框提交按钮loading
      deleteVisible: false, // åˆ é™¤ç¡®è®¤å¼¹æ¡†
      deleteLoading: false, // åˆ é™¤æŒ‰é’®loading
    };
  },
  mounted() {
@@ -279,58 +203,27 @@
      this.$refs.unPassDialog.$refs['unPassForm'].resetFields();
      this.unPassDialog = false
    },
    // æ‰“开删除OA确认弹框
    deleteOA (row) {
    // æ‰“开删除确认弹框
    openDelete (row) {
      this.handlerId = row.handlerId
      this.deleteVisible = true
    },
    // æäº¤åˆ é™¤ç”³è¯·
    cancelOA () {
    // åˆ é™¤è®°å½•
    deleteRecord () {
      this.de = true
      deleteUnqualifiedHandler({id: this.handlerId,}).then(res => {
        this.cancelOALoading = false
        this.deleteLoading = false
        if (res.code === 200) {
          this.deleteVisible = false
          this.$message.success('删除成功')
          this.refreshTable('page')
        }
      }).catch(error => {
        this.cancelOALoading = false
        this.deleteLoading = false
        console.error(error);
      });
    },
    // æŸ¥çœ‹æäº¤OA的数据
    openOA (row) {
      this.handlerId = row.handlerId
      this.dialogVisible = true
    },
    // æŸ¥çœ‹OA流程
    OAView (row) {
      this.OAProcess = true
      this.$nextTick(() => {
        this.$refs.OAProcess.getInfo(row.handlerId)
      })
    },
    // å…³é—­æŸ¥çœ‹OA流程的弹框
    closeOAProcess () {
      this.OAProcess = false
    },
    //提交OA
    submitOA(row) {
      // æäº¤OA
      this.submitOALoading = true
      pushOA({handlerId: this.handlerId,}).then(res => {
        this.submitOALoading = false
        if (res.code === 200) {
          this.dialogVisible = false
          this.$message.success('提交成功')
          this.refreshTable('page')
        }
      }).catch(error => {
        this.submitOALoading = false
        console.error(error);
      });
    }
  }
};
</script>
src/views/business/unpass/index.vue
@@ -43,26 +43,6 @@
      tableLoading: false,
      column: [
        { label: '编号', prop: 'no' },
        // {
        //   label: "OA审核状态",
        //   prop: "oaState",
        //   width: "100px",
        //   dataType: "tag",
        //   formatData: (params) => {
        //     if (params == 0) {
        //       return "否";
        //     } else {
        //       return "是";
        //     }
        //   },
        //   formatType: (params) => {
        //     if (params == 0) {
        //       return "danger";
        //     } else {
        //       return "primary";
        //     }
        //   },
        // },
        {
          dataType: 'action',
          fixed: 'right',
src/views/login.vue
@@ -38,7 +38,6 @@
            <router-link class="link-type" :to="'/register'">立即注册</router-link>
          </div>
        </el-form-item>
        <el-button v-if="true" type="primary" plain @click="goLogin">集团集成登录</el-button>
      </el-form>
    </div>
    <!--  åº•部  -->
@@ -49,7 +48,7 @@
</template>
<script>
import { getCodeImg, getSsoAuthUrl } from "@/api/login";
import { getCodeImg } from "@/api/login";
import { encrypt, decrypt } from '@/utils/jsencrypt'
export default {
@@ -58,7 +57,7 @@
    return {
      codeUrl: "",
      loginForm: {
        username: "ZT-",
        username: "",
        password: "",
        rememberMe: false,
        code: "",
@@ -94,11 +93,6 @@
    // this.getCookie();
  },
  methods: {
    async goLogin() {
      await getSsoAuthUrl().then(res => {
        window.location.href = res.data
      })
    },
    getCode() {
      getCodeImg().then(res => {
        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
src/views/logindemo.vue
ÎļþÒÑɾ³ý
src/views/performance/manHour/workTimeStatistics.vue
@@ -48,7 +48,7 @@
</template>
<script>
import { getYearAndMonthAndDays, getYearAndMonthAndDaysZTZB } from "@/utils/date";
import { getYearAndMonthAndDays, getPayrollMonthDate } from "@/utils/date";
import limsTable from "@/components/Table/lims-table.vue";
import { selectAuxiliaryAllByMonth } from "@/api/performance/manHour";
export default {
@@ -58,7 +58,7 @@
  data() {
    return {
      queryParams: {
        month: getYearAndMonthAndDaysZTZB().slice(0, 7),
        month: getPayrollMonthDate().slice(0, 7),
        name: "",
        departLims: "",
      },
@@ -115,7 +115,7 @@
    },
    refresh() {
      this.queryParams = {
        month: getYearAndMonthAndDaysZTZB().slice(0, 7),
        month: getPayrollMonthDate().slice(0, 7),
        name: "",
        departLims: "",
      };
src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -372,8 +372,7 @@
      },
      objectId: '',
      productRules: {
        name: [{ required: true, message: '请填写产品名称', trigger: 'blur' }],
        nameEn: [{ required: true, message: '请填写产品名称EN', trigger: 'blur' }]
        name: [{ required: true, message: '请填写产品名称', trigger: 'blur' }]
      },
      uploadDia: false,
      fileList: [],
src/views/system/customer/index.vue
@@ -119,9 +119,7 @@
      },
      userRules: {
        company: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
        companyEn: [{ required: true, message: '请输入客户名称EN', trigger: 'blur' }],
        address: [{ required: true, message: '请输入单位地址', trigger: 'blur' }],
        addressEn: [{ required: true, message: '请输入单位地址EN', trigger: 'blur' }],
        num: [{ required: true, message: '请输入加急额度', trigger: 'blur' }],
        code2: [{ required: true, message: '请输入客户编号', trigger: 'blur' }],
      },
src/views/system/user/index.vue
@@ -40,8 +40,6 @@
              </el-form>
            </div>
            <div class="options_button">
              <el-button type="primary" size="mini" @click="openthirdParty"
                v-hasPermi="['system:user:add']">获取三方人员</el-button>
              <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
                v-hasPermi="['system:user:add']">新增用户</el-button>
            </div>
@@ -206,49 +204,6 @@
      </div>
    </el-dialog>
    <!-- èŽ·å–äººäº‹ç³»ç»Ÿäººå‘˜ä¿¡æ¯ -->
    <el-dialog title="获取人事系统人员信息" :visible.sync="addthirdParty" width="70%">
      <div class="body" v-loading="thirdPartyLoading">
        <el-row>
          <el-col :span="8" style="height: 70vh;overflow: hidden;" v-if="companiesList.length != 1">
            <el-input v-model="search2" placeholder="输入关键字搜索" clearable size="small" @clear="searchFilter2"
              @keyup.enter.native="searchFilter2" prefix-icon="el-icon-search" style="margin-bottom: 20px;width: 90%" />
            <el-tree :data="datathirdParty" node-key="companyId" :props="defaultProps1" @node-click="nodeClick2"
              style="height: calc(100% - 42px);" @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2"
              highlight-current>
            </el-tree>
          </el-col>
          <el-col :span="companiesList.length == 1 ? 24 : 16" style="height: 70vh;padding-left: 8px;">
            <div style="display: flex;align-items: center;margin-bottom: 10px">
              <span style="width: 140px">员工号/员工姓名:</span>
              <el-input size="small" placeholder="请输入员工号/员工姓名" @clear="searchPerson" clearable v-model="userSearch2"
                style="width: 50%" @keyup.enter.native="searchPerson()"></el-input>
            </div>
            <el-table height="67vh" stripe :data="personList" v-loading="personLoad" ref="personTable"
                      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
              @selection-change="handleSelectionChange">
              <el-table-column type="selection" width="50">
              </el-table-column>
              <el-table-column prop="employeeID" 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 prop="isLive" label="已存在" width="80" align="center">
                <template slot-scope="scope">
                  <el-tag type="success" effect="dark" v-if="scope.row.isLive === 1">√</el-tag>
                </template>
              </el-table-column>
            </el-table>
          </el-col>
        </el-row>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="addthirdParty = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="addUser2" :loading="addLoad">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <el-dialog title="架构新增" :visible.sync="addDia" width="400px">
      <div class="body">
        <el-row style="line-height: 50px;">
@@ -278,7 +233,7 @@
  resetUserPwd,
  changeUserStatus,
  deptTreeSelect,
  selectCompaniesList, selectSimpleList, addPersonUser, uploadFile, selectRoleList, selectCustomEnum, addDepartment
  uploadFile, selectRoleList, selectCustomEnum, addDepartment
} from "@/api/system/user";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
@@ -331,10 +286,6 @@
        children: "children",
        label: "label"
      },
      defaultProps1: {
        children: "children",
        label: "companyName"
      },
      // ç”¨æˆ·å¯¼å…¥å‚æ•°
      upload: {
        // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚(用户导入)
@@ -378,9 +329,6 @@
        userName: [
          { required: true, message: "请填写账号", trigger: "blur" }
        ],
        // nameEn: [
        //   { required: true, message: "请输入姓名EN", trigger: "blur" }
        // ],
        status: [
          { required: true, message: "请选择状态", trigger: "change" }
        ],
@@ -425,19 +373,7 @@
          }
        ]
      },
      // èŽ·å–ä¸‰æ–¹äººå‘˜å¼¹æ¡†
      addthirdParty: false,
      thirdPartyLoading: false,
      companiesList: [],
      search2: '',
      datathirdParty: [],
      currentCompaniesList: [],
      personList: [],
      personListCopy: [],
      personLoad: false,
      userSearch2: '',
      addLoad: false,
      //
      addDia: false, // æ·»åŠ æž¶æž„å¼¹æ¡†
      addOb: {
        fatherId: 10001,
@@ -590,113 +526,6 @@
        default:
          break;
      }
    },
    // èŽ·å–ä¸‰æ–¹äººå‘˜
    async openthirdParty() {
      try {
        this.addthirdParty = true;
        this.thirdPartyLoading = true;
        const companiesResponse = await selectCompaniesList();
        this.companiesList = this.HaveJson(companiesResponse.data);
        if (this.companiesList.length === 1) {
          const personResponse = await selectSimpleList({ companyId: this.companiesList[0].companyId });
          this.personListCopy = JSON.parse(JSON.stringify(personResponse.data));
          this.personList = personResponse.data;
          this.$refs.personTable.doLayout();
        }
        this.datathirdParty = this.tranListToTreeData(this.companiesList, "ROOT");
        console.log(' this.datathirdParty---',  this.datathirdParty)
      } catch (error) {
        console.error("Error fetching third party data:", error);
      } finally {
        this.thirdPartyLoading = false;
      }
    },
    tranListToTreeData(list, rootValue) {
      return list.reduce((arr, item) => {
        if (item.parentCompanyId === rootValue) {
          const children = this.tranListToTreeData(list, item.companyId);
          if (children.length) {
            item.children = children;
          }
          arr.push(item);
        }
        return arr;
      }, []);
    },
    searchPerson() {
      let arr = JSON.parse(JSON.stringify(this.personListCopy))
      this.personList = arr.filter(a => {
        if (a.employeeID.includes(this.userSearch2) || a.nickName.includes(this.userSearch2)) {
          return true
        }
      })
    },
    searchFilter2() {
      this.$refs.tree2.filter(this.search2)
    },
    nodeClick2(ob, node, el) {
      this.getNodeParent(node)
      if (ob.companyId !== 'SC21') {
        this.personLoad = true
        selectSimpleList({ companyId: ob.companyId }).then(res => {
          this.personListCopy = JSON.parse(JSON.stringify(res.data))
          this.personList = res.data
          this.personLoad = false
          this.$refs.personTable.doLayout()
        })
      }
    },
    getNodeParent(val) {
      this.currentCompaniesList[val.level - 1] = val.data.companyId
      if (val.parent != null) {
        this.getNodeParent(val.parent)
      }
    },
    nodeOpen0(data, node, el) {
      // this.currentCompaniesList[node.level - nodeOpen01] = data.id
    },
    filterNode2(value, data) {
      if (!value) return true;
      return data['companyName'].indexOf(value) !== -1;
    },
    addUser2() {
      if (this.multipleSelection.length === 0) {
        return this.$message.error('请选择人员')
      }
      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)
        arr.push(obj)
      })
      this.addLoad = true
      addPersonUser({
        company: arr,
        person: this.multipleSelection,
        // roleId: this.componentData.entity.roleId
      }).then(res => {
        this.$message.success('操作成功')
        this.multipleSelection = []
        this.$refs.personTable.clearSelection()
        this.addLoad = false
        this.addthirdParty = false
        this.userSearch2 = ''
        this.getList()
      }).catch(e => {
        this.addLoad = false
      })
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
src/views/thirdpartylogin.vue
ÎļþÒÑɾ³ý