已删除3个文件
已修改43个文件
924 ■■■■■ 文件已修改
.env.development 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/rawMaterialOrder.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/unpass.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/unqualifiedHandler.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/process/ensureResults/qualitySupervise.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/resourceDemand/device.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/login.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/standard/standardLibrary.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/user.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/UpPdfStamp/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/Logo.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/date.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/process/demand/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | 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/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management-dia.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/systemManagement/internalAuditManagement/components/yearPlanDia.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/components/InspectionWord.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspectionOrder.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/materialOrder/customsInspectionView.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/addOrder.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/addView.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/index.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/sample/components/detail.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/components/OAProcess.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/components/unPassDialog.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/index-manage.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/unpass/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/logindemo.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/performance/manHour/workTimeStatistics.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capability/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/customer/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/thirdpartylogin.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/workers/InspectionWorker.worker.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -1,5 +1,5 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = ä¸­å¤©è£…备LIMS
VUE_APP_TITLE = LIMS
# å¼€å‘环境配置
ENV = 'development'
.env.production
@@ -1,5 +1,5 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = ä¸­å¤©è£…备LIMS
VUE_APP_TITLE = LIMS
# ç”Ÿäº§çŽ¯å¢ƒé…ç½®
ENV = 'production'
.env.staging
@@ -1,5 +1,5 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = ä¸­å¤©è£…备LIMS
VUE_APP_TITLE = LIMS
BABEL_ENV = staging
src/api/business/rawMaterialOrder.js
@@ -129,6 +129,9 @@
}
// æ ¹æ®æ ‡å‡†æ ‘进行标准查询
export function selectsStandardMethodByFLSSM(query) {
  if (!query || !query.tree || !query.tree.trim()) {
    return Promise.resolve({ code: 200, data: { standardMethodList: [] } })
  }
  return request({
    url: '/standardTree/selectsStandardMethodByFLSSM',
    method: 'get',
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/cnas/process/ensureResults/qualitySupervise.js
@@ -133,7 +133,7 @@
    params: query,
  })
}
// (装备流程)新增监督记录不符合控制信息
// æ–°å¢žç›‘督记录不符合控制信息
export function addEquipSuperviseDetailAccording(query) {
  return request({
    url: '/qualitySupervise/addEquipSuperviseDetailAccording',
@@ -141,7 +141,7 @@
    data: query,
  })
}
// (装备流程)批准监督记录不符合控制信息
// æ‰¹å‡†ç›‘督记录不符合控制信息
export function approverEquipSuperviseDetailAccording(query) {
  return request({
    url: '/qualitySupervise/approverEquipSuperviseDetailAccording',
@@ -157,7 +157,7 @@
    params: query,
  })
}
// (装备流程)新增监督纠正处理
// æ–°å¢žç›‘督纠正处理
export function addEquipSuperviseDetailCorrect(query) {
  return request({
    url: '/qualitySupervise/addEquipSuperviseDetailCorrect',
@@ -165,7 +165,7 @@
    data: query,
  })
}
// (装备流程)批准监督纠正处理
// æ‰¹å‡†ç›‘督纠正处理
export function approveEquipSuperviseDetailCorrect(query) {
  return request({
    url: '/qualitySupervise/approveEquipSuperviseDetailCorrect',
@@ -173,7 +173,7 @@
    data: query,
  })
}
// (装备流程)批准监督纠正处理
// æ‰¹å‡†ç›‘督纠正处理
export function getThisYearTrainingDetailed(query) {
  return request({
    url: '/personTraining/getThisYearTrainingDetailed',
src/api/cnas/resourceDemand/device.js
@@ -736,7 +736,7 @@
  });
}
//设备验收(装备)导出
//设备验收导出
export function exportDeviceAcceptance(query) {
  return request({
    url: "/deviceAcceptance/exportDeviceAcceptance",
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({
@@ -78,4 +57,4 @@
    method: 'get',
    timeout: 20000
  })
}
}
src/api/standard/standardLibrary.js
@@ -76,6 +76,9 @@
// æ ¹æ®æ ‡å‡†æ ‘进行标准查询
export function selectsStandardMethodByFLSSM(query) {
  if (!query || !query.tree || !query.tree.trim()) {
    return Promise.resolve({ code: 200, data: { standardMethodList: [] } });
  }
  return request({
    url: "/standardTree/selectsStandardMethodByFLSSM",
    method: "get",
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/components/UpPdfStamp/index.vue
@@ -24,7 +24,7 @@
      stampWidth: 120, // ç›–章宽度
      stampHeight: 80, // ç›–章高度
      stampsName: '',
      stampsList: ['主任', '质量负责人', '技术负责人', '综合室', '通信', '电力', '装备', '储能', '射频'],
      stampsList: ['主任', '质量负责人', '技术负责人'],
      fileName: '文件名'
    };
  },
src/layout/components/Navbar.vue
@@ -2,11 +2,8 @@
  <div class="navbar">
    <!--    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
    <!--    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>-->
    <div class="logo">
      <img src="@/assets/logo/ZTTlogo.png" />
    </div>
    <div class="center-menu">
      <span class="label">装备LIMS实验室管理系统</span>
      <span class="label">LIMS实验室管理系统</span>
    </div>
    <div class="right-menu">
      <div class="avatar-wrapper">
src/layout/components/Sidebar/Logo.vue
@@ -14,7 +14,6 @@
</template>
<script>
import logoImg from '@/assets/logo/ZTTlogo.png'
import variables from '@/assets/styles/variables.scss'
export default {
@@ -35,8 +34,7 @@
  },
  data() {
    return {
      title: process.env.VUE_APP_TITLE,
      logo: logoImg
      title: process.env.VUE_APP_TITLE
    }
  }
}
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();
@@ -78,4 +78,4 @@
  days = days < 10 ? '0' + days : days;
  return (year + month + days);
}
}
src/views/CNAS/process/demand/index.vue
@@ -105,7 +105,6 @@
          <table border="1" cellpadding="10" class="tables heads" style="border: 1px dashed black;width: 100%">
            <tr>
              <td rowspan="2">
                <img alt="" src="@/assets/logo/ZTTlogo.png" style="width: 80%;">
              </td>
              <td>
                <p>记录名称:检验委托单</p>
@@ -116,7 +115,7 @@
            </tr>
            <tr>
              <td>
                <p>记录编号: ZTT/QR-16-04-a</p>
                <p>记录编号:</p>
              </td>
              <td>
                <p>归档部门:综合室</p>
@@ -368,7 +367,7 @@
                <p>检测机构信息</p>
              </td>
              <td colspan="3">
                <p>江苏中天科技股份有限公司检测中心</p>
                <p>新聚</p>
              </td>
            </tr>
            <tr>
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/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management-dia.vue
@@ -132,7 +132,7 @@
        this.searchInfo(row)
      } else {
        this.form.accompanyingId = this.userId
        this.form.area = '装备电缆试验室'
        this.form.area = '电缆试验室'
        this.form.reason = '参观实验室'
        this.form.accompanyingId = 64
        this.form.approveId = 65
src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue
@@ -178,7 +178,7 @@
      checkLoading: false,
      noCheckLoading: false,
      type: '',
      stampsList: ['主任', '质量负责人', '技术负责人', '综合室', '通信', '电力', '装备', '储能', '射频'],
      stampsList: ['主任', '质量负责人', '技术负责人', '综合室'],
      currentStamp: '主任',
      queryParams: {},
      tableData: [],
src/views/CNAS/systemManagement/internalAuditManagement/components/yearPlanDia.vue
@@ -172,7 +172,7 @@
      ratifyRemark: '',
      examineRemark: '',
      dic1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
      planDetailList: [{ department: '装备电缆实验室' }, { department: '通信产品实验室' }, { department: '电力产品实验室' }, { department: '储能产品实验室' }, { department: '射频线缆实验室' }],
      planDetailList: [{ department: '电缆实验室' }, { department: '通信产品实验室' }, { department: '电力产品实验室' }, { department: '储能产品实验室' }, { department: '射频线缆实验室' }],
    };
  },
  mounted() {
src/views/business/inspectionTask/components/InspectionWord.vue
@@ -63,7 +63,7 @@
                    </template>
                    <template v-else-if="n.v.ps != undefined && n.v.ps.value === '结论'">
                      <el-select
                        v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state == 1 && PROJECT == '装备电缆'"
                        v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state == 1"
                        v-model="n.v.v" class="table_input"
                        @change="m => changeInput(m, `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType')">
                        <el-option :value="1" label="合格"></el-option>
src/views/business/materialOrder/customsInspectionOrder.vue
@@ -498,7 +498,7 @@
        sample: null, // æ ·å“åç§°
        qtyArrived: '', // æ ·å“æ€»æ•°
        testQuantity: '', // æŠ½æ£€æ•°é‡
        company: '中天科技装备电缆有限公司', // å§”托单位
        company: '', // å§”托单位
        companyId: '1233268751', // å§”托单位id
        receiverDate: '', // æŽ¥æ”¶æ—¶é—´
        appointed: '', // çº¦å®šæ—¶é—´
src/views/business/materialOrder/customsInspectionView.vue
@@ -479,7 +479,7 @@
        sample: null, // æ ·å“åç§°
        qtyArrived: '', // æ ·å“æ€»æ•°
        testQuantity: '', // æŠ½æ£€æ•°é‡
        company: '中天科技装备电缆有限公司', // å§”托单位
        company: '', // å§”托单位
        companyId: '1233268751', // å§”托单位id
        receiverDate: '', // æŽ¥æ”¶æ—¶é—´
        appointed: '', // çº¦å®šæ—¶é—´
src/views/business/productOrder/components/addOrder.vue
@@ -463,10 +463,10 @@
            </div>
          </el-col>
          <el-col v-if="distributeData.userId" :span="22" class="search_thing">
            <div class="search_label"><span class="required-span">* </span>试验室:</div>
            <div class="search_label">试验室:</div>
            <div class="search_input">
              <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;">
                <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value">
                <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
@@ -614,8 +614,11 @@
  },
  computed:{
    ...mapGetters(["nickName", 'nameEn', 'userName']),
    newJuLaboratoryList() {
      return (this.dict.type.sys_sub_lab || []).filter(item => item.label === '新聚')
    },
  },
  dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list'],
  dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list', 'sys_sub_lab'],
  data() {
    return {
      active: '',
@@ -691,9 +694,6 @@
        ],
        production: [
          { required: true, message: '请填写生产单位', trigger: 'blur' }
        ],
        productionEn: [
          { required: true, message: '请填写生产单位EN', trigger: 'blur' }
        ],
      },
      sample: {
@@ -1379,6 +1379,7 @@
              this.distributeData.appointed = ress.data
            })
            setTimeout(() => {
              this.distributeData.sonLaboratory = this.newJuLaboratoryList.length > 0 ? this.newJuLaboratoryList[0].value : ''
              this.issuedDialogVisible = true;
            }, 1000)
          })
@@ -1395,10 +1396,6 @@
        }
        if (this.distributeData.userId == null || this.distributeData.userId == '') {
          this.$message.error('指派人员未填写')
          return
        }
        if (this.distributeData.userId&&(this.distributeData.sonLaboratory== null ||this.distributeData.sonLaboratory== '')) {
          this.$message.error('试验室未填写')
          return
        }
        this.upLoad = true;
@@ -1430,8 +1427,8 @@
          this.addObj.code = selects.code
          this.addObj.phone = selects.phone
          this.addObj.companyId = selects.departId
          this.addObj.production = '中天科技装备电缆有限公司'
          this.addObj.productionEn = 'Zhongtian Technology Industrial Wire&Cable System CO.,LTD'
          this.addObj.production = ''
          this.addObj.productionEn = ''
          if(this.active==1){
            this.selectInsOrderTemplate()
          }
@@ -2224,8 +2221,8 @@
        })
      },
      changeUser(){
        if(this.sonLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
        if(this.newJuLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.newJuLaboratoryList[0].value
        }
      },
      addProductList(productList,row,index){
src/views/business/productOrder/components/addView.vue
@@ -459,10 +459,10 @@
            </div>
          </el-col>
          <el-col v-if="distributeData.userId" :span="22" class="search_thing">
            <div class="search_label"><span class="required-span">* </span>试验室:</div>
            <div class="search_label">试验室:</div>
            <div class="search_input">
              <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;">
                <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value">
                <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
@@ -608,8 +608,11 @@
  },
  computed:{
  ...mapGetters(["nickName"]),
    newJuLaboratoryList() {
      return (this.dict.type.sys_sub_lab || []).filter(item => item.label === '新聚')
    },
  },
  dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list'],
  dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list', 'sys_sub_lab'],
  data() {
    return {
      active: '',
@@ -685,9 +688,6 @@
        ],
        production: [
          { required: true, message: '请填写生产单位', trigger: 'blur' }
        ],
        productionEn: [
          { required: true, message: '请填写生产单位EN', trigger: 'blur' }
        ],
      },
      sample: {
@@ -1308,6 +1308,7 @@
              this.distributeData.appointed = ress.data
            })
            setTimeout(() => {
              this.distributeData.sonLaboratory = this.newJuLaboratoryList.length > 0 ? this.newJuLaboratoryList[0].value : ''
              this.issuedDialogVisible = true;
            }, 1000)
          })
@@ -1324,10 +1325,6 @@
        }
        if (this.distributeData.userId == null || this.distributeData.userId == '') {
          this.$message.error('指派人员未填写')
          return
        }
        if (this.distributeData.userId&&(this.distributeData.sonLaboratory== null ||this.distributeData.sonLaboratory== '')) {
          this.$message.error('试验室未填写')
          return
        }
        this.upLoad = true;
@@ -1356,8 +1353,8 @@
          this.addObj.code = selects.code
          this.addObj.phone = selects.phone
          this.addObj.companyId = selects.departId
          this.addObj.production = '中天科技装备电缆有限公司'
          this.addObj.productionEn = 'Zhongtian Technology Industrial Wire&Cable System CO.,LTD'
          this.addObj.production = ''
          this.addObj.productionEn = ''
          if(this.active==1){
            this.selectInsOrderTemplate()
          }
@@ -2150,8 +2147,8 @@
        })
      },
      changeUser(){
        if(this.sonLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
        if(this.newJuLaboratoryList.length>0){
          this.distributeData.sonLaboratory = this.newJuLaboratoryList[0].value
        }
      },
      addProductList(productList,row,index){
src/views/business/productOrder/index.vue
@@ -130,11 +130,11 @@
              </div>
            </el-col>
            <el-col class="search_thing" style="width: 95%;">
              <div class="search_label"><span class="required-span">* </span>试验室:</div>
              <div class="search_label">试验室:</div>
              <div class="search_input">
                <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="(item, i) in sonLaboratoryList" :key="i + 'oooo'" :label="item.label"
                  <el-option v-for="(item, i) in newJuLaboratoryList" :key="i + 'oooo'" :label="item.label"
                    :value="item.value">
                  </el-option>
                </el-select>
@@ -335,7 +335,7 @@
  getRevocationInsProductList,
  selectOrderManDay,
  updateInspected,
  updateOrderEntrustCode, updateSampleModel, updateStatus, upInsOrder, upPlanUser2
  updateOrderEntrustCode, updateSampleModel, updateStatus, upInsOrder
} from "@/api/business/productOrder";
import { selectUserCondition } from "@/api/performance/class";
import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder";
@@ -765,7 +765,6 @@
      ],
      qrData: [],
      multipleSelection: [],
      sonLaboratoryList: [],
      printDialog: false,
      addInspectionDia: false,
      dialogVisible: false,
@@ -783,8 +782,12 @@
      }
    }
  },
  dicts: ['sys_sub_lab'],
  computed: {
    ...mapGetters(["nickName"]),
    newJuLaboratoryList() {
      return (this.dict.type.sys_sub_lab || []).filter(item => item.label === '新聚')
    },
  },
  mounted() {
    if (this.checkPermi(['get:raw:await'])) {
@@ -1202,6 +1205,7 @@
    // ä¸‹å‘
    handleIssued(row) {
      this.issuedDialogVisible = true;
      this.distributeData.sonLaboratory = this.newJuLaboratoryList.length > 0 ? this.newJuLaboratoryList[0].value : ''
      selectOrderManDay({
        id: row.id
      }).then(res => {
@@ -1209,26 +1213,6 @@
        this.distributeData.sampleId = row.sampleId
        this.distributeData.appointed = res.data
        this.distributeData.type = row.type
      })
      upPlanUser2({
        orderId: row.id,
      }).then(res => {
        this.sonLaboratoryList = [
          {
            value: '新聚',
            label: '新聚'
          }
        ]
        this.distributeData.sonLaboratory = '新聚'
        // if (res.code === 200 && res.data.length > 0) {
        //   this.sonLaboratoryList = [];
        //   res.data.forEach(m => {
        //     this.sonLaboratoryList.push({
        //       value: m,
        //       label: m
        //     })
        //   })
        // }
      })
    },
    submitForm2() {
@@ -1239,10 +1223,6 @@
      //
      if (this.distributeData.userId == null || this.distributeData.userId == '') {
        this.$message.error('指派人员未填写')
        return
      }
      if (this.distributeData.userId && (this.distributeData.sonLaboratory == null || this.distributeData.sonLaboratory == '')) {
        this.$message.error('试验室未填写')
        return
      }
      this.upLoad = true;
@@ -1344,8 +1324,8 @@
      this.InspectionKey++
    },
    changeUser() {
      if (this.sonLaboratoryList.length > 0) {
        this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
      if (this.newJuLaboratoryList.length > 0) {
        this.distributeData.sonLaboratory = this.newJuLaboratoryList[0].value
      }
    },
    handleDelete(row) {
src/views/business/sample/components/detail.vue
@@ -67,7 +67,7 @@
                </el-table-column>
                <el-table-column prop="inspectionItem" label="检验项" min-width="100"
                    show-overflow-tooltip></el-table-column>
                <el-table-column prop="inspectionItemSubclass" label="检验项分类" min-width="100" show-overflow-tooltip v-if="PROJECT=='装备电缆'"></el-table-column>
                <el-table-column prop="inspectionItemSubclass" label="检验项分类" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="laboratory" label="实验室" min-min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="unit" label="单位" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="equipValue" label="设备" min-width="100" show-overflow-tooltip>
src/views/business/unpass/components/OAProcess.vue
ÎļþÒÑɾ³ý
src/views/business/unpass/components/unPassDialog.vue
@@ -149,7 +149,7 @@
          orderId: this.orderId
        }).then(res => {
          if (res.code === 200) {
            this.unPassForm.headline = `No.0005-中天装备电线-外购品不合格反馈评审及纠正预防流程(正式版)-${this.nickName}-${new Date().toISOString().substring(0, 10)}` // æ ‡é¢˜
            this.unPassForm.headline = `No.0005-电线-外购品不合格反馈评审及纠正预防流程(正式版)-${this.nickName}-${new Date().toISOString().substring(0, 10)}` // æ ‡é¢˜
            this.unPassForm.feedbackTime = new Date().toISOString().substring(0, 10) // æŠ¥æ£€æ—¶é—´
            this.unPassForm.feedbackUser = this.nickName // åé¦ˆäºº
            this.unPassForm.insOrderId = res.data.insOrder.id // è®¢å•id
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
@@ -5,7 +5,7 @@
    </div>
    <div class="rightForm">
      <div class="title_big">欢迎您登录!</div>
      <div class="title_small">装备LIMS实验室管理系统</div>
      <div class="title_small">新聚实验室管理系统</div>
      <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
        <el-form-item prop="username">
          <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
@@ -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
@@ -207,7 +207,7 @@
              return null
            }
            // if (params == 1) {
            //   return '装备电缆试验室'
            //   return '电缆试验室'
            // } else if (params == 5) {
            //   return '通信产品实验室'
            // } else if (params == 6) {
@@ -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
ÎļþÒÑɾ³ý
src/workers/InspectionWorker.worker.js
@@ -10,7 +10,7 @@
let comparisonList = [];
// å½“前样品信息
let currentSample = {};
// å½“前项目:检测中心、装备电缆
// å½“前项目:检测中心
let PROJECT = "";
// å¥—管
let bushing = "";
@@ -514,7 +514,7 @@
              tell.length > 0 &&
              typeof tell[0] == "string" &&
              tell[0].includes("/") &&
              tell[0] !== "/"; // è£…备电缆--判断要求值是否为分数
              tell[0] !== "/"; // åˆ¤æ–­è¦æ±‚值是否为分数
            const inspectionItemClass = currentSample.insProduct.find(
              (m) => m.id == item.i
            ).inspectionItemClass; // æ£€éªŒé¡¹åˆ†ç±»
vue.config.js
@@ -36,7 +36,8 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://127.0.0.1:8001/lims`,
        // target: `http://36.213.90.123:9015/lims`,
        target: `http://127.0.0.1:9509/lims`,
        changeOrigin: true,
        pathRewrite: {
          ["^" + process.env.VUE_APP_BASE_API]: "",