吴羡
10 小时以前 57067e7107abc6d7b921ca9ba1dc46b4b4107c95
Merge remote-tracking branch 'origin/master'
已修改12个文件
89 ■■■■■ 文件已修改
src/api/system/menu.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/process/disposal/sampleReceipt/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/process/reportResults/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionReview/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionTask/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/components/addOrder.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/productOrder/index.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/reportPreparation/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/laboratory/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/sealManage/usageLedger/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/menu.js
@@ -28,7 +28,7 @@
// 根据角色ID查询菜单下拉树结构
export function roleMenuTreeselect(roleId) {
  return request({
    url: '/system/menu/roleMenuTreeselect/' + roleId,
    url: roleId == null ? '/system/menu/roleMenuTreeselect' : '/system/menu/roleMenuTreeselect/' + roleId,
    method: 'get'
  })
}
@@ -66,4 +66,4 @@
    url: '/system/menu/' + menuId,
    method: 'delete'
  })
}
}
src/store/modules/user.js
@@ -22,6 +22,16 @@
      permissions: []
    }),
    actions: {
      // 更新按钮权限,不重复触发登录时的密码提示。
      async refreshPermissions() {
        const token = this.token
        const res = await getInfo()
        if (this.token === token) {
          this.roles = res.roles?.length ? res.roles : ['ROLE_DEFAULT']
          this.permissions = res.permissions || []
        }
        return res
      },
      // 登录
      login(userInfo) {
        const username = userInfo.username.trim()
src/views/CNAS/process/disposal/sampleReceipt/index.vue
@@ -145,6 +145,7 @@
        { label: '样品编号', prop: 'sampleCode' },
        { label: '检测项目', prop: 'inspectionItem', dataType: 'slot', slot: 'inspectionItem', width: '220px' },
        { label: '委托编号', prop: 'entrustCode' },
        { label: '送样时间', prop: 'sampleDate', width: '110px', formatData: value => value || '—' },
        { label: '方法标准', prop: 'methodStandard' },
        { label: '主检人签字', prop: 'mainInspectorName' },
        { label: '备注', prop: 'remark', dataType: 'slot', slot: 'remark', width: '180px' },
src/views/CNAS/process/reportResults/index.vue
@@ -164,6 +164,7 @@
      tableData: [],
      column: [
        { label: "检验报告编号", prop: "insReportCode" },
        { label: "送样时间", prop: "sampleDate", width: "110px", formatData: value => value || '—' },
        { label: "发往何处", prop: "send" },
        { label: "发送方式", prop: "method" },
        { label: "发送日期", prop: "sendTime" },
src/views/business/inspectionReview/index.vue
@@ -96,6 +96,7 @@
          linkMethod: "selectAllByOne",
        },
        {label: "样品名称", prop: "sample", width: "160px"},
        {label: "送样时间", prop: "sampleDate", width: "110px", formatData: value => value || '—'},
        // {
        //   label: '物料属性',
        //   prop: 'materialProp',
src/views/business/inspectionTask/index.vue
@@ -364,6 +364,7 @@
          linkMethod: "selectAllByOne",
        },
        { label: "监控项目", prop: "monitorProject", width: "150px" },
        { label: "送样时间", prop: "sampleDate", width: "110px", formatData: value => value || '—' },
        { label: "计划期限", prop: "dueDate", width: "120px" },
        { label: "样品名称", prop: "sample", width: "160px" },
        {
src/views/business/productOrder/components/addOrder.vue
@@ -136,7 +136,7 @@
            </el-col>
            <el-col :span="6">
              <el-form-item label="送样日期" prop="sampleDate">
                <el-date-picker v-model="addObj.sampleDate" type="date" value-format="YYYY-MM-DD" :disabled="active>1"
                <el-date-picker v-model="addObj.sampleDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择本次送样日期" :disabled="active>1"
                                size="small"/>
              </el-form-item>
            </el-col>
@@ -1671,6 +1671,11 @@
      }
    },
    saveMethod(sampleList) {
      if (!this.addObj.sampleDate && !this.isEdit) {
        this.$refs.newJuOrder?.validateField('sampleDate')
        this.$message.warning('请选择本次送样日期')
        return
      }
      if (this.addObj.standardTreeId) {
        this.saveData([]);
        return;
@@ -1705,6 +1710,11 @@
      }
    },
    saveData(sampleList) {
      if (!this.addObj.sampleDate && !this.isEdit) {
        this.$refs.newJuOrder?.validateField('sampleDate')
        this.$message.warning('请选择本次送样日期')
        return
      }
      this.saveLoad = true
      const insOrder = {
        ...this.addObj,
@@ -2185,14 +2195,17 @@
    },
    // 查询模板
    selectInsOrderTemplateById(e) {
      const loadVersion = ++this.orderLoadVersion
      selectInsOrderTemplateById({id: e}).then(res => {
        if (loadVersion !== this.orderLoadVersion || this.template !== e) return
        const detail = res.data || {}
        let obj = JSON.parse(detail.thing)
        //制单人设置为当前登录用户
        let user = this.nickName
        obj.addObj.custom = user.name
        obj.addObj.userId = user.userId
        this.addObj = obj.addObj;
        this.addObj = {...obj.addObj, sampleDate: null};
        this.$nextTick(() => this.$refs.newJuOrder?.clearValidate('sampleDate'))
        this.sampleList = obj.sampleList;
        this.selectTree = obj.selectTree
        // backend already resolved the bound record templates by standard
src/views/business/productOrder/index.vue
@@ -45,7 +45,7 @@
          <ul class="tab">
            <li :class="{ active: tabIndex === 7 }" v-if="checkPermi(['get:insOrder:all'])" @click="handleTab(7)">全部</li>
            <li :class="{ active: tabIndex === 1 }" v-if="checkPermi(['get:insOrder:checkout'])" @click="handleTab(1)">检验中</li>
            <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])" @click="handleTab(2)">委托已检</li>
            <li :class="{ active: tabIndex === 2 }" v-if="checkPermi(['get:insOrder:customerOrdered'])" @click="handleTab(2)">已检</li>
            <li :class="{ active: tabIndex === 4 }" v-if="checkPermi(['get:insOrder:sendBack'])" @click="handleTab(4)">退回</li>
            <li :class="{ active: tabIndex === 5 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(5)">撤销</li>
            <li :class="{ active: tabIndex === 6 }" v-if="checkPermi(['get:insOrder:revocation'])" @click="handleTab(6)">作废</li>
@@ -288,6 +288,7 @@
} from "@/api/business/productOrder";
import { downFile, getFileList } from "@/api/business/rawMaterialOrder";
import {mapGetters} from "@/utils/store-compat";
import useUserStore from '@/store/modules/user'
export default {
  name: 'ProductOrder',
  components: {
@@ -442,7 +443,7 @@
                this.handleDelete(row);
              },
              showHide: (row) => {
                return this.tabIndex === 4 || this.tabIndex === 5
                return this.checkPermi(['delete:insOrder'])
              }
            },
            {
@@ -573,7 +574,7 @@
          value: 1
        },
        {
          label: '委托已检',
          label: '已检',
          value: 4
        },
        {
@@ -630,25 +631,20 @@
    ...mapGetters(["nickName"]),
  },
  mounted() {
    useUserStore().refreshPermissions().catch(() => {})
    // 免审核后没有待审核页签,默认进入全部
    this.tabIndex = this.checkPermi(['get:insOrder:all']) ? 7 : 1
    this.refreshTable()
  },
  activated() {
    useUserStore().refreshPermissions().catch(() => {})
    this.refreshTable()
  },
  methods: {
    // 查询列表数据
    refreshTable() {
      if (this.tabIndex !== 2 && this.tabIndex !== 3) {
        this.entity.orderType = ''
      } else {
        if (this.tabIndex === 2) {
          this.entity.orderType = 'Customer-ordered test'
        } else {
          this.entity.orderType = '抽检'
        }
      }
      // 已检按报告批准后的订单状态查询,不限制检验类别。
      this.entity.orderType = this.tabIndex === 3 ? '抽检' : ''
      const params = { ...this.entity, state: this.tabList[this.tabIndex].value }
      this.isLoading = true; // 开始加载
      selectInsOrderParameter({...this.page,...params}).then(res => {
@@ -1074,16 +1070,16 @@
      this.InspectionKey++
    },
    handleDelete(row) {
      this.$confirm('是否删除当前数据?', "警告", {
        confirmButtonText: "确定",
      if (!this.checkPermi(['delete:insOrder'])) return
      this.$confirm(`确定永久删除委托单“${row.entrustCode || row.code || row.id}”吗?该委托的样品接收、检验任务、原始记录、报告(含已批准报告)、附件记录及其他关联业务记录将一并删除,删除后无法恢复。`, "删除委托单", {
        confirmButtonText: "确认删除",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        delInsOrder({ insOrderId: row.id }).then(res => {
        return delInsOrder({ insOrderId: row.id }).then(res => {
          this.multipleSelection = this.multipleSelection.filter(item => item.id !== row.id)
          this.$message.success('删除成功')
          this.refreshTable()
        }).catch(e => {
          this.$message.error('删除失败')
        })
      }).catch(() => { })
    }
src/views/business/reportPreparation/index.vue
@@ -568,6 +568,7 @@
          },
        },
        {label: "创建时间", prop: "createTime"},
        {label: "送样时间", prop: "sampleDate", width: "110px", formatData: value => value || '—'},
        {label: "提交人", prop: "writeUserName"},
        {label: "提交时间", prop: "writeTime"},
        {
src/views/structural/capabilityAndLaboratory/laboratory/index.vue
@@ -62,8 +62,8 @@
              <p style="line-height: 26px">
                资质名称:<span style="color: var(--el-color-primary)">{{ m.name }}</span>
              </p>
              <p style="line-height: 26px">颁发时间:{{ m.recentlyTime }}</p>
              <p style="line-height: 26px">到期时间:{{ m.expireTime }}</p>
              <p style="line-height: 26px">颁发时间:{{ formatDate(m.dateOfIssuance) }}</p>
              <p style="line-height: 26px">到期时间:{{ formatDate(m.expireTime) }}</p>
              <p>
                <span>状态:</span>
                <el-tag :type="m.state === 0 ? 'danger' : 'success'" size="small">{{ m.state === 0 ? "失效" : "有效"
@@ -167,6 +167,10 @@
} from "@/api/structural/laboratory";
import { getToken } from "@/utils/auth";
function formatDate(value) {
  return value ? String(value).slice(0, 10) : "";
}
export default {
  name: 'Laboratory',
  components: {
@@ -186,9 +190,8 @@
        { label: "资质编码", prop: "code" },
        { label: "颁发机构", prop: "organization" },
        { label: "资质说明", prop: "explanation" },
        { label: "首次颁发时间", prop: "firstIssuanceDate" },
        { label: "最近颁发时间", prop: "latestIssuanceDate" },
        { label: "到期颁发时间", prop: "expireTime" },
        { label: "颁发时间", prop: "dateOfIssuance", formatData: formatDate },
        { label: "到期时间", prop: "expireTime", formatData: formatDate },
        {
          dataType: "action",
          label: "操作",
@@ -257,6 +260,7 @@
    this.refreshTable();
  },
  methods: {
    formatDate,
    selectorSwitch(radio) {
      if (radio === 1) {
        this.reloadOverview();
src/views/structural/sealManage/usageLedger/index.vue
@@ -132,6 +132,7 @@
        { label: '印章名称', prop: 'sealNames', dataType: 'slot', slot: 'sealNames', minWidth: '210px' },
        { label: '检测项目名称', prop: 'projectName', dataType: 'slot', slot: 'projectName', minWidth: '180px' },
        { label: '报告编号', prop: 'reportCode', minWidth: '180px' },
        { label: '送样时间', prop: 'sampleDate', width: '110px', formatData: value => value || '—' },
        { label: '份数', prop: 'copies', dataType: 'slot', slot: 'copies', width: '120px' },
        { label: '用印人签字', prop: 'useUserName', width: '140px' }
      ]
src/views/system/role/index.vue
@@ -243,7 +243,8 @@
<script setup name="Role">
import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole, deptTreeSelect } from "@/api/system/role"
import { roleMenuTreeselect, treeselect as menuTreeselect } from "@/api/system/menu"
import { roleMenuTreeselect } from "@/api/system/menu"
import useUserStore from '@/store/modules/user'
const router = useRouter()
const { proxy } = getCurrentInstance()
@@ -377,8 +378,8 @@
/** 查询菜单树结构 */
function getMenuTreeselect() {
  menuTreeselect().then(response => {
    menuOptions.value = response.data
  roleMenuTreeselect().then(response => {
    menuOptions.value = response.menus
  })
}
@@ -513,6 +514,7 @@
      if (form.value.roleId != undefined) {
        form.value.menuIds = getMenuAllCheckedKeys()
        updateRole(form.value).then(() => {
          useUserStore().refreshPermissions().catch(() => {})
          proxy.$modal.msgSuccess("修改成功")
          open.value = false
          getList()