晏有为
2024-05-23 22b1e8c61b4cf049f1c980aea459f3b90620a1b0
Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before
已修改21个文件
1651 ■■■■ 文件已修改
index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js 302 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/Inspection.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tool/onlyoffice.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tool/value-table.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a6-device-management.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a6-personnel-detail.vue 739 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a6-personnel-overview.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a7-standard-method.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-inspect-order-plan.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-inspection-order.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-report-preparation.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b2-standard.vue 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b3-classes.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b4-daily-business-statistics.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b4-inspection-item-statistics.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b4-sample-defects.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/person-manage.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/menu.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
index.html
@@ -21,7 +21,7 @@
    </head>
    <body>
        <div id="app"></div>
        <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script>
        <!-- <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script> -->
        <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/plugins/js/plugin.js"></script>
        <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/luckysheet.umd.js"></script>
    </body>
src/App.vue
@@ -312,4 +312,8 @@
    height: 300px;
  }
  .el-table-filter__list-item{
    font-size: 12px;
    line-height: 32px;
  }
</style>
src/assets/api/controller.js
@@ -1,19 +1,19 @@
export default function(Vue) {
    //添加全局API
    Vue.prototype.$api = {
        login,
        user,
        dataReporting,
        enums,
        capacityScope,
        laboratoryScope,
        deviceScope,
        systemLog,
        standardTree,
        standardMethod,
        StandardTemplate,
        insOrder,
        sampleOrder,
  //添加全局API
  Vue.prototype.$api = {
    login,
    user,
    dataReporting,
    enums,
    capacityScope,
    laboratoryScope,
    deviceScope,
    systemLog,
    standardTree,
    standardMethod,
    StandardTemplate,
    insOrder,
    sampleOrder,
    insOrderPlan,
    insReport,
    warehouse,
@@ -24,88 +24,91 @@
    informationNotification,
    performanceShift,
    auxiliaryWorkingHours,
      unPass,
    unPass,
    companies
    }
  }
}
const login = {
    enter: "/user/enter", //登录
  enter: "/user/enter", //登录
}
const user = {
    selectUserList: "/user/selectUserList", //获取用户列表
    selectRoleList: "/role/selectRoleList", //获取角色列表
    updateUser: "/user/updateUser", //修改用户信息
    addUser: "/user/addUser", //添加用户信息
    selectRoleLists: "/role/selectRoleLists", //获取角色列表
    delRole: "/role/delRole", //删除角色信息
    addRole: "/role/addRole", //添加角色信息
    selectMenuList: "/role/selectMenuList", //获取菜单
    selectPowerByRoleId: "/role/selectPowerByRoleId", //通过角色id查询权限列表
    upRole: "/role/upRole", //修改角色
    getUserMenu: "/user/getUserMenu", //获取用户枚举
    selectCustomPageList: "/user/selectCustomPageList", //获取客户列表
    delCustomById: "/user/delCustomById", //删除客户信息
    addCustom: "/user/addCustom", //新增客户信息
    getUserNow: "/user/getUserNow", //获取当前登录的客户信息
    getUserInfo: "/user/getUserInfo", //获取当前登录的用户信息
  selectUserList: "/user/selectUserList", //获取用户列表
  selectPersonnelOverview: "/user/selectPersonnelOverview", // 资源要求-人员总览
  selectRoleList: "/role/selectRoleList", //获取角色列表
  updateUser: "/user/updateUser", //修改用户信息
  addUser: "/user/addUser", //添加用户信息
  selectRoleLists: "/role/selectRoleLists", //获取角色列表
  delRole: "/role/delRole", //删除角色信息
  addRole: "/role/addRole", //添加角色信息
  selectMenuList: "/role/selectMenuList", //获取菜单
  selectPowerByRoleId: "/role/selectPowerByRoleId", //通过角色id查询权限列表
  upRole: "/role/upRole", //修改角色
  getUserMenu: "/user/getUserMenu", //获取用户枚举
  selectCustomPageList: "/user/selectCustomPageList", //获取客户列表
  delCustomById: "/user/delCustomById", //删除客户信息
  addCustom: "/user/addCustom", //新增客户信息
  getUserNow: "/user/getUserNow", //获取当前登录的客户信息
  getUserInfo: "/user/getUserInfo", //获取当前登录的用户信息
  upUserPassword: "/user/upUserPassword", //修改用户密码
  upUserDepardLimsId: "/user/upUserDepardLimsId", //修改人员明细所在组织架构
  delUserDepardLimsId: "/user/delUserDepardLimsId", //删除人员明细所在组织架构
}
const dataReporting = {
    selectDataReportingList: "/dataReporting/selectDataReportingList", //获取数据上报列表
    upDataReporting: "/dataReporting/upDataReporting", //修改数据上报
    selectProductCountDtoPageList: "/dataReporting/selectProductCountDtoPageList", //获取项目汇总列表
    selectRegistrantCountDtoPageList: "/dataReporting/selectRegistrantCountDtoPageList", //获取登记人汇总列表
    addDataReporting: "/dataReporting/addDataReporting", //添加数据上报
    delDataReporting: "/dataReporting/delDataReporting", //删除数据上报
    downDataReportingFile: "/dataReporting/downDataReportingFile", //导出数据上报
    downProductCountFile: "/dataReporting/downProductCountFile", //导出项目数据统计
    downRegistrantCountFile: "/dataReporting/downRegistrantCountFile", //导出员工数据统计
    downFansSubmitFile: "/dataReporting/downFansSubmitFile", //导出进粉上报
    inputFansSubmitCsv: "/dataReporting/inputFansSubmitCsv", //导入进粉上报
    downFinanceSubmitFile: "/dataReporting/downFinanceSubmitFile", //导出财务上报
    inputFinanceSubmitCsv: "/dataReporting/inputFinanceSubmitCsv", //导入财务上报
    selectDataComparisonDtoPageList: "/dataReporting/selectDataComparisonDtoPageList", //获取数据对比列表
    deleteAllData: "/dataReporting/deleteAllData", //一键删除所有的数据上报
    selectDataReportingForCreateUserNames: "/dataReporting/selectDataReportingForCreateUserNames", //获取数据上报的登记人筛选项
  selectDataReportingList: "/dataReporting/selectDataReportingList", //获取数据上报列表
  upDataReporting: "/dataReporting/upDataReporting", //修改数据上报
  selectProductCountDtoPageList: "/dataReporting/selectProductCountDtoPageList", //获取项目汇总列表
  selectRegistrantCountDtoPageList: "/dataReporting/selectRegistrantCountDtoPageList", //获取登记人汇总列表
  addDataReporting: "/dataReporting/addDataReporting", //添加数据上报
  delDataReporting: "/dataReporting/delDataReporting", //删除数据上报
  downDataReportingFile: "/dataReporting/downDataReportingFile", //导出数据上报
  downProductCountFile: "/dataReporting/downProductCountFile", //导出项目数据统计
  downRegistrantCountFile: "/dataReporting/downRegistrantCountFile", //导出员工数据统计
  downFansSubmitFile: "/dataReporting/downFansSubmitFile", //导出进粉上报
  inputFansSubmitCsv: "/dataReporting/inputFansSubmitCsv", //导入进粉上报
  downFinanceSubmitFile: "/dataReporting/downFinanceSubmitFile", //导出财务上报
  inputFinanceSubmitCsv: "/dataReporting/inputFinanceSubmitCsv", //导入财务上报
  selectDataComparisonDtoPageList: "/dataReporting/selectDataComparisonDtoPageList", //获取数据对比列表
  deleteAllData: "/dataReporting/deleteAllData", //一键删除所有的数据上报
  selectDataReportingForCreateUserNames: "/dataReporting/selectDataReportingForCreateUserNames", //获取数据上报的登记人筛选项
    selectFansSubmitList: "/dataReporting/selectFansSubmitList", //获取进粉上报列表
    delFansSubmit: "/dataReporting/delFansSubmit", //删除进粉上报信息
    updateFansSubmit: "/dataReporting/updateFansSubmit", //修改进粉上报信息
    addFansSubmit: "/dataReporting/addFansSubmit", //添加进粉上报信息
    selectVxs: "/dataReporting/selectVxs", //获取进粉中的微信号列表
  selectFansSubmitList: "/dataReporting/selectFansSubmitList", //获取进粉上报列表
  delFansSubmit: "/dataReporting/delFansSubmit", //删除进粉上报信息
  updateFansSubmit: "/dataReporting/updateFansSubmit", //修改进粉上报信息
  addFansSubmit: "/dataReporting/addFansSubmit", //添加进粉上报信息
  selectVxs: "/dataReporting/selectVxs", //获取进粉中的微信号列表
    selectFinanceSubmitList: "/dataReporting/selectFinanceSubmitList", //获取财务上报列表
    delFinanceSubmit: "/dataReporting/delFinanceSubmit", //删除财务上报信息
    updateFinanceSubmit: "/dataReporting/updateFinanceSubmit", //修改财务上报信息
    addFinanceSubmit: "/dataReporting/addFinanceSubmit", //添加财务上报信息
  selectFinanceSubmitList: "/dataReporting/selectFinanceSubmitList", //获取财务上报列表
  delFinanceSubmit: "/dataReporting/delFinanceSubmit", //删除财务上报信息
  updateFinanceSubmit: "/dataReporting/updateFinanceSubmit", //修改财务上报信息
  addFinanceSubmit: "/dataReporting/addFinanceSubmit", //添加财务上报信息
    getDataList: "/dataReporting/getDataList", //获取首页数据
  getDataList: "/dataReporting/getDataList", //获取首页数据
    inputCsv: "/dataReporting/inputCsv", //导入
  inputCsv: "/dataReporting/inputCsv", //导入
}
const enums = {
    selectEnumList: "/enum/selectEnumList", //获取枚举列表
    addEnum: "/enum/addEnum", //添加枚举
    upEnum: "/enum/upEnum", //修改枚举
    delEnum: "/enum/delEnum", //删除枚举
    selectEnumByCategory: "/enum/selectEnumByCategory", //通过分类查询枚举
  selectEnumList: "/enum/selectEnumList", //获取枚举列表
  addEnum: "/enum/addEnum", //添加枚举
  upEnum: "/enum/upEnum", //修改枚举
  delEnum: "/enum/delEnum", //删除枚举
  selectEnumByCategory: "/enum/selectEnumByCategory", //通过分类查询枚举
  getDic: "/enum/getDic", //获取数据字典的分类
}
const capacityScope = {
    selectItemParameterList: "/capacityScope/selectItemParameterList", //获取检验项目参数
    addItemParameter: "/capacityScope/addItemParameter", //新增检验项目参数
    delItemParameter: "/capacityScope/delItemParameter", //删除检验项目参数
    upItemParameter: "/capacityScope/upItemParameter", //修改检验项目参数
    selectTestObjectList: "/capacityScope/selectTestObjectList", //获取检测对象
    addTestObject: "/capacityScope/addTestObject", //新增检测对象
    delTestObject: "/capacityScope/delTestObject", //删除检测对象
    upTestObject: "/capacityScope/upTestObject", //修改检测对象
    selectTestObjectByName: "/capacityScope/selectTestObjectByName", //获取检验对象枚举
  selectItemParameterList: "/capacityScope/selectItemParameterList", //获取检验项目参数
  addItemParameter: "/capacityScope/addItemParameter", //新增检验项目参数
  delItemParameter: "/capacityScope/delItemParameter", //删除检验项目参数
  upItemParameter: "/capacityScope/upItemParameter", //修改检验项目参数
  selectTestObjectList: "/capacityScope/selectTestObjectList", //获取检测对象
  addTestObject: "/capacityScope/addTestObject", //新增检测对象
  delTestObject: "/capacityScope/delTestObject", //删除检测对象
  upTestObject: "/capacityScope/upTestObject", //修改检测对象
  selectTestObjectByName: "/capacityScope/selectTestObjectByName", //获取检验对象枚举
  getInsProduction: "/capacityScope/getInsProduction", //设备里面选择检验项目(树形结构)
  selectProductListByObjectId: "/capacityScope/selectProductListByObjectId", //维护检验对象的产品
  addProduct: "/capacityScope/addProduct", //新增产品
@@ -115,91 +118,94 @@
}
const laboratoryScope = {
    selectItemParameter: "/laboratoryScope/selectItemParameter", //查询实验室管理列表
    addParameter: "/laboratoryScope/addParameter", //添加实验室参数
    delParameter: "/laboratoryScope/delParameter", //删除实验室参数
    upParameter: "/laboratoryScope/upParameter", //修改实验室参数
    obtainItemParameterList: "/laboratoryScope/obtainItemParameterList", //获取实验室名称
  selectItemParameter: "/laboratoryScope/selectItemParameter", //查询实验室管理列表
  addParameter: "/laboratoryScope/addParameter", //添加实验室参数
  delParameter: "/laboratoryScope/delParameter", //删除实验室参数
  upParameter: "/laboratoryScope/upParameter", //修改实验室参数
  obtainItemParameterList: "/laboratoryScope/obtainItemParameterList", //获取实验室名称
}
const deviceScope = {
    selectDeviceParameter: "/deviceScope/selectDeviceParameter", //查询设备详情列表
    addDeviceParameter: "/deviceScope/addDeviceParameter", //添加设备详情参数
    delDeviceParameter: "/deviceScope/delDeviceParameter", //删除设备详情参数
    upDeviceParameter: "/deviceScope/upDeviceParameter", //修改设备详情参数
  selectDeviceParameter: "/deviceScope/selectDeviceParameter", //查询设备详情列表
  addDeviceParameter: "/deviceScope/addDeviceParameter", //添加设备详情参数
  delDeviceParameter: "/deviceScope/delDeviceParameter", //删除设备详情参数
  upDeviceParameter: "/deviceScope/upDeviceParameter", //修改设备详情参数
  selectDeviceByCategory: "/deviceScope/selectDeviceByCategory", //通过设备分类获取设备列表
    authorizedPerson: "/user/getDeviceManager", //获取授权人
    selectEquipmentOverview: "/deviceScope/selectEquipmentOverview", //获取设备总览
    uploadFile: "/deviceScope/uploadFile", //上传图片
    selectDevicePrincipal: "/user/getDeviceManager", //获取设备负责人
  authorizedPerson: "/user/getDeviceManager", //获取授权人
  selectEquipmentOverview: "/deviceScope/selectEquipmentOverview", //获取设备总览
  uploadFile: "/deviceScope/uploadFile", //上传图片
  selectDevicePrincipal: "/user/getDeviceManager", //获取设备负责人
  selectDeviceByCode: "/deviceScope/selectDeviceByCode", //通过设备编号获取设备列表
}
const insOrder = {
    selectInsOrderParameter: "/insOrder/selectInsOrderParameter", //查询检验下单
    addInsOrder: "/insOrder/addInsOrder", //添加检验下单数据
    selectOrderManDay: "/insOrder/selectOrderManDay", //查询订单总共预计时间
    upInsOrder: "/insOrder/upInsOrder", //检验下发
  selectInsOrderParameter: "/insOrder/selectInsOrderParameter", //查询检验下单
  addInsOrder: "/insOrder/addInsOrder", //添加检验下单数据
  selectOrderManDay: "/insOrder/selectOrderManDay", //查询订单总共预计时间
  upInsOrder: "/insOrder/upInsOrder", //检验下发
  getInsOrder: "/insOrder/getInsOrder", //查询检验下单内容详情
  upInsOrderOfState: "/insOrder/upInsOrderOfState", //审核检验单机进行状态修改
  addInsOrderTemplate: "/insOrder/addInsOrderTemplate", //添加检验单模板
  selectInsOrderTemplate: "/insOrder/selectInsOrderTemplate", //查询检验单模板
  selectInsOrderTemplateById: "/insOrder/selectInsOrderTemplateById", //通过检验单模板id获取检验单模板内容
  delInsOrderTemplate: "/insOrder/delInsOrderTemplate", //删除检验单模板
    selectSampleAndProductByOrderId: "/insOrder/selectSampleAndProductByOrderId", //通过检验单查询检验数据(数据查看)
    costStatistics: "/insOrder/costStatistics", //费用统计
  selectSampleAndProductByOrderId: "/insOrder/selectSampleAndProductByOrderId", //通过检验单查询检验数据(数据查看)
  costStatistics: "/insOrder/costStatistics", //费用统计
  selectSampleDefects: "/insOrder/selectSampleDefects", //样品缺陷指标
}
const sampleOrder = {
    list: "/sampleOrder/list", //获取指派人员
  list: "/sampleOrder/list", //获取指派人员
}
const insOrderPlan = {
    selectInsOrderPlanList: "/insOrderPlan/selectInsOrderPlanList", //查询检验任务
  claimInsOrderPlan: "/insOrderPlan/claimInsOrderPlan",//认领检验任务
    doInsOrder: "/insOrderPlan/doInsOrder",//执行检验操作
    saveInsContext: "/insOrderPlan/saveInsContext",//保存检验内容
  upPlanUser: "/insOrderPlan/upPlanUser",//任务交接
  verifyPlan: "/insOrderPlan/verifyPlan",//复核检验任务
  submitPlan: "/insOrderPlan/submitPlan",//检验任务提交
  selectInsOrderPlanList: "/insOrderPlan/selectInsOrderPlanList", //查询检验任务
  claimInsOrderPlan: "/insOrderPlan/claimInsOrderPlan", //认领检验任务
  doInsOrder: "/insOrderPlan/doInsOrder", //执行检验操作
  saveInsContext: "/insOrderPlan/saveInsContext", //保存检验内容
  upPlanUser: "/insOrderPlan/upPlanUser", //任务交接
  verifyPlan: "/insOrderPlan/verifyPlan", //复核检验任务
  submitPlan: "/insOrderPlan/submitPlan", //检验任务提交
}
const systemLog = {
    selectSystemLogList: "/systemLog/selectSystemLogList", //获取日志
  selectSystemLogList: "/systemLog/selectSystemLogList", //获取日志
}
const standardTree = {
    selectStandardTreeList: "/standardTree/selectStandardTreeList", //获取标准树
    addStandardTree: "/standardTree/addStandardTree", //添加标准树
    addStandardMethodList: "/standardTree/addStandardMethodList", //给标准树添加检验标准
    selectsStandardMethodByFLSSM: "/standardTree/selectsStandardMethodByFLSSM", //根据标准树进行标准查询
    upStandardProductList: "/standardTree/upStandardProductList", //修改标准库中的要求值
    delStandardMethodByFLSSM: "/standardTree/delStandardMethodByFLSSM", //删除标准树下的检验标准
    delStandardProductByIds: "/standardTree/delStandardProductByIds", //删除标准树下的检验项目
    addStandardProduct: "/standardTree/addStandardProduct", //新增标准树下的检验项目
    delStandardTree: "/standardTree/delStandardTree", //删除标准树的层级
    selectStandardProductList: "/standardTree/selectStandardProductList", //通过标准树查询对应的检验项目
    selectStandardProductListByMethodId: "/standardTree/selectStandardProductListByMethodId", //通过检验标准查询检验项目
    selectStandardMethodEnum: "/standardTree/selectStandardMethodEnum", //获取标准树下标准方法枚举
  selectStandardTreeList: "/standardTree/selectStandardTreeList", //获取标准树
  addStandardTree: "/standardTree/addStandardTree", //添加标准树
  addStandardMethodList: "/standardTree/addStandardMethodList", //给标准树添加检验标准
  selectsStandardMethodByFLSSM: "/standardTree/selectsStandardMethodByFLSSM", //根据标准树进行标准查询
  upStandardProductList: "/standardTree/upStandardProductList", //修改标准库中的要求值
  delStandardMethodByFLSSM: "/standardTree/delStandardMethodByFLSSM", //删除标准树下的检验标准
  delStandardProductByIds: "/standardTree/delStandardProductByIds", //删除标准树下的检验项目
  addStandardProduct: "/standardTree/addStandardProduct", //新增标准树下的检验项目
  delStandardTree: "/standardTree/delStandardTree", //删除标准树的层级
  selectStandardProductList: "/standardTree/selectStandardProductList", //通过标准树查询对应的检验项目
  selectStandardProductListByMethodId: "/standardTree/selectStandardProductListByMethodId", //通过检验标准查询检验项目
  selectStandardProductByMethodId: "/standardTree/selectStandardProductByMethodId", //批量编辑查询检验项目
  selectStandardMethodEnum: "/standardTree/selectStandardMethodEnum", //获取标准树下标准方法枚举
  getStandardTree2: "/standardTree/getStandardTree2", //获取产品架构
  upStandardProducts: "/standardTree/upStandardProducts", //获取产品架构
  selectStandardProductEnumByMethodId: "/standardTree/selectStandardProductEnumByMethodId", //批量编辑查询所有检验项目和检验子项枚举
}
const standardMethod = {
    selectStandardMethodList: "/standardMethod/selectStandardMethodList", //获取标准方法列表
    selectStandardMethods: "/standardMethod/selectStandardMethods", //获取标准方法枚举
    addStandardMethod: "/standardMethod/addStandardMethod", //添加标准方法
    upStandardMethod: "/standardMethod/upStandardMethod", //修改标准方法
    delStandardMethod: "/standardMethod/delStandardMethod", //删除标准方法
  selectStandardMethodList: "/standardMethod/selectStandardMethodList", //获取标准方法列表
  selectStandardMethods: "/standardMethod/selectStandardMethods", //获取标准方法枚举
  addStandardMethod: "/standardMethod/addStandardMethod", //添加标准方法
  upStandardMethod: "/standardMethod/upStandardMethod", //修改标准方法
  delStandardMethod: "/standardMethod/delStandardMethod", //删除标准方法
  importStandardDetails: "/standardMethod/importStandardDetails", // 导入标准明细
}
const StandardTemplate = {
    selectStandardTemplatePageList: "/StandardTemplate/selectStandardTemplatePageList", //获取检验模板列表
    addStandardTemplate: "/StandardTemplate/addStandardTemplate", //添加检验模板
    upStandardTemplate: "/StandardTemplate/upStandardTemplate", //修改检验模板
    delStandardTemplate: "/StandardTemplate/delStandardTemplate", //删除检验模板
    getStandardTemplate: "/StandardTemplate/getStandardTemplate", //查询原始记录模板枚举
  selectStandardTemplatePageList: "/StandardTemplate/selectStandardTemplatePageList", //获取检验模板列表
  addStandardTemplate: "/StandardTemplate/addStandardTemplate", //添加检验模板
  upStandardTemplate: "/StandardTemplate/upStandardTemplate", //修改检验模板
  delStandardTemplate: "/StandardTemplate/delStandardTemplate", //删除检验模板
  getStandardTemplate: "/StandardTemplate/getStandardTemplate", //查询原始记录模板枚举
}
const insReport = {
@@ -231,7 +237,9 @@
  selectDepartment: "/department/selectDepartment", //人员架构树
  addDepartment: "/department/addDepartment", //添加部门
  delDepartment: "/department/delDepartment", //删除部门
  showUserById: "/department/showUserById", //根据选择的树展示相关的人员
  selectDepartmentLim: "/department/selectDepartmentLim", //获取部门树
  addDepartmentLims: "/department/addDepartmentLims", //添加部门
  delDepartmentLims: "/department/delDepartmentLims", //删除部门
}
const report = {
@@ -242,42 +250,42 @@
  testProductByDay: "/report/testProductByDay", //首检测项目统计
}
const certification = {
  getCertificationDetail:"/certification/getCertificationDetail",//查询资质明细列表
  addCertificationDetail:"/certification/addCertificationDetail",//添加资质明细列表
  delCertificationDetail:"certification/delCertificationDetail",//删除资质明细列表
  getCertificationDetail: "/certification/getCertificationDetail", //查询资质明细列表
  addCertificationDetail: "/certification/addCertificationDetail", //添加资质明细列表
  delCertificationDetail: "certification/delCertificationDetail", //删除资质明细列表
}
const sealScope = {
  selectSeal:"/sealScope/selectSeal",//查询印章列表
  addSeal:"/sealScope/addSeal",//添加印章参数
  selectSeal: "/sealScope/selectSeal", //查询印章列表
  addSeal: "/sealScope/addSeal", //添加印章参数
}
const informationNotification = {
  checkForUnreadData:"/informationNotification/checkForUnreadData",//查询是否存在未读数据
  deleteDataBasedOnId:"/informationNotification/deleteDataBasedOnId",//根据Id删除数据
  informationReadOrDelete:"/informationNotification/informationReadOrDelete",//标记所有信息为已读-删除所有已读消息
  page:"/informationNotification/page",//滚动分页查询
  updateMessageStatus:"/informationNotification/updateMessageStatus",//更新消息状态(拒绝、接收)
  triggerModificationStatusToRead:"/informationNotification/triggerModificationStatusToRead",//点击详情触发修改状态为已读
  checkForUnreadData: "/informationNotification/checkForUnreadData", //查询是否存在未读数据
  deleteDataBasedOnId: "/informationNotification/deleteDataBasedOnId", //根据Id删除数据
  informationReadOrDelete: "/informationNotification/informationReadOrDelete", //标记所有信息为已读-删除所有已读消息
  page: "/informationNotification/page", //滚动分页查询
  updateMessageStatus: "/informationNotification/updateMessageStatus", //更新消息状态(拒绝、接收)
  triggerModificationStatusToRead: "/informationNotification/triggerModificationStatusToRead", //点击详情触发修改状态为已读
}
const performanceShift = {
  add:"/performanceShift/add",//绩效管理-班次-排班
  page:"/performanceShift/page",//绩效管理-班次-分页查询
  update:"/performanceShift/update",//绩效管理-班次-班次状态修改
  pageYear:"/performanceShift/pageYear",//绩效管理-班次-年份分页查询
  export:"/performanceShift/export",//绩效管理-班次-导出
  add: "/performanceShift/add", //绩效管理-班次-排班
  page: "/performanceShift/page", //绩效管理-班次-分页查询
  update: "/performanceShift/update", //绩效管理-班次-班次状态修改
  pageYear: "/performanceShift/pageYear", //绩效管理-班次-年份分页查询
  export: "/performanceShift/export", //绩效管理-班次-导出
}
const auxiliaryWorkingHours = {
  selectAuxiliaryWorkingHours:"/auxiliaryWorkingHours/selectAuxiliaryWorkingHours",//查询辅助工时
  deleteAuxiliaryWorkingHours:"/auxiliaryWorkingHours/deleteAuxiliaryWorkingHours",//删除辅助工时
  upAuxiliaryWorkingHours:"/auxiliaryWorkingHours/upAuxiliaryWorkingHours",//修改辅助工时
  insertAuxiliaryWorkingHours:"/auxiliaryWorkingHours/insertAuxiliaryWorkingHours",//新增辅助工时
  selectAuxiliaryWorkingHours: "/auxiliaryWorkingHours/selectAuxiliaryWorkingHours", //查询辅助工时
  deleteAuxiliaryWorkingHours: "/auxiliaryWorkingHours/deleteAuxiliaryWorkingHours", //删除辅助工时
  upAuxiliaryWorkingHours: "/auxiliaryWorkingHours/upAuxiliaryWorkingHours", //修改辅助工时
  insertAuxiliaryWorkingHours: "/auxiliaryWorkingHours/insertAuxiliaryWorkingHours", //新增辅助工时
}
const unPass = {
    pageInsUnPass:"/unPass/pageInsUnPass", // 查询不合格样品数据
  pageInsUnPass: "/unPass/pageInsUnPass", // 查询不合格样品数据
}
const companies = {
src/components/do/b1-ins-order/add.vue
@@ -272,7 +272,7 @@
        <el-table-column prop="model" label="样品型号" align="center" min-width="100">
          <template slot-scope="scope">
            <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="样品型号"
              size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;" disabled>
              size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;">
              <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
@@ -348,7 +348,7 @@
        <el-table-column prop="section" label="区间" width="120" show-overflow-tooltip></el-table-column>
        <el-table-column prop="ask" label="要求值" min-width="220px">
          <template slot-scope="scope">
            <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea"
            <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea" readonly
              :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)" :readonly="active>1"></el-input>
          </template>
        </el-table-column>
@@ -876,8 +876,8 @@
      },
      activeStandardTree() {
        let trees = this.selectTree.split(" - ")
        if (trees.length < 5) {
          this.$message.error('未选择型号')
        if (trees.length < 4) {
          this.$message.error('未选择产品')
          return
        }
        this.addObj.factory = trees[0]
@@ -1144,7 +1144,7 @@
        if(val===null||val==='')return
        this.getProductLoad = true
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: this.addObj.model + '-' + row.modelNum,
          model: row.model + '-' + row.modelNum,
          standardMethodListId: val
        }, {
          headers: {
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -241,9 +241,10 @@
                    <el-input v-else-if="getInspectionValueType(n.i) == 2" class="table_input" type="textarea"
                      v-model="n.v.v"
                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
                      @change="saveInsContext()" />
                      @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" />
                    <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v"
                      :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()">
                      :disabled="state>1" @visible-change="e=>getDic(e,n.i)"
                       @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)">
                      <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>
                    </el-select>
                    <span :style="`font-family:${n.v.ff} !important;`"
@@ -272,14 +273,14 @@
                    <span :style="`font-family:${n.v.ff} !important;`">{{getTell(n.i)}}</span>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='最终值' && state==1">
                    <el-input class="table_input" type="textarea"
                    <!-- <el-input class="table_input" type="textarea"
                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
                      v-model="n.v.v" @change="saveInsContext()" v-if="getInspectionValueType(n.i) == 2"></el-input>
                    <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v"
                      :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()">
                      <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>
                    </el-select>
                    <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                    </el-select> -->
                    <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                  </template>
                  <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                </div>
@@ -319,7 +320,7 @@
    </el-drawer>
    <el-drawer title="任务切换" :visible.sync="taskVisible" :size="500">
      <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList"
        :componentData="componentData" :key="upIndex" style="max-height: 100%;height: inherit;"/>
        :componentData="componentData" :key="upIndex" style="height: 100%;"/>
    </el-drawer>
    <el-dialog title="检验复核" :visible.sync="reviewDia" width="500px">
      <div class="body" style="display: flex;padding: 10px;" v-if="reviewDia">
@@ -843,15 +844,19 @@
                if (b[0].r == a.r) {
                  b.forEach(c => {
                    if (c.c == a.c) {
                      if (!isNaN(parseFloat(c.v.v))) {
                        var tableCode = ''
                        for (var d in this.comparisonList) {
                          if (c.c == this.comparisonList[d].value) {
                            tableCode = this.comparisonList[d].label
                            break
                          }
                      var tableCode = ''
                      for (var d in this.comparisonList) {
                        if (c.c == this.comparisonList[d].value) {
                          tableCode = this.comparisonList[d].label
                          break
                        }
                        comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v)
                      }
                      if(this.getInspectionValueType(item.i)==1){
                        if (!isNaN(parseFloat(c.v.v))) {
                          comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v)
                        }
                      }else{
                        comValue[(tableCode + (c.r + 1))] = c.v.v
                      }
                    }
                  })
@@ -865,24 +870,22 @@
                let comp = ask.map((m, i) => {
                  if (m.includes('=')) {
                    return res == m.split('=')[1]
                  }
                  if (m.includes('≥')) {
                  } else if (m.includes('≥')) {
                    return res >= m.split('≥')[1]
                  }
                  if (m.includes('≤')) {
                  }else if (m.includes('≤')) {
                    return res <= m.split('≤')[1]
                  }
                  if (m.includes('<')) {
                  }else if (m.includes('<')) {
                    return res < m.split('<')[1]
                  }
                  if (m.includes('>')) {
                  }else if (m.includes('>')) {
                    return res > m.split('>')[1]
                  }
                })
                if (comp.every(m => m)) {
                  item.v.v = 1
                } else {
                  item.v.v = 0
                if(this.getInspectionValueType(item.i)==1){
                  if (comp.every(m => m)) {
                    item.v.v = 1
                  } else {
                    item.v.v = 0
                  }
                }
                this.saveInsContext()
              }
@@ -922,14 +925,18 @@
                  valueList.forEach(b => {
                    str = str.replace(b.name, b.value)
                  })
                  if (item.v.f.includes('/') > -1) {
                  if (item.v.f.includes('/')) {
                    if (Object.getOwnPropertyNames(comValue).length == valueList.length) {
                      comResult = eval(str)
                    } else {
                      comResult = ''
                    }
                  } else {
                    comResult = eval(str)
                    if(this.getInspectionValueType(item.i)==1){
                      comResult = eval(str)
                    }else{
                      comResult = str
                    }
                  }
                  break;
              }
@@ -937,8 +944,12 @@
                if (a[0].r == item.r && comResult != '') {
                  for (var b in a) {
                    if (a[b].c == item.c) {
                      let val = parseFloat(comResult.toFixed(3))
                      a[b].v.v = isNaN(val) ? '' : val
                      try{
                        let val = parseFloat(comResult.toFixed(3))
                        a[b].v.v = isNaN(val) ? '' : val
                      }catch(e){
                        a[b].v.v = comResult
                      }
                      break
                    }
                  }
src/components/tool/onlyoffice.vue
@@ -57,7 +57,6 @@
  },
  methods: {
    async setEditor(option) {
      console.log(`output->option`,option)
      if (this.docEditor !== null) {
        this.docEditor.destroyEditor();
        this.docEditor = null;
src/components/tool/value-table.vue
@@ -309,7 +309,7 @@
    <el-dialog title="数据导入" :visible.sync="uploadDia" width="500px">
      <div style="margin: 0 auto;">
        <el-upload ref="upload" drag :action="javaApi + inputUrl" :headers="token" :file-list="fileList" name="file"
          :auto-upload="false" accept=".csv" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"
          :auto-upload="false" :accept="data.accept===undefined?'.csv':data.accept" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"
          :on-error="onError" :data="{param: data.uploadStr}">
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
@@ -564,14 +564,17 @@
      },
      sizeChange(val) {
        this.page.size = val
        this.selectList()
        this.selectList('page')
      },
      currentChange(val) {
        this.page.current = val
        this.selectList()
        this.selectList('page')
      },
      selectList() {
      selectList(val) {
        this.loading = true
        if(val===undefined){
          this.page.current = 1;
        }
        if (this.data.isPage != undefined && this.data.isPage != true) {
          this.page = {
            current: -1,
@@ -961,7 +964,8 @@
        this.uploadDia = true
      },
      beforeUpload(file, fileList) {
        if (file.raw.type != 'text/csv') {
        console.log(file.raw.type);
        if (file.raw.type != (this.data.inputType===undefined?'text/csv':this.data.inputType)) {
          this.$message.error('上传文件格式不正确');
          this.$refs.upload.clearFiles()
          return false;
src/components/view/a6-device-management.vue
@@ -687,7 +687,7 @@
          this.$message.error('未输入启用日期')
          return
        }
        if(!this.formData.deviceStatus){
        if(this.formData.deviceStatus==='' || this.formData.deviceStatus===null){
          this.$message.error('未选择当前状态')
          return
        }
src/components/view/a6-personnel-detail.vue
@@ -1,404 +1,443 @@
<style scoped>
    .standard {
        padding: 20px 0;
        display: flex;
    }
  .standard {
    padding: 20px 0;
    display: flex;
  }
    .left {
        width: 270px;
        height: calc(100% - 40px - 25px);
        background-color: white;
        padding: 15px;
    }
  .el-tree{
  .left {
    width: 270px;
    height: calc(100% - 40px - 25px);
    background-color: white;
    padding: 15px;
  }
  .el-tree {
    height: calc(100% - 37px);
    overflow-y: auto;
  }
    .custom-tree-node {
        width: 100%;
        line-height: 32px;
    }
  .custom-tree-node {
    width: 100%;
    line-height: 32px;
  }
    .custom-tree-node .el-icon-delete {
        color: #3A7BFA;
        opacity: 0;
        font-size: 18px;
    }
  .custom-tree-node .el-icon-delete {
    color: #3A7BFA;
    opacity: 0;
    font-size: 18px;
  }
    .custom-tree-node:hover .el-icon-delete {
        opacity: 1;
    }
  .custom-tree-node:hover .el-icon-delete {
    opacity: 1;
  }
    .node_i {
        color: orange;
        font-size: 18px;
    }
  .node_i {
    color: orange;
    font-size: 18px;
  }
    .right {
        margin-left: 5px;
        width: calc(100% - 305px);
        height: calc(100% - 40px);
    }
  .right {
    margin-left: 5px;
    width: calc(100% - 305px);
    height: calc(100% - 40px);
  }
    .right .title {
        height: 50px;
        line-height: 50px;
        padding: 0 10px;
        background-color: white;
    }
  .right .title {
    height: 50px;
    line-height: 50px;
    padding: 0 10px;
    background-color: white;
  }
    .standard_table {
        border-top: 1px solid #ebeef5;
        height: calc(100% - 50px);
        margin-top: 5px;
        background-color: white;
        user-select: none;
  .standard_table {
    border-top: 1px solid #ebeef5;
    height: calc(100% - 50px);
    margin-top: 5px;
    background-color: white;
    user-select: none;
    overflow-y: auto;
    }
  .sort{
  }
  .sort {
    width: 80% !important;
    overflow: hidden;
  }
  .search {
        background-color: #fff;
        height: 100%;
        display: flex;
        align-items: center;
    background-color: #fff;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: end;
    }
  }
    .search_thing {
        width: 350px;
        display: flex;
        align-items: center;
    }
  .search_thing {
    width: 350px;
    display: flex;
    align-items: center;
  }
    .search_label {
        width: 110px;
        font-size: 14px;
        text-align: right;
    }
  .search_label {
    width: 110px;
    font-size: 14px;
    text-align: right;
  }
    .search_input {
        width: calc(100% - 110px);
    }
  .search_input {
    width: calc(100% - 110px);
  }
</style>
<style>
    .standard .el-tree-node__content {
        height: 32px;
        font-size: 14px;
        border-radius: 2px;
    }
  .standard .el-tree-node__content {
    height: 32px;
    font-size: 14px;
    border-radius: 2px;
  }
    .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
        color: #3A7BFA;
    }
  .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
    color: #3A7BFA;
  }
</style>
<template>
    <div class="standard">
        <div class="left">
            <el-row>
                <el-col :span="20">
                    <el-input placeholder="输入关键字进行搜索" suffix-icon="el-icon-search" v-model="search" size="small"
                        style="margin-bottom: 5px;" clearable @blur="searchFilter" @clear="searchFilter"></el-input>
                </el-col>
                <el-col :span="4" style="text-align: center;line-height: 30px;" v-if="addPower">
                    <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="handleAdd"></el-button>
                </el-col>
            </el-row>
            <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'name' }" node-key="id"
                :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
                @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false"
                :default-expanded-keys="expandedKeys"
        :default-checked-keys="[1]">
                <div class="custom-tree-node" slot-scope="{ node, data }">
                    <el-row style="width: 100%;">
                        <el-col :span="21" :class="{sort:node.level>3}">
                            <span><i
                                    :class="`node_i ${data.children != undefined&&data.children.length>0 ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                                 {{ data.name }}</span>
                        </el-col>
                        <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&node.level>1">
                            <el-button type="text" size="mini" @click.stop="remove(node, data)">
                                <i class="el-icon-delete"></i>
                            </el-button>
                        </el-col>
                    </el-row>
                </div>
            </el-tree>
        </div>
        <div class="right">
            <el-row class="title">
                <el-col :span="14" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
                <el-col :span="selectTree==''?24:10" style="text-align: right;" v-if="selectTree!=''">
  <div class="standard">
    <div class="left">
      <el-row>
        <el-col :span="20">
          <el-input placeholder="输入关键字进行搜索" suffix-icon="el-icon-search" v-model="search" size="small"
            style="margin-bottom: 5px;" clearable @blur="searchFilter" @clear="searchFilter"></el-input>
        </el-col>
        <el-col :span="4" style="text-align: center;line-height: 30px;" v-if="addPower">
          <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="handleAdd"></el-button>
        </el-col>
      </el-row>
      <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'name' }" node-key="id"
        :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
        @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false"
        :default-expanded-keys="expandedKeys" :default-checked-keys="defaultCheckedKeys">
        <div class="custom-tree-node" slot-scope="{ node, data }">
          <el-row style="width: 100%;">
            <el-col :span="21" :class="{sort:node.level>3}">
              <span><i
                  :class="`node_i ${data.children != undefined&&data.children.length>0 ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                {{ data.name }}</span>
            </el-col>
            <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&node.level>1">
              <el-button type="text" size="mini" @click.stop="remove(node, data)">
                <i class="el-icon-delete"></i>
              </el-button>
            </el-col>
          </el-row>
        </div>
      </el-tree>
    </div>
    <div class="right">
      <el-row class="title">
        <el-col :span="14" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
        <el-col :span="selectTree==''?24:10" style="text-align: right;" v-if="selectTree!=''">
          <div class="search">
            <div class="search_thing">
              <div class="search_label">人员名称:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.name"></el-input></div>
            </div>
            <div class="search_thing" style="padding-left: 30px;width: 120px;">
              <el-button size="small" @click="refresh()">重 置</el-button>
                <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
              <div class="search_input">
                <el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.name"
                  @keyup.enter.native="refreshTable()" @clear="refreshTable"></el-input>
              </div>
              <div class="search_label" v-if="upUserDepardLimsIdPower">
                <el-button type="primary" size="small" @click="selectUserDia = true">添加</el-button>
              </div>
            </div>
          </div>
                </el-col>
            </el-row>
            <el-row class="standard_table" v-loading="tableLoad">
                <ValueTable ref="ValueTable" :url="$api.department.showUserById" :componentData="componentData" />
            </el-row>
        </div>
        <el-dialog title="架构新增" :visible.sync="addDia" width="400px">
            <div class="body">
                <el-row style="line-height: 50px;">
                    <el-col :span="6" style="text-align: right;">
                        <span class="required-span">* </span>架构名称:
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-input v-model="addOb.name" placeholder="请输入架构名称" clearable size="small"></el-input>
                    </el-col>
                </el-row>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="addDia = false">取 消</el-button>
                <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
            </span>
        </el-dialog>
    </div>
        </el-col>
      </el-row>
      <el-row class="standard_table" v-loading="tableLoad">
        <ValueTable ref="ValueTable" :url="$api.user.selectUserList" :componentData="componentData" :delUrl="$api.user.delUserDepardLimsId"/>
      </el-row>
    </div>
    <el-dialog title="架构新增" :visible.sync="addDia" width="400px">
      <div class="body">
        <el-row style="line-height: 50px;">
          <el-col :span="6" style="text-align: right;">
            <span class="required-span">* </span>架构名称:
          </el-col>
          <el-col :span="16" :offset="1">
            <el-input v-model="addOb.name" placeholder="请输入架构名称" clearable size="small"></el-input>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia = false">取 消</el-button>
        <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="选择用户" :visible.sync="selectUserDia" width="70%">
        <div class="body" style="height: 60vh;" v-if="selectUserDia">
            <ValueTable ref="ValueTable2" :url="$api.user.selectUserList" :componentData="componentData2"/>
        </div>
        <span slot="footer" class="dialog-footer">
            <el-button @click="selectUserDia = false">取 消</el-button>
            <el-button type="primary" @click="selectUser">确 定</el-button>
        </span>
    </el-dialog>
  </div>
</template>
<script>
    import ValueTable from '../tool/value-table.vue'
    export default {
        components: {
            ValueTable
        },
        data() {
            return {
        datathirdParty:[{
          id: 1,
          label: '一级 1',
          children: [{
            id: 4,
            label: '二级 1-1',
            children: [{
              id: 9,
              label: '三级 1-1-1'
            }, {
              id: 10,
              label: '三级 1-1-2'
            }]
          }]
        }, {
          id: 2,
          label: '一级 2',
          children: [{
            id: 5,
            label: '二级 2-1'
          }, {
            id: 6,
            label: '二级 2-2'
          }]
        }, {
          id: 3,
          label: '一级 3',
          children: [{
            id: 7,
            label: '二级 3-1'
          }, {
            id: 8,
            label: '二级 3-2'
          }]
        }],
  import ValueTable from '../tool/value-table.vue'
  export default {
    components: {
      ValueTable
    },
    data() {
      return {
        datathirdParty: [],
        defaultProps: {
          children: 'children',
          label: 'label'
        },
        addthirdParty:false,
                search: null,
                list: [],
                selectTree: '',
                addDia: false,
                addOb: {
                    name:'',
          fatherId:''
                },
                addLoad: false,
                treeLoad: false,
                addPower: false,
                tableLoad: false,
                delStandardProduct: false,
                addStandardProduct: false,
                componentData: {
                    entity: {
            name:'',
            departId:'',
                        orderBy: {
                            field: 'id',
                            order: 'asc'
                        }
                    },
          init:false,
                    isIndex: true,
                    showSelect: false,
                    select: false,
                    do: [],
          isPage: false,
                    tagField: {
                    },
                    selectField: {},
                },
                expandedKeys: []
            }
        },
        mounted() {
            this.getPower()
            this.selectTreeList()
        },
        methods: {
            filterNode(value, data) {
                if (!value) return true;
                return data.name.indexOf(value) !== -1;
            },
            searchFilter() {
                this.$refs.tree.filter(this.search)
            },
        addthirdParty: false,
        search: null,
        list: [],
        selectTree: '',
        addDia: false,
        addOb: {
          name: '',
          fatherId: ''
        },
        addLoad: false,
        treeLoad: false,
        addPower: false,
        tableLoad: false,
        addStandardProduct: false,
        componentData: {
          entity: {
            name: '',
            departLimsId: '',
            orderBy: {
              field: 'id',
              order: 'asc'
            }
          },
          init: false,
          isIndex: true,
          showSelect: false,
          select: false,
          do: [{
                        id: 'delete',
                        font: '删除',
                        type: 'text',
                        method: 'doDiy'
                    }],
          tagField: {
            state: {
              select: [{
                value: 1,
                type: 'success',
                label: '启用'
              }, {
                value: 0,
                type: 'danger',
                label: '停用'
              }]
            }
          },
          selectField: {},
        },
        expandedKeys: [],
        selectUserDia: false,
        componentData2: {
            entity: {
                orderBy: {
                    field: 'id',
                    order: 'asc'
                }
            },
            isIndex: true,
            showSelect: true,
            select: true,
            do: [],
            tagField: {
                state: {
                    select: [{
                        value: 1,
                        type: 'success',
                        label: '启用'
                    }, {
                        value: 0,
                        type: 'danger',
                        label: '停用'
                    }]
                }
            },
            selectField: {},
          upUserDepardLimsIdPower: true
        },
        defaultCheckedKeys:[]
      }
    },
    mounted() {
      this.getPower()
      this.selectTreeList()
    },
    methods: {
      filterNode(value, data) {
        if (!value) return true;
        return data.name.indexOf(value) !== -1;
      },
      searchFilter() {
        this.$refs.tree.filter(this.search)
      },
      refreshTable() {
        this.$refs.ValueTable.selectList()
            },
            refresh() {
                this.upIndex++;
      },
      refresh() {
        this.upIndex++;
        this.componentData.entity.departId = this.list[0].id;
        this.refreshTable()
            },
            handleNodeClick(val, node, el) { //树的值
                this.selectTree = ''
                this.getNodeParent(node)
                this.selectTree = this.selectTree.replace(' - ', '')
                let data = this.selectTree.split(' - ')
                let data2 = ''
                for (let index = data.length - 1; index >= 0; index--) {
                    data2 += " - " + data[index]
                }
                this.selectTree = data2.replace(' - ', '')
      },
      handleNodeClick(val, node, el) { //树的值
        this.selectTree = ''
        this.getNodeParent(node)
        this.selectTree = this.selectTree.replace(' - ', '')
        let data = this.selectTree.split(' - ')
        let data2 = ''
        for (let index = data.length - 1; index >= 0; index--) {
          data2 += " - " + data[index]
        }
        this.selectTree = data2.replace(' - ', '')
        this.addOb.fatherId = val.id;
        this.componentData.entity.departId = val.id;
        this.componentData.entity.departLimsId = val.id;
        this.refreshTable()
            },
            getNodeParent(val) {
                if (val.parent != null) {
                    this.selectTree += ' - ' + val.label
                    this.getNodeParent(val.parent)
                }
            },
            remove(node, data) {
                this.$confirm("是否删除该层级", "提示", {
                    type: "error"
                }).then(() => {
                    this.treeLoad = true
                    this.$axios.post(this.$api.department.delDepartment, {
                        id: data.id
                    }).then(res => {
                        if (res.code == 201) return
                        this.$message.success('已删除')
                        this.selectTreeList()
                    })
                }).catch(e => {})
            },
            nodeOpen(data, node, el) {
                $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
            },
            nodeClose(data, node, el) {
                $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
            },
            selectTreeList() {
                this.treeLoad = true
                this.$axios.get(this.$api.department.selectDepartment).then(res => {
                    this.list = res.data
                    this.list.forEach(a => {
                        a.children.forEach(b => {
                            b.children.forEach(c => {
                                this.expandedKeys.push(c.id)
                            })
                        })
                    })
                    this.treeLoad = false
          this.componentData.entity.departId = this.list[0].id;
          this.selectTree = '全部'
      },
      getNodeParent(val) {
        if (val.parent != null) {
          this.selectTree += ' - ' + val.label
          this.getNodeParent(val.parent)
        }
      },
      remove(node, data) {
        this.$confirm("是否删除该层级", "提示", {
          type: "error"
        }).then(() => {
          this.treeLoad = true
          this.$axios.post(this.$api.department.delDepartmentLims, {
            id: data.id
          }).then(res => {
            if (res.code == 201) return
            this.$message.success('已删除')
            this.selectTreeList()
          })
        }).catch(e => {})
      },
      nodeOpen(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
      },
      nodeClose(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
      },
      selectTreeList() {
        this.treeLoad = true
        this.$axios.get(this.$api.department.selectDepartmentLim).then(res => {
          this.list = res.data
          this.refresh()
          this.list.forEach(a => {
            a.children.forEach(b => {
              this.expandedKeys.push(b.id)
            })
          })
          this.treeLoad = false
          this.defaultCheckedKeys = [this.list[0].id]
          this.componentData.entity.departLimsId = this.list[0].id;
          this.selectTree = this.list[0].name
          this.refreshTable()
                })
            },
            addStandardTree() {
                if (this.addOb.name == null || this.addOb.factory == '') {
                    this.$message.error('构架名称是必填项')
                    return
                }
                this.addLoad = true
                this.$axios.post(this.$api.department.addDepartment, this.addOb, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res => {
                    if (res.code === 201) {
                        this.addLoad = false
                        return
                    }
                    this.$message.success('添加成功')
                    this.addDia = false
                    this.selectTreeList()
                    this.addLoad = false
        })
      },
      addStandardTree() {
        if (this.addOb.name == null || this.addOb.factory == '') {
          this.$message.error('构架名称是必填项')
          return
        }
        this.addLoad = true
        this.$axios.post(this.$api.department.addDepartmentLims, this.addOb, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          if (res.code === 201) {
            this.addLoad = false
            return
          }
          this.$message.success('添加成功')
          this.addDia = false
          this.selectTreeList()
          this.addLoad = false
          this.addOb.name = ''
          this.addOb.fatherId = ''
                }).catch(e => {
                    this.addDia = false
                    this.addLoad = false
                })
            },
      handleAdd(){
        if(this.addOb.fatherId){
        }).catch(e => {
          this.addDia = false
          this.addLoad = false
        })
      },
      handleAdd() {
        if (this.addOb.fatherId) {
          this.addDia = true;
        }else{
        } else {
          this.$message.error('请选择一个架构层级')
        }
      },
            getPower() {
                let power = JSON.parse(sessionStorage.getItem('power'))
                let add = false
                let upStandardProduct = false
                let delStandardMethod = false
                let delStandardProduct = false
                let addStandardProduct = false
                let delStandardTree = false
                for (var i = 0; i < power.length; i++) {
                    if (power[i].menuMethod == 'addStandardTree') {
                        add = true
                    }
                    if (power[i].menuMethod == 'upStandardProductList') {
                        upStandardProduct = true
                    }
                    if (power[i].menuMethod == 'delStandardMethodByFLSSM') {
                        delStandardMethod = true
                    }
                    if (power[i].menuMethod == 'delStandardProductByIds') {
                        delStandardProduct = true
                    }
                    if (power[i].menuMethod == 'addStandardProduct') {
                        addStandardProduct = true
                    }
                    if (power[i].menuMethod == 'delStandardTree') {
                        delStandardTree = true
                    }
                }
                this.addPower = add
                this.upStandardProduct = upStandardProduct
                this.delStandardMethod = delStandardMethod
                this.delStandardProduct = delStandardProduct
                this.addStandardProduct = addStandardProduct
                this.delStandardTree = delStandardTree
            },
        }
    }
      getPower() {
        let power = JSON.parse(sessionStorage.getItem('power'))
        let add = false
        let addStandardProduct = false
        let delStandardTree = false
        let upUserDepardLimsId = false
        let del = false
        for (var i = 0; i < power.length; i++) {
          if (power[i].menuMethod == 'addDepartmentLims') {
            add = true
          }
          if (power[i].menuMethod == 'addStandardProduct') {
            addStandardProduct = true
          }
          if (power[i].menuMethod == 'delDepartmentLims') {
            delStandardTree = true
          }
          if (power[i].menuMethod == 'upUserDepardLimsId') {
            upUserDepardLimsId = true
          }
          if(power[i].menuMethod=='delUserDepardLimsId'){
              del = true
          }
        }
        if(!del){
            this.componentData.do.splice(0, 1)
        }
        this.addPower = add
        this.addStandardProduct = addStandardProduct
        this.delStandardTree = delStandardTree
        this.upUserDepardLimsIdPower = upUserDepardLimsId
      },
      selectUser() {
          let selects = this.$refs.ValueTable2.multipleSelection
          if (selects.length == 0) {
              this.$message.error('未选择数据')
              return
          }
        var ids = []
        selects.forEach(a=>{
          ids.push(a.id)
        })
          this.selectUserDia = false
        this.$axios.post(this.$api.user.upUserDepardLimsId,{
          ids: JSON.stringify(ids),
          id: this.componentData.entity.departLimsId
        }).then(res=>{
          if (res.code === 201) {
            return
          }
          this.$message.success('添加成功')
          this.refreshTable()
        })
      }
    }
  }
</script>
src/components/view/a6-personnel-overview.vue
@@ -166,7 +166,7 @@
        if(this.currentPage==1){
          this.loading = true
        }
        this.$axios.post(this.$api.user.selectUserList,{
        this.$axios.post(this.$api.user.selectPersonnelOverview,{
                    page: {
            current: this.currentPage,
            size: this.pageSize
src/components/view/a7-standard-method.vue
@@ -42,6 +42,9 @@
      <el-row class="title">
        <el-col :span="12" style="padding-left: 20px;">标准方法</el-col>
        <el-col :span="12" style="text-align: right;">
          <el-button size="medium" @click="$refs.ValueTable.openUpload()" v-if="inPower">
                        <i class="el-icon-upload2" style="color: #3A7BFA;"></i>
                        <span style="color: #3A7BFA;">导入</span></el-button>
          <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button>
        </el-col>
      </el-row>
@@ -65,7 +68,7 @@
    <div class="table">
      <ValueTable ref="ValueTable" :url="$api.standardMethod.selectStandardMethodList"
        :delUrl="$api.standardMethod.delStandardMethod" :upUrl="$api.standardMethod.upStandardMethod"
        :componentData="componentData" :key="upIndex" />
        :componentData="componentData" :key="upIndex" :inputUrl="$api.standardMethod.importStandardDetails"/>
    </div>
  </div>
</template>
@@ -165,12 +168,15 @@
            },
          },
          requiredAdd: ['code', 'name', 'isProduct', 'isUse', 'nameEn'],
          requiredUp: ['code', 'name', 'isProduct', 'isUse', 'nameEn']
          requiredUp: ['code', 'name', 'isProduct', 'isUse', 'nameEn'],
          accept: '.xlsx',
          inputType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        },
        entityCopy: {},
        upIndex: 0,
        addDia: false,
        addPower: true
        addPower: true,
        inPower: true,
      }
    },
    mounted() {
@@ -195,6 +201,7 @@
        let up = false
        let del = false
        let add = false
        let inPower = false
        for (var i = 0; i < power.length; i++) {
          if (power[i].menuMethod == 'addStandardMethod') {
            add = true
@@ -205,6 +212,9 @@
          if (power[i].menuMethod == 'upStandardMethod') {
            up = true
          }
          if (power[i].menuMethod == 'importStandardDetails') {
            inPower = true
          }
        }
        if (!del) {
          this.componentData.do.splice(1, 1)
@@ -213,6 +223,7 @@
          this.componentData.do.splice(0, 1)
        }
        this.addPower = add
        this.inPower = inPower
      },
      openAdd() {
        this.$refs.ValueTable.openAddDia(this.$api.standardMethod.addStandardMethod);
src/components/view/b1-inspect-order-plan.vue
@@ -170,7 +170,7 @@
            <div class="search_thing">
        <div class="search_label" style="width:90px">交接人员:</div>
        <div class="search_input">
          <el-select v-model="connectPerson" placeholder="请选择" style="width: 100%;">
          <el-select v-model="connectPerson" placeholder="请选择" style="width: 100%;" filterable>
            <el-option
              v-for="item in personList"
              :key="item.value"
src/components/view/b1-inspection-order.vue
@@ -181,7 +181,7 @@
                        <el-col class="search_thing" style="width: 95%;">
                            <div class="search_label"><span class="required-span" v-show="distributeData.type==2">* </span>指派人员:</div>
                            <div class="search_input">
                                <el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%;" clearable>
                                <el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%;" clearable filterable>
                                    <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value">
                                    </el-option>
                                </el-select>
src/components/view/b1-report-preparation.vue
@@ -181,9 +181,9 @@
          showSelect: false,
          select: false,
          do: [
              {
            {
              id: 'handleWeave',
              font: '在线编制',
              font: '编制',
              type: 'text',
              method: 'handleWeave',
              disabFun: (row, index) => {
@@ -355,7 +355,8 @@
            title: row.entrustCode + ".docx",
            lang: 'zh-CN',
            isPrint: true,
            user:  { id: 1, name: userName},
            user_id: 1,
            user_name: userName,
            editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.entrustCode + ".docx"
          }
        })
@@ -383,25 +384,31 @@
          if (power[i].menuMethod == 'writeReport') {
            sub = true
          }
          if (power[i].menuMethod == 'ratifyReport') {
            approve = true
          }
          if (power[i].menuMethod == 'examineReport') {
            issued = true
          }
        }
        if (!approve) {
          this.componentData.do.splice(5, 1)
          this.componentData.do.splice(6, 1)
        }
        if (!issued) {
          this.componentData.do.splice(4, 1)
          this.componentData.do.splice(5, 1)
        }
        if (!sub) {
          this.componentData.do.splice(3, 1)
          this.componentData.do.splice(4, 1)
        }
        if (!res) {
          this.componentData.do.splice(2, 1)
          this.componentData.do.splice(3, 1)
        }
        if (!up) {
          this.componentData.do.splice(1, 1)
          this.componentData.do.splice(2, 1)
        }
        // if (!edit) {
        //   this.componentData.do.splice(0, 1)
        // }
        if (!edit) {
          this.componentData.do.splice(0, 1)
        }
      },
      confirmClaim() {
        // console.log(this.$refs.Word.getValue())
src/components/view/b2-standard.vue
@@ -65,21 +65,26 @@
    width: 80% !important;
    overflow: hidden;
  }
  >>>.el-table__body-wrapper{
  >>>.el-table__body-wrapper {
    height: calc(100% - 46px) !important;
  }
  >>>.header-class{
  >>>.header-class {
    height: 40px !important;
  }
  >>>.header-class th.el-table__cell>.cell{
  >>>.header-class th.el-table__cell>.cell {
    line-height: 20px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  >>>.el-table__row{
  >>>.el-table__row {
    height: 35px !important;
  }
  .search{
  .search {
    height: 20%;
    border-bottom: 1px solid #ebeef5;
    margin-bottom: 16px;
@@ -88,27 +93,29 @@
    box-sizing: border-box;
    padding-bottom: 10px;
  }
  .search-item{
  .search-item {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
  }
  .search-item .el-row{
  .search-item .el-row {
    display: flex;
    align-items: center;
  }
  .search-item .el-col{
  .search-item .el-col {
    margin-left: 0;
  }
  .more-edit .dialog-footer{
  .more-edit .dialog-footer {
    position: absolute;
    top: 15px;
    right: 70px;
  }
  >>>.more-edit .el-dialog__body{
    height: calc(100vh - 90px);
  }
  >>>.is-disabled .el-textarea__inner{
  >>>.is-disabled .el-textarea__inner {
    background: rgba(0, 0, 0, 0.05) !important;
  }
</style>
@@ -138,6 +145,11 @@
  .standard .el-table .warning-row .cell {
    color: #bababa;
  }
  .el-table-filter__list{
    max-height: 400px;
    overflow-y: auto;
  }
</style>
@@ -177,11 +189,13 @@
    <div class="right">
      <el-row class="title" style="width: 100%;">
        <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
        <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" v-if="upStandardProduct">批量编辑</el-button>
        <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;"
          v-if="upStandardProduct">批量编辑</el-button>
      </el-row>
      <el-row class="standard_table" v-loading="tableLoad">
        <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark"
          highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class">
        <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220"
          tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard"
          header-row-class-name="header-class">
          <el-table-column prop="code" label="标准编号" show-overflow-tooltip width="200">
            <template slot-scope="scope">
              <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span>
@@ -200,21 +214,16 @@
      </el-row>
      <el-row class="product_table" v-loading="tableLoad2">
        <el-table :data="productList" ref="productTable" style="width: 100%;" height="100%" tooltip-effect="dark" stripe
          :fit="true" border
          @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
          @select="upProductSelect"
          @select-all="handleAll"
          class="productTable"
          header-row-class-name="header-class">
          <el-table-column type="selection" width="50" >
          :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
          @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class">
          <el-table-column type="selection" width="50">
          </el-table-column>
          <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
          <!-- <el-table-column prop="inspectionItemClassify" label="检验项类型" width="120" show-overflow-tooltip></el-table-column> -->
          <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
            show-overflow-tooltip></el-table-column>
          <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip :filters="filters"
            :filter-method="filterHandler"></el-table-column>
          <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip></el-table-column>
          <el-table-column prop="ask" label="要求值" min-width="200px">
            <template slot-scope="scope">
              <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable
@@ -261,7 +270,7 @@
          <el-table-column prop="templateId" label="模板" width="200">
            <template slot-scope="scope">
              <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct"
               @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)">
                @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)">
                <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
              </el-select>
            </template>
@@ -273,13 +282,8 @@
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
        style="position: absolute;right: 16px;bottom: 1px;"
          @current-change="handleCurrentChange"
          :current-page="currentPage"
          layout="total, prev, pager, next, jumper"
          :page-size="50"
          :total="total">
        <el-pagination style="position: absolute;right: 16px;bottom: 1px;" @current-change="handleCurrentChange"
          :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total">
        </el-pagination>
      </el-row>
    </div>
@@ -323,8 +327,8 @@
        <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="批量编辑" :visible.sync="moreEdit" width="90%" style="height: 100vh;" class="more-edit">
      <div class="body" style="height: 100%;display: flex;flex-direction: column;">
    <el-dialog title="批量编辑" :visible.sync="moreEdit" width="90%" class="more-edit">
      <div class="body" style="display: flex;flex-direction: column;height: 80vh;">
        <div class="search">
          <div class="search-item">
            <el-row style="width: 25%;margin-bottom: 16px;">
@@ -340,7 +344,8 @@
                <!-- <span class="required-span">* </span> -->
                要求描述:</el-col>
              <el-col :span="16" style="display: flex;align-items: flex-start;height: 100%;">
                <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input>
                <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}"
                  v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%;margin-bottom: 16px;">
@@ -348,7 +353,8 @@
                <!-- <span class="required-span">* </span> -->
                试验方法:</el-col>
              <el-col :span="16">
                <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" :disabled="moreSelects.length==0">
                <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;"
                  :disabled="moreSelects.length==0">
                  <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option>
                </el-select>
              </el-col>
@@ -357,7 +363,7 @@
              <el-col :span="6" style="text-align: right;">
                <!-- <span class="required-span">* </span> -->
                单价(元):</el-col>
              <el-col :span="16" >
              <el-col :span="16">
                <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length==0"></el-input>
              </el-col>
            </el-row>
@@ -366,7 +372,8 @@
                <!-- <span class="required-span">* </span> -->
                工时系数:</el-col>
              <el-col :span="16">
                <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length==0"></el-input>
                <el-input size="small" v-model="moreInfo.manHour" clearable
                  :disabled="moreSelects.length==0"></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%;">
@@ -374,7 +381,8 @@
                <!-- <span class="required-span">* </span> -->
                模板:</el-col>
              <el-col :span="16">
                <el-select v-model="moreInfo.templateId" size="small" filterable  placeholder="模板" style="width: 100%;" :disabled="moreSelects.length==0">
                <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模板" style="width: 100%;"
                  :disabled="moreSelects.length==0">
                  <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
                </el-select>
              </el-col>
@@ -390,24 +398,20 @@
        </div>
        <div style="flex: 1;overflow-y: auto;" v-loading="productTableLoading0">
          <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="94%" tooltip-effect="dark"
          stripe
          :fit="true" border
          @select-all="handleSelectAll0"
          @select="handleSelectionChange0"
          header-row-class-name="header-class"
          :row-key="row=>row.id"
          >
            <el-table-column type="selection" width="50" >
            stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0"
            header-row-class-name="header-class" :row-key="row=>row.id" @filter-change="filterHandler">
            <el-table-column type="selection" width="50">
            </el-table-column>
            <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
              show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip :filters="filters0"
              :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" show-overflow-tooltip
              :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass" filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip :filters="filters"
              :filter-method="filterHandler"></el-table-column>
              :filter-multiple="false" column-key="sonLaboratory" filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="ask" label="要求值" min-width="200px"></el-table-column>
            <el-table-column prop="tell" label="要求描述" min-width="220px"></el-table-column>
            <el-table-column prop="method" label="试验方法" width="200"></el-table-column>
            <el-table-column prop="methodS" label="试验方法" width="200"></el-table-column>
            <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="price" label="单价(元)" width="120"></el-table-column>
            <el-table-column prop="manHour" label="工时系数" width="120"></el-table-column>
@@ -419,44 +423,12 @@
            </el-table-column>
            <el-table-column prop="section" label="区间" width="120" show-overflow-tooltip></el-table-column>
          </el-table>
          <el-pagination
        style="position: absolute;right: 16px;bottom: 4px;"
          @current-change="handleCurrentChange0"
          :current-page="currentPage0"
          layout="total, prev, pager, next, jumper"
          :page-size="50"
          :total="total0">
        </el-pagination>
          <el-pagination style="position: absolute;right: 16px;bottom: 4px;" @current-change="handleCurrentChange0"
            :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0">
          </el-pagination>
        </div>
      </div>
    </el-dialog>
    <!-- <el-dialog title="新增标准" :visible.sync="addStandardDia" width="400px">
      <div class="body">
        <el-row style="line-height: 50px;">
          <el-col :span="6" style="text-align: right;">
            <span class="required-span">* </span>标准名称:
          </el-col>
          <el-col :span="16" :offset="1">
            <el-select v-model="standardId" size="small" style="width: 100%;" clearable>
              <el-option v-for="(a, ai) in standardEnum" :key="ai" :value="a.value" :label="a.label"></el-option>
            </el-select>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addStandardDia = false">取 消</el-button>
        <el-button type="primary" @click="addStandardMethodList" :loading="addLoad2">确 定</el-button>
      </span>
    </el-dialog> -->
    <!-- <el-dialog title="新增项目" :visible.sync="addProductDia" width="70%">
      <div class="body" style="height: 60vh;" v-if="addProductDia">
        <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData" />
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addProductDia = false">取 消</el-button>
        <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">确 定</el-button>
      </span>
    </el-dialog> -->
    <el-dialog title="区间设置" :visible.sync="sectionUpDia" width="70%">
      <div class="body" style="padding: 5px 0;">
        <el-table :data="sectionList" border style="width: 100%" height="350px">
@@ -586,41 +558,71 @@
        sectionRow: null,
        sectionList: [],
        templateList: [],
        total:0,
        currentPage:1,
        total: 0,
        currentPage: 1,
        standardId: 0,
        moreEdit:false,
        moreEditLoad:false,
        moreSelects:[],
        total0:0,
        currentPage0:1,
        moreEdit: false,
        moreEditLoad: false,
        moreSelects: [],
        total0: 0,
        currentPage0: 1,
        productList0: [],
        moreInfo:{
          ask:'',
          tell:'',
          methodS:'',
          price:'',
          manHour:'',
          templateId:''
        moreInfo: {
          ask: '',
          tell: '',
          methodS: '',
          price: '',
          manHour: '',
          templateId: ''
        },
        methodList:[],
        productTableLoading0:false
        methodList: [],
        productTableLoading0: false,
        filters0: [{
            text: '测试',
            value: 0,
          },
          {
            text: '测试1',
            value: 1,
          },
          {
            text: '测试2',
            value: 2,
          }
        ],
        filters1: [{
            text: '测试',
            value: 0,
          },
          {
            text: '测试1',
            value: 1,
          },
          {
            text: '测试2',
            value: 2,
          }
        ],
        pages: 1,
        inspectionItem: null,
        inspectionItemSubclass: null,
        sonLaboratory: null
      }
    },
    watch: {
      moreEdit(val) {
        if(!val){
        if (!val) {
          this.$refs.productTable0.clearSelection()
          this.moreSelects = []
          this.currentPage0 = 1;
          this.productList0 = []
          this.moreInfo = {
            ask:'',
            tell:'',
            methodS:'',
            price:'',
            manHour:'',
            templateId:''
            ask: '',
            tell: '',
            methodS: '',
            price: '',
            manHour: '',
            templateId: ''
          }
        }
      }
@@ -640,6 +642,7 @@
      this.selectEnumByCategoryForInspectionValueType()
      this.selectEnumByCategoryForSonLaboratory()
      this.getStandardTemplate()
      this.selectStandardMethods()
    },
    methods: {
      filterNode(value, data) {
@@ -1102,6 +1105,7 @@
        this.addProductDia = false
      },
      rowClick(row, column, event) {
        this.currentPage = 1;
        this.tableLoad2 = true
        this.standardId = row.id
        this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, {
@@ -1115,7 +1119,7 @@
            this.productList.forEach(a => {
              if (a.state == 1) this.toggleSelection(a)
            })
          }, 200)
          }, 300)
          this.tableLoad2 = false
        })
      },
@@ -1148,19 +1152,37 @@
          // this.$message.success('已保存')
        })
      },
      filterHandler(value, row, column) {
        const property = column['property'];
        return row[property] === value;
      filterHandler(value) {
        for (let column in value) {
          if(value[column].length === 0){
            if(column==='inspectionItem'){
              this.inspectionItem = null
            }else if(column === 'inspectionItemSubclass'){
              this.inspectionItemSubclass = null
            }else if(column === 'sonLaboratory'){
              this.sonLaboratory = null
            }
          }else{
            if(column==='inspectionItem'){
              this.inspectionItem = value[column][0]
            }else if(column === 'inspectionItemSubclass'){
              this.inspectionItemSubclass = value[column][0]
            }else if(column === 'sonLaboratory'){
              this.sonLaboratory = value[column][0]
            }
          }
          this.getList()
        }
      },
      handleAll(e) {
        if (e.length > 0) {
          this.productList = this.productList.map(m => {
          this.productList.map(m => {
            m.state = 0
            this.upProductSelect(null, m)
            return m
          })
        } else {
          this.productList = this.productList.map(m => {
          this.productList.map(m => {
            m.state = 1
            this.upProductSelect(null, m)
            return m
@@ -1169,12 +1191,12 @@
      },
      sectionUp(row) {
        if (Array.isArray(row)) {
            // 值是一个数组
            if(row.length === 0){
              return this.$message.error('请选择检验项')
            }
            this.sectionRow = {}
            this.sectionUpDia = true
          // 值是一个数组
          if (row.length === 0) {
            return this.$message.error('请选择检验项')
          }
          this.sectionRow = {}
          this.sectionUpDia = true
        } else {
          // 值是一个对象
          this.sectionRow = row
@@ -1222,8 +1244,8 @@
          this.sectionRow.manHour = JSON.stringify(manHourList)
        }
        this.sectionLoad = true
        if(this.moreSelects.length === 0){
            this.$axios.post(this.$api.standardTree.upStandardProductList, {
        if (this.moreSelects.length === 0) {
          this.$axios.post(this.$api.standardTree.upStandardProductList, {
            id: this.sectionRow.id,
            section: this.sectionRow.section,
            ask: this.sectionRow.ask,
@@ -1243,31 +1265,34 @@
            this.$message.success('已保存')
            this.sectionUpDia = false
          })
        }else{
        } else {
          this.$axios.post(this.$api.standardTree.upStandardProducts, {
          ids:this.moreSelects.map(a=>a.id),
          standardProductList:{
            section: this.sectionRow.section,
            ask: this.sectionRow.ask,
            tell: this.sectionRow.tell,
            price: this.sectionRow.price,
            manHour: this.sectionRow.manHour
          }
            ids: this.moreSelects.map(a => a.id),
            standardProductList: {
              section: this.sectionRow.section,
              ask: this.sectionRow.ask,
              tell: this.sectionRow.tell,
              price: this.sectionRow.price,
              manHour: this.sectionRow.manHour
            }
          }, {
            headers: {
              'Content-Type': 'application/json'
            }
          }).then(res => {
          this.sectionLoad = false
          if (res.code == 201) {
            this.$message.error('未保存')
            return
          }
          this.$message.success('已保存')
          this.sectionUpDia = false
          this.currentPage0 = 1;
          this.getList()
        })
            this.sectionLoad = false
            if (res.code == 201) {
              this.$message.error('未保存')
              return
            }
            this.$message.success('已保存')
            this.sectionUpDia = false
            this.currentPage0 = 1;
            this.getList()
            this.rowClick({
              id: this.standardId
            })
          })
        }
      },
      getStandardTemplate() {
@@ -1292,12 +1317,11 @@
          this.tableLoad2 = false
        })
      },
      async handleMore(){
        if((!this.standardId&&this.standardId!=0)||this.standardList.length==0){
      async handleMore() {
        if ((!this.standardId && this.standardId != 0) || this.standardList.length == 0) {
          return this.$message.error('请选择实验室、样品')
        }
        await this.getList()
        this.selectStandardMethods()
        this.moreEdit = true
      },
      selectStandardMethods() {
@@ -1312,19 +1336,19 @@
          this.methodList = data
        })
      },
      subMoreEdit(){
        if(this.moreSelects.length===0){
      subMoreEdit() {
        if (this.moreSelects.length === 0) {
          return this.$message.error('请选择检验项')
        }
        this.moreEditLoad = true
        this.$axios.post(this.$api.standardTree.upStandardProducts, {
          ids:this.moreSelects.map(a=>a.id),
          standardProductList:this.moreInfo
          }, {
            headers: {
              'Content-Type': 'application/json'
            }
          }).then(res => {
          ids: this.moreSelects.map(a => a.id),
          standardProductList: this.moreInfo
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.moreEditLoad = false
          if (res.code == 201) {
            this.$message.error('未保存')
@@ -1333,6 +1357,9 @@
          this.$message.success('已保存')
          this.currentPage0 = 1;
          this.getList()
          this.rowClick({
            id: this.standardId
          })
          // this.moreInfo = {
          //   ask:'',
          //   tell:'',
@@ -1343,49 +1370,76 @@
          // }
        })
      },
      handleSelectAll0(rows){
        if(rows.length){
          rows.forEach(a=>{
            if(!this.moreSelects.find(b=>a.id===b.id)){
      handleSelectAll0(rows) {
        if (rows.length) {
          rows.forEach(a => {
            if (!this.moreSelects.find(b => a.id === b.id)) {
              this.moreSelects.push(a)
            }
          })
        }else{
          this.productList0.forEach(a=>{
            this.moreSelects = this.moreSelects.filter(b=>b.id!=a.id )
        } else {
          this.productList0.forEach(a => {
            this.moreSelects = this.moreSelects.filter(b => b.id != a.id)
          })
        }
      },
      handleSelectionChange0(val,row){
        if(this.moreSelects.find(a=>a.id===row.id)){
          this.moreSelects = this.moreSelects.filter(a=>a.id!=row.id)
        }else{
      handleSelectionChange0(val, row) {
        if (this.moreSelects.find(a => a.id === row.id)) {
          this.moreSelects = this.moreSelects.filter(a => a.id != row.id)
        } else {
          this.moreSelects.push(row)
        }
      },
      getList(){
      getList() {
        this.productTableLoading0 = true
        this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, {
        this.getItemEnum()
        this.$axios.post(this.$api.standardTree.selectStandardProductByMethodId, {
          id: this.standardId,
          tree: this.selectTree,
          page: this.currentPage0
          page: this.currentPage0,
          laboratory: this.sonLaboratory,
          items: this.inspectionItemSubclass,
          item: this.inspectionItem
        }).then(res => {
          this.productList0 = res.data.productList
          this.productList0 = res.data.records
          this.total0 = res.data.total
          this.productTableLoading0 = false
          this.$nextTick(()=>{
            this.productList0.forEach((a,i) => {
              if(this.moreSelects.find(b=>a.id==b.id)){
                // console.log(111111111,a)
                this.$refs.productTable0.toggleRowSelection(this.productList0[i],true)
          this.page = res.data.pages
          this.$nextTick(() => {
            this.productList0.forEach((a, i) => {
              if (this.moreSelects.find(b => a.id == b.id)) {
                this.$refs.productTable0.toggleRowSelection(this.productList0[i], true)
              }
            })
          })
        })
      },
      handleCurrentChange0(e){
      handleCurrentChange0(e) {
        this.currentPage0 = e;
        this.getList()
      },
      getItemEnum(){
        this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId,{
          id: this.standardId,
          tree: this.selectTree
        }).then(res=>{
          this.filters0 = []
          this.filters1 = []
          res.data.item.forEach(a=>{
            this.filters0.push({
              text: a.inspectionItem,
              value: a.inspectionItem
            })
          })
          res.data.items.forEach(a=>{
            if(a!=null){
              this.filters1.push({
                text: a.inspectionItemSubclass,
                value: a.inspectionItemSubclass
              })
            }
          })
        })
      }
    }
  }
src/components/view/b3-classes.vue
@@ -83,18 +83,14 @@
            v-on:mouseenter="onMouseEnter(index)"
          v-on:mouseleave="currentUserIndex=null">
              <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
                <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}">
                  <!-- <div class="work-box-left">
                    <span>{{ getShiftByDic(m.shift) }}</span>
                  </div> -->
                  <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower">
                    <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> -->
                <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower">
                    <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}">
                    <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='无'?0:1};`">{{ getShiftByDic(m.shift) }}</span>
                  </div>
                    <el-dropdown-menu slot="dropdown">
                      <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item>
                    </el-dropdown-menu>
                  </el-dropdown>
                </div>
              </div>
            </div>
          </div>
@@ -767,7 +763,7 @@
  display: flex;
  align-items: center;
  justify-content: space-around;
  background: #F5F7FB;
  background: #edeff2;
  border-radius: 8px 8px 8px 8px;
  color: #999;
  font-size: 14px;
@@ -869,7 +865,7 @@
  margin-left: 10px;
}
.hoverType{
  background: rgba(58,123,250,0.05);
  background: rgba(58,123,250,0.03);
}
.year-table{
  width: 100%;
src/components/view/b4-daily-business-statistics.vue
@@ -151,8 +151,9 @@
    }
  },
  mounted(){
    this.init()
    this.timers&&clearInterval(this.timers);
    setInterval(this.init,1000*60*5)
    setInterval(this.init(),1000*60*5)
  },
  methods:{
    init(){
src/components/view/b4-inspection-item-statistics.vue
@@ -190,9 +190,9 @@
      }
    },
    mounted(){
      // this.init()
      this.init()
      this.timers&&clearInterval(this.timers);
      setInterval(this.init,1000*60*5)
      setInterval(this.init(),1000*60*5)
    },
    methods:{
      init(){
src/components/view/b4-sample-defects.vue
@@ -73,6 +73,7 @@
      <el-table
        :data="tableData"
        style="width: 100%;margin-bottom: 10px;height: calc(100% - 40px);"
        height="calc(100% - 40px)"
        row-key="id"
        v-loading="loading"
        border
src/components/view/person-manage.vue
@@ -174,7 +174,7 @@
          <el-button size="small" @click="refresh()">重 置</el-button>
          <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
        </div>
        <div class="search_thing">
        <div class="search_thing" style="display: flex;justify-content: right;margin-right: 10px;">
          <el-button size="small" type="primary" @click="openthirdParty" v-if="addUserPower">获取三方人员</el-button>
          <el-button size="small" type="primary" @click="opeaAdd" v-if="addPower">新增用户</el-button>
        </div>
@@ -184,7 +184,7 @@
          :componentData="componentData" :key="upIndex" />
      </div>
    </div>
    <el-dialog title="架构新增" :visible.sync="addDia0" width="400px">
    <el-dialog title="架构新增" :visible.sync="addDia" width="400px">
      <div class="body">
        <el-row style="line-height: 50px;">
          <el-col :span="6" style="text-align: right;">
@@ -196,7 +196,7 @@
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia0 = false">取 消</el-button>
        <el-button @click="addDia = false">取 消</el-button>
        <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
      </span>
    </el-dialog>
@@ -204,7 +204,7 @@
      <div class="body">
        <el-row>
          <el-col :span="9" style="height: 70vh;overflow: hidden;">
            <el-input placeholder="输入关键字进行过滤" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;"
            <el-input placeholder="输入关键字搜索" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;"
              clearable @blur="searchFilter2" @clear="searchFilter2" @keyup.enter.native="searchFilter2()">
            </el-input>
            <el-tree :data="datathirdParty" node-key="id" :props="defaultProps" @node-click="nodeClick2"
@@ -289,7 +289,8 @@
            font: '编辑',
            type: 'text',
            method: 'doDiy',
            field: ['createUserName', 'updateUserName', 'roleName', '角色=roleId', '密码=password']
            field: ['createUserName', 'updateUserName', 'roleName', '角色=roleId', '密码=password',
            '姓名EN=nameEn','年龄=age','邮箱=email','单位=company','签名=pictureUrl','本人照=signatureUrl']
          }],
          tagField: {
            state: {
@@ -477,7 +478,7 @@
          if (power[i].menuMethod == 'delDepartment') {
            delStandardTree = true
          }
          if (power[i].menuMethod == 'addPersonUser') {
          if (power[i].menuMethod == 'selectCompaniesList') {
            addUserPower = true
          }
        }
@@ -630,11 +631,11 @@
        }
        let arr = []
        this.currentCompaniesList.forEach(b=>{
          this.companiesList.forEach(a=>{
          /* this.companiesList.forEach(a=>{
            if(a.companyId===b){
              console.log(a)
            }
          })
          }) */
          let obj = this.companiesList.find(a=>a.companyId==b)
          arr.push(obj)
          })
@@ -652,10 +653,13 @@
            return
          }
          this.$message.success('操作成功')
          this.refresh()
          this.multipleSelection = []
          this.$refs.personTable.clearSelection()
          this.addthirdParty = false
          this.addLoad = false
          this.personList = []
          this.userSearch2 = ''
          this.refresh()
        }).catch(e => {
          this.addthirdParty = false
          this.addLoad = false
static/js/menu.js
@@ -298,7 +298,7 @@
            i: "font icon-erjidaohang",
            u: "a6-personnel-detail",
            g: "6.2 人员",
            p: "selectUserList"
            p: "selectDepartmentLim"
        }, {
            v: "人员培训",
            i: "font icon-erjidaohang",