|
@@ -3,72 +3,86 @@
|
|
<div class="hc-layout-left-box">
|
|
<div class="hc-layout-left-box">
|
|
<div class="user-avatar-box">
|
|
<div class="user-avatar-box">
|
|
<div v-loading="avatarLoading" class="user-avatar">
|
|
<div v-loading="avatarLoading" class="user-avatar">
|
|
- <img :src="userInfo['avatar'] || avatarPng" alt="" crossOrigin="anonymous"/>
|
|
|
|
|
|
+ <img :src="userInfo.avatar || avatarPng" alt="" crossOrigin="anonymous">
|
|
<div class="user-avatar-upload">
|
|
<div class="user-avatar-upload">
|
|
- <el-upload :accept="accept" :action="action" :before-upload="beforeUpload" :data="upData"
|
|
|
|
- :headers="getTokenHeader()" :on-error="uploadError" :on-success="uploadFinish"
|
|
|
|
- :show-file-list="false" class="upload-dom">
|
|
|
|
- <HcIcon fill name="camera"/>
|
|
|
|
|
|
+ <el-upload
|
|
|
|
+ :accept="accept" :action="action" :before-upload="beforeUpload" :data="upData"
|
|
|
|
+ :headers="getTokenHeader()" :on-error="uploadError" :on-success="uploadFinish"
|
|
|
|
+ :show-file-list="false" class="upload-dom"
|
|
|
|
+ >
|
|
|
|
+ <HcIcon fill name="camera" />
|
|
</el-upload>
|
|
</el-upload>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="user-name truncate">{{ userInfo['real_name'] || '游客' }}</div>
|
|
|
|
|
|
+ <div class="user-name truncate">{{ userInfo.real_name || '游客' }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="user-menu-box">
|
|
<div class="user-menu-box">
|
|
<el-scrollbar>
|
|
<el-scrollbar>
|
|
- <HcMenuSimple :datas="menuOptions" :keys="menuKey" @change="handleMenuValue"/>
|
|
|
|
|
|
+ <HcMenuSimple :datas="menuOptions" :keys="menuKey" @change="handleMenuValue" />
|
|
</el-scrollbar>
|
|
</el-scrollbar>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hc-layout-content-box">
|
|
<div class="hc-layout-content-box">
|
|
- <HcCard v-if="menuKey !== 'log' && menuKey !== 'recycle'" :title="menuItem.label" :ui="basicHight?'basic-hight':''"
|
|
|
|
- scrollbar>
|
|
|
|
|
|
+ <HcCard
|
|
|
|
+ v-if="menuKey !== 'log' && menuKey !== 'recycle'" :title="menuItem.label" :ui="basicHight ? 'basic-hight' : ''"
|
|
|
|
+ scrollbar
|
|
|
|
+ >
|
|
<template #extra>
|
|
<template #extra>
|
|
- <span v-if="menuKey === 'basic' && !basicFormEdit" class="text-link"
|
|
|
|
- @click="basicFormEditClick">编辑</span>
|
|
|
|
- <span v-if="menuKey === 'project'" class="text-link"
|
|
|
|
- @click="setDefaultProjectClick">设置默认项目</span>
|
|
|
|
|
|
+ <span
|
|
|
|
+ v-if="menuKey === 'basic' && !basicFormEdit" class="text-link"
|
|
|
|
+ @click="basicFormEditClick"
|
|
|
|
+ >编辑</span>
|
|
|
|
+ <span
|
|
|
|
+ v-if="menuKey === 'project'" class="text-link"
|
|
|
|
+ @click="setDefaultProjectClick"
|
|
|
|
+ >设置默认项目</span>
|
|
</template>
|
|
</template>
|
|
<template v-if="menuKey === 'basic'">
|
|
<template v-if="menuKey === 'basic'">
|
|
- <el-form ref="formUserRef" :model="formUserModel" :rules="formUserRules" label-position="top"
|
|
|
|
- size="large">
|
|
|
|
|
|
+ <el-form
|
|
|
|
+ ref="formUserRef" :model="formUserModel" :rules="formUserRules" label-position="top"
|
|
|
|
+ size="large"
|
|
|
|
+ >
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="用户名称">
|
|
<el-form-item label="用户名称">
|
|
- <el-input v-model="formUserModel.real_name" disabled/>
|
|
|
|
|
|
+ <el-input v-model="formUserModel.real_name" disabled />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="登录账号">
|
|
<el-form-item label="登录账号">
|
|
- <el-input v-model="formUserModel.account" disabled placeholder=""/>
|
|
|
|
|
|
+ <el-input v-model="formUserModel.account" disabled placeholder="" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="身份证号">
|
|
<el-form-item label="身份证号">
|
|
- <el-input v-model="formUserModel.idNumber" disabled placeholder=""/>
|
|
|
|
|
|
+ <el-input v-model="formUserModel.idNumber" disabled placeholder="" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
- <el-form-item :prop="basicFormEdit?'phone':''" label="绑定手机">
|
|
|
|
- <el-input v-model="formUserModel.phone" :disabled="!basicHight"
|
|
|
|
- placeholder="请输入绑定手机"/>
|
|
|
|
|
|
+ <el-form-item :prop="basicFormEdit ? 'phone' : ''" label="绑定手机">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="formUserModel.phone" :disabled="!basicHight"
|
|
|
|
+ placeholder="请输入绑定手机"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="所属角色">
|
|
<el-form-item label="所属角色">
|
|
- <el-input v-model="formUserModel.roleName" disabled placeholder=""/>
|
|
|
|
|
|
+ <el-input v-model="formUserModel.roleName" disabled placeholder="" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="所属部门">
|
|
<el-form-item label="所属部门">
|
|
- <el-input v-model="formUserModel.deptId" disabled placeholder=""/>
|
|
|
|
|
|
+ <el-input v-model="formUserModel.deptId" disabled placeholder="" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="CA签字体">
|
|
<el-form-item label="CA签字体">
|
|
- <el-image v-if="formUserModel?.signatureUrl" :initial-index="0"
|
|
|
|
- :preview-src-list="[formUserModel?.signatureUrl]" :src="formUserModel?.signatureUrl"
|
|
|
|
- fit="cover" style="height: 60px"/>
|
|
|
|
|
|
+ <el-image
|
|
|
|
+ v-if="formUserModel?.signatureUrl" :initial-index="0"
|
|
|
|
+ :preview-src-list="[formUserModel?.signatureUrl]" :src="formUserModel?.signatureUrl"
|
|
|
|
+ fit="cover" style="height: 60px"
|
|
|
|
+ />
|
|
<span v-else class="text-zinc-400">无CA签字体</span>
|
|
<span v-else class="text-zinc-400">无CA签字体</span>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -76,19 +90,27 @@
|
|
</el-form>
|
|
</el-form>
|
|
</template>
|
|
</template>
|
|
<template v-if="menuKey === 'password'">
|
|
<template v-if="menuKey === 'password'">
|
|
- <el-form ref="formUserPassRef" :model="formUserPassModel" :rules="formUserPassRules" label-position="top"
|
|
|
|
- size="large" style="max-width: 400px; margin: auto;">
|
|
|
|
|
|
+ <el-form
|
|
|
|
+ ref="formUserPassRef" :model="formUserPassModel" :rules="formUserPassRules" label-position="top"
|
|
|
|
+ size="large" style="max-width: 400px; margin: auto;"
|
|
|
|
+ >
|
|
<el-form-item label="原始密码" prop="oldPassword">
|
|
<el-form-item label="原始密码" prop="oldPassword">
|
|
- <el-input v-model="formUserPassModel.oldPassword" placeholder="请输入原始密码"
|
|
|
|
- show-password type="password"/>
|
|
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="formUserPassModel.oldPassword" placeholder="请输入原始密码"
|
|
|
|
+ show-password type="password"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="新的密码" prop="newPassword">
|
|
<el-form-item label="新的密码" prop="newPassword">
|
|
- <el-input v-model="formUserPassModel.newPassword" placeholder="请输入新的密码"
|
|
|
|
- show-password type="password"/>
|
|
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="formUserPassModel.newPassword" placeholder="请输入新的密码"
|
|
|
|
+ show-password type="password"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="确认新密码" prop="newPassword1">
|
|
<el-form-item label="确认新密码" prop="newPassword1">
|
|
- <el-input v-model="formUserPassModel.newPassword1" placeholder="请输入确认新密码"
|
|
|
|
- show-password type="password"/>
|
|
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="formUserPassModel.newPassword1" placeholder="请输入确认新密码"
|
|
|
|
+ show-password type="password"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</template>
|
|
</template>
|
|
@@ -96,12 +118,14 @@
|
|
<el-menu :default-active="projectKey" class="hc-project-menu" unique-opened>
|
|
<el-menu :default-active="projectKey" class="hc-project-menu" unique-opened>
|
|
<el-sub-menu v-for="item in projectContractArr" :index="item.id">
|
|
<el-sub-menu v-for="item in projectContractArr" :index="item.id">
|
|
<template #title>
|
|
<template #title>
|
|
- <HcIcon class="hc-menu-icon" name="folder-2"/>
|
|
|
|
|
|
+ <HcIcon class="hc-menu-icon" name="folder-2" />
|
|
<span>{{ item?.name }}</span>
|
|
<span>{{ item?.name }}</span>
|
|
</template>
|
|
</template>
|
|
- <el-menu-item v-for="items in item?.contractInfoList ?? []" :index="items?.id"
|
|
|
|
- @click="projectMenuValue(item,items)">
|
|
|
|
- <HcIcon v-if="projectKey === items?.id" class="hc-menu-icon" fill name="star"/>
|
|
|
|
|
|
+ <el-menu-item
|
|
|
|
+ v-for="items in item?.contractInfoList ?? []" :index="items?.id"
|
|
|
|
+ @click="projectMenuValue(item, items)"
|
|
|
|
+ >
|
|
|
|
+ <HcIcon v-if="projectKey === items?.id" class="hc-menu-icon" fill name="star" />
|
|
<span>{{ items?.name }}</span>
|
|
<span>{{ items?.name }}</span>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
</el-sub-menu>
|
|
</el-sub-menu>
|
|
@@ -110,11 +134,11 @@
|
|
</HcCard>
|
|
</HcCard>
|
|
<div v-if="basicFormEdit" class="hc-card-foot-box">
|
|
<div v-if="basicFormEdit" class="hc-card-foot-box">
|
|
<el-button :loading="saveUserLoading" hc-btn type="primary" @click="saveUserInfoClick">
|
|
<el-button :loading="saveUserLoading" hc-btn type="primary" @click="saveUserInfoClick">
|
|
- <HcIcon name="save"/>
|
|
|
|
|
|
+ <HcIcon name="save" />
|
|
<span>保存</span>
|
|
<span>保存</span>
|
|
</el-button>
|
|
</el-button>
|
|
<el-button hc-btn @click="cancelUserClick">
|
|
<el-button hc-btn @click="cancelUserClick">
|
|
- <HcIcon name="close"/>
|
|
|
|
|
|
+ <HcIcon name="close" />
|
|
<span>取消</span>
|
|
<span>取消</span>
|
|
</el-button>
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
@@ -122,97 +146,114 @@
|
|
<template #search>
|
|
<template #search>
|
|
<div class="flex items-center">
|
|
<div class="flex items-center">
|
|
<div class="w-32">
|
|
<div class="w-32">
|
|
- <el-select v-model="searchLogForm.operationModule" clearable placeholder="业务模块"
|
|
|
|
- @change="BusinessModuleValue">
|
|
|
|
- <el-option v-for="item in operationModuleData" :key="item.value"
|
|
|
|
- :label="item?.dictValue" :value="item?.dictKey"/>
|
|
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="searchLogForm.operationModule" clearable placeholder="业务模块"
|
|
|
|
+ @change="BusinessModuleValue"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in operationModuleData" :key="item.value"
|
|
|
|
+ :label="item?.dictValue" :value="item?.dictKey"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div class="w-32 ml-2">
|
|
<div class="w-32 ml-2">
|
|
- <el-select v-model="searchLogForm.operationView" clearable placeholder="页面"
|
|
|
|
- @change="OperationViewValue">
|
|
|
|
- <el-option v-for="item in operationViewData" :key="item.value" :label="item?.dictValue"
|
|
|
|
- :value="item?.dictKey"/>
|
|
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="searchLogForm.operationView" clearable placeholder="页面"
|
|
|
|
+ @change="OperationViewValue"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in operationViewData" :key="item.value" :label="item?.dictValue"
|
|
|
|
+ :value="item?.dictKey"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div class="w-40 ml-2">
|
|
<div class="w-40 ml-2">
|
|
<el-select v-model="searchLogForm.operationType" clearable placeholder="操作类型">
|
|
<el-select v-model="searchLogForm.operationType" clearable placeholder="操作类型">
|
|
- <el-option v-for="item in operationTypeData" :key="item.value" :label="item?.dictValue"
|
|
|
|
- :value="item?.dictKey"/>
|
|
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in operationTypeData" :key="item.value" :label="item?.dictValue"
|
|
|
|
+ :value="item?.dictKey"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div class="w-20 ml-2">
|
|
<div class="w-20 ml-2">
|
|
<el-select v-model="searchLogForm.operationMedium" clearable placeholder="设备">
|
|
<el-select v-model="searchLogForm.operationMedium" clearable placeholder="设备">
|
|
- <el-option v-for="item in deviceData" :key="item.value" :label="item?.label"
|
|
|
|
- :value="item?.value"/>
|
|
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in deviceData" :key="item.value" :label="item?.label"
|
|
|
|
+ :value="item?.value"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div class="w-64 ml-2">
|
|
<div class="w-64 ml-2">
|
|
- <HcDatePicker :dates="betweenTime" clearable @change="betweenDateUpdate"/>
|
|
|
|
|
|
+ <HcDatePicker :dates="betweenTime" clearable @change="betweenDateUpdate" />
|
|
</div>
|
|
</div>
|
|
<div class="w-60 ml-2">
|
|
<div class="w-60 ml-2">
|
|
- <el-input v-model="searchLogForm.queryValue" clearable placeholder="请输入名称关键词检索"
|
|
|
|
- @keyup="keyUpEvent"/>
|
|
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="searchLogForm.queryValue" clearable placeholder="请输入名称关键词检索"
|
|
|
|
+ @keyup="keyUpEvent"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
<div class="ml-2">
|
|
<div class="ml-2">
|
|
<el-button type="primary" @click="searchClick">
|
|
<el-button type="primary" @click="searchClick">
|
|
- <HcIcon name="search-2"/>
|
|
|
|
|
|
+ <HcIcon name="search-2" />
|
|
<span>搜索</span>
|
|
<span>搜索</span>
|
|
</el-button>
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<HcTable :column="logTableColumn" :datas="logTableData" :loading="logTableLoading">
|
|
<HcTable :column="logTableColumn" :datas="logTableData" :loading="logTableLoading">
|
|
- <template #operationContent="{row}">
|
|
|
|
|
|
+ <template #operationContent="{ row }">
|
|
<div class="text-link text-cut" @click="tableOperationContent(row)">
|
|
<div class="text-link text-cut" @click="tableOperationContent(row)">
|
|
{{ row?.operationContent }}
|
|
{{ row?.operationContent }}
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</HcTable>
|
|
</HcTable>
|
|
<template #action>
|
|
<template #action>
|
|
- <HcPages :pages="searchLogForm" @change="pageLogChange"/>
|
|
|
|
|
|
+ <HcPages :pages="searchLogForm" @change="pageLogChange" />
|
|
</template>
|
|
</template>
|
|
</HcCard>
|
|
</HcCard>
|
|
- <HcCard v-if="menuKey === 'recycle'" actionSize="lg">
|
|
|
|
|
|
+ <HcCard v-if="menuKey === 'recycle'" action-size="lg">
|
|
<template #header>
|
|
<template #header>
|
|
<div class="mr-5">{{ menuItem.label }}</div>
|
|
<div class="mr-5">{{ menuItem.label }}</div>
|
|
- <HcNewSwitch :datas="userTypeTab" :keys="userTypeKey" @change="userTypeChange"/>
|
|
|
|
|
|
+ <HcNewSwitch :datas="userTypeTab" :keys="userTypeKey" @change="userTypeChange" />
|
|
</template>
|
|
</template>
|
|
<template #extra>
|
|
<template #extra>
|
|
- <HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" @change="tabTypeChange"/>
|
|
|
|
|
|
+ <HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" @change="tabTypeChange" />
|
|
</template>
|
|
</template>
|
|
- <HcTable ref="recycleTableRef" :column="recycleTableColumn" :datas="recycleTableData"
|
|
|
|
- :loading="recycleTableLoading" isCheck @selection-change="recycleTableSelectionChange"/>
|
|
|
|
|
|
+ <HcTable
|
|
|
|
+ ref="recycleTableRef" :column="recycleTableColumn" :datas="recycleTableData"
|
|
|
|
+ :loading="recycleTableLoading" is-check @selection-change="recycleTableSelectionChange"
|
|
|
|
+ />
|
|
<template #action>
|
|
<template #action>
|
|
<div class="foot-recycle">
|
|
<div class="foot-recycle">
|
|
- <el-button :disabled="userTypeKey === '2'" :loading="recycleBtnLoading" hc-btn type="primary"
|
|
|
|
- @click="recycleBtnClick">
|
|
|
|
- <HcIcon fill name="reply"/>
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ :disabled="userTypeKey === '2'" :loading="recycleBtnLoading" hc-btn type="primary"
|
|
|
|
+ @click="recycleBtnClick"
|
|
|
|
+ >
|
|
|
|
+ <HcIcon fill name="reply" />
|
|
<span>恢复</span>
|
|
<span>恢复</span>
|
|
</el-button>
|
|
</el-button>
|
|
- <HcPages :pages="searchRecycleForm" @change="pageRecycleChange"/>
|
|
|
|
|
|
+ <HcPages :pages="searchRecycleForm" @change="pageRecycleChange" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</HcCard>
|
|
</HcCard>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <!--日志内容-->
|
|
|
|
|
|
+ <!-- 日志内容 -->
|
|
<el-dialog v-model="operationContentModal" class="hc-modal-border" title="日志内容" width="38rem">
|
|
<el-dialog v-model="operationContentModal" class="hc-modal-border" title="日志内容" width="38rem">
|
|
{{ operationContent }}
|
|
{{ operationContent }}
|
|
</el-dialog>
|
|
</el-dialog>
|
|
-
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import {ref, onMounted} from "vue";
|
|
|
|
-import {useAppStore} from "~src/store";
|
|
|
|
-import userApi from "~api/userInfo/index"
|
|
|
|
-import {useRouter, useRoute} from 'vue-router'
|
|
|
|
-import avatarPng from '~src/assets/images/avatar.png';
|
|
|
|
-import {getTokenHeader} from '~src/api/request/header';
|
|
|
|
-import {arrIndex, formValidate, getArrValue, isPhone} from "js-fast-way"
|
|
|
|
-import md5 from 'js-md5';
|
|
|
|
|
|
+import { onMounted, ref } from 'vue'
|
|
|
|
+import { useAppStore } from '~src/store'
|
|
|
|
+import userApi from '~api/userInfo/index'
|
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
|
+import avatarPng from '~src/assets/images/avatar.png'
|
|
|
|
+import { getTokenHeader } from '~src/api/request/header'
|
|
|
|
+import { arrIndex, formValidate, getArrValue, isPhone } from 'js-fast-way'
|
|
|
|
+import md5 from 'js-md5'
|
|
|
|
|
|
//初始变量
|
|
//初始变量
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
@@ -220,18 +261,18 @@ const useRoutes = useRoute()
|
|
const useAppState = useAppStore()
|
|
const useAppState = useAppStore()
|
|
|
|
|
|
//全局变量信息
|
|
//全局变量信息
|
|
-const userInfo = ref(useAppState.getUserInfo);
|
|
|
|
-const projectId = ref(useAppState.getProjectId);
|
|
|
|
-const contractId = ref(useAppState.getContractId);
|
|
|
|
-const projectContractArr = ref(useAppState.getProjectContract);
|
|
|
|
|
|
+const userInfo = ref(useAppState.getUserInfo)
|
|
|
|
+const projectId = ref(useAppState.getProjectId)
|
|
|
|
+const contractId = ref(useAppState.getContractId)
|
|
|
|
+const projectContractArr = ref(useAppState.getProjectContract)
|
|
|
|
|
|
//路由参数数据
|
|
//路由参数数据
|
|
-const routerQuery = useRoutes?.query;
|
|
|
|
|
|
+const routerQuery = useRoutes?.query
|
|
let MenuType = routerQuery?.MenuType || 'basic'
|
|
let MenuType = routerQuery?.MenuType || 'basic'
|
|
|
|
|
|
//上传组件参数
|
|
//上传组件参数
|
|
-const action = '/api/blade-resource/oss/endpoint/put-file';
|
|
|
|
-const accept = 'image/png,image/jpg,image/jpeg';
|
|
|
|
|
|
+const action = '/api/blade-resource/oss/endpoint/put-file'
|
|
|
|
+const accept = 'image/png,image/jpg,image/jpeg'
|
|
const upData = ref({})
|
|
const upData = ref({})
|
|
//上传前
|
|
//上传前
|
|
const avatarLoading = ref(false)
|
|
const avatarLoading = ref(false)
|
|
@@ -241,10 +282,10 @@ const beforeUpload = () => {
|
|
}
|
|
}
|
|
//上传完成
|
|
//上传完成
|
|
const uploadFinish = async (res) => {
|
|
const uploadFinish = async (res) => {
|
|
- const link = res?.data?.link ?? '';
|
|
|
|
- const user_id = userInfo.value?.user_id ?? '';
|
|
|
|
|
|
+ const link = res?.data?.link ?? ''
|
|
|
|
+ const user_id = userInfo.value?.user_id ?? ''
|
|
if (link) {
|
|
if (link) {
|
|
- const {error, code} = await userApi.updateUserInfo({avatar: link, id: user_id})
|
|
|
|
|
|
+ const { error, code } = await userApi.updateUserInfo({ avatar: link, id: user_id })
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
avatarLoading.value = false
|
|
avatarLoading.value = false
|
|
userInfo.value.avatar = link
|
|
userInfo.value.avatar = link
|
|
@@ -269,12 +310,12 @@ const uploadError = () => {
|
|
const menuKey = ref(MenuType)
|
|
const menuKey = ref(MenuType)
|
|
const menuItem = ref({})
|
|
const menuItem = ref({})
|
|
const menuOptions = ref([
|
|
const menuOptions = ref([
|
|
- {key: 'basic', label: '基础信息', icon: 'user-3'},
|
|
|
|
- {key: 'password', label: '密码设置', icon: 'lock-unlock'},
|
|
|
|
- {key: 'project', label: '参建项目', icon: 'folder-2'},
|
|
|
|
- {key: 'log', label: '操作日志', icon: 'file-mark'},
|
|
|
|
- {key: 'recycle', label: '回收站', icon: 'delete-bin-5'},
|
|
|
|
-]);
|
|
|
|
|
|
+ { key: 'basic', label: '基础信息', icon: 'user-3' },
|
|
|
|
+ { key: 'password', label: '密码设置', icon: 'lock-unlock' },
|
|
|
|
+ { key: 'project', label: '参建项目', icon: 'folder-2' },
|
|
|
|
+ { key: 'log', label: '操作日志', icon: 'file-mark' },
|
|
|
|
+ { key: 'recycle', label: '回收站', icon: 'delete-bin-5' },
|
|
|
|
+])
|
|
//获取菜单对象数据
|
|
//获取菜单对象数据
|
|
const menuObjItem = () => {
|
|
const menuObjItem = () => {
|
|
const index = arrIndex(menuOptions.value, 'key', menuKey.value)
|
|
const index = arrIndex(menuOptions.value, 'key', menuKey.value)
|
|
@@ -287,8 +328,8 @@ const handleMenuValue = (item) => {
|
|
router.push({
|
|
router.push({
|
|
path: useRoutes.path,
|
|
path: useRoutes.path,
|
|
query: {
|
|
query: {
|
|
- MenuType: item?.key
|
|
|
|
- }
|
|
|
|
|
|
+ MenuType: item?.key,
|
|
|
|
+ },
|
|
})
|
|
})
|
|
getPageTypeData(item?.key)
|
|
getPageTypeData(item?.key)
|
|
}
|
|
}
|
|
@@ -342,12 +383,12 @@ const formUserRules = {
|
|
callback()
|
|
callback()
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- trigger: "blur"
|
|
|
|
|
|
+ trigger: 'blur',
|
|
},
|
|
},
|
|
}
|
|
}
|
|
//获取用户信息
|
|
//获取用户信息
|
|
const queryCurrentUserData = async () => {
|
|
const queryCurrentUserData = async () => {
|
|
- const {error, code, data} = await userApi.queryCurrentUserData()
|
|
|
|
|
|
+ const { error, code, data } = await userApi.queryCurrentUserData()
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
formUserModel.value.deptId = data?.deptId || ''
|
|
formUserModel.value.deptId = data?.deptId || ''
|
|
formUserModel.value.idNumber = data?.idNumber || ''
|
|
formUserModel.value.idNumber = data?.idNumber || ''
|
|
@@ -386,12 +427,12 @@ const cancelUserClick = () => {
|
|
|
|
|
|
//保存用户信息
|
|
//保存用户信息
|
|
const saveUserInfoData = async () => {
|
|
const saveUserInfoData = async () => {
|
|
- const {phone, user_id} = formUserModel.value
|
|
|
|
|
|
+ const { phone, user_id } = formUserModel.value
|
|
if (phone && isPhone(phone)) {
|
|
if (phone && isPhone(phone)) {
|
|
saveUserLoading.value = true
|
|
saveUserLoading.value = true
|
|
- const {error, code} = await userApi.updateUserInfo({
|
|
|
|
|
|
+ const { error, code } = await userApi.updateUserInfo({
|
|
phone: phone,
|
|
phone: phone,
|
|
- id: user_id
|
|
|
|
|
|
+ id: user_id,
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
saveUserLoading.value = false
|
|
saveUserLoading.value = false
|
|
@@ -406,52 +447,52 @@ const saveUserInfoData = async () => {
|
|
|
|
|
|
//密码设置表单
|
|
//密码设置表单
|
|
const formUserPassRef = ref(null)
|
|
const formUserPassRef = ref(null)
|
|
-const formUserPassModel = ref({oldPassword: '', newPassword: '', newPassword1: ''})
|
|
|
|
|
|
+const formUserPassModel = ref({ oldPassword: '', newPassword: '', newPassword1: '' })
|
|
const formUserPassRules = {
|
|
const formUserPassRules = {
|
|
oldPassword: {
|
|
oldPassword: {
|
|
required: true,
|
|
required: true,
|
|
- trigger: "blur",
|
|
|
|
- message: "请输入原始密码"
|
|
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请输入原始密码',
|
|
},
|
|
},
|
|
newPassword: {
|
|
newPassword: {
|
|
required: true,
|
|
required: true,
|
|
validator(rule, value, callback) {
|
|
validator(rule, value, callback) {
|
|
- const pass = formUserPassModel.value.newPassword1;
|
|
|
|
|
|
+ const pass = formUserPassModel.value.newPassword1
|
|
if (!value) {
|
|
if (!value) {
|
|
- callback(new Error("请输入新的密码"))
|
|
|
|
|
|
+ callback(new Error('请输入新的密码'))
|
|
} else if (pass && value !== pass) {
|
|
} else if (pass && value !== pass) {
|
|
- callback(new Error("新的密码和确认新密码不一致"))
|
|
|
|
|
|
+ callback(new Error('新的密码和确认新密码不一致'))
|
|
}
|
|
}
|
|
callback()
|
|
callback()
|
|
},
|
|
},
|
|
- trigger: "blur"
|
|
|
|
|
|
+ trigger: 'blur',
|
|
},
|
|
},
|
|
newPassword1: {
|
|
newPassword1: {
|
|
required: true,
|
|
required: true,
|
|
validator(rule, value, callback) {
|
|
validator(rule, value, callback) {
|
|
- const pass = formUserPassModel.value.newPassword;
|
|
|
|
|
|
+ const pass = formUserPassModel.value.newPassword
|
|
if (!value) {
|
|
if (!value) {
|
|
- callback(new Error("请输入确认新密码"))
|
|
|
|
|
|
+ callback(new Error('请输入确认新密码'))
|
|
} else if (pass && value !== pass) {
|
|
} else if (pass && value !== pass) {
|
|
- callback(new Error("新的密码和确认新密码不一致"))
|
|
|
|
|
|
+ callback(new Error('新的密码和确认新密码不一致'))
|
|
}
|
|
}
|
|
callback()
|
|
callback()
|
|
},
|
|
},
|
|
- trigger: "blur"
|
|
|
|
- }
|
|
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ },
|
|
}
|
|
}
|
|
|
|
|
|
//更新密码
|
|
//更新密码
|
|
const saveUpdatePassword = async () => {
|
|
const saveUpdatePassword = async () => {
|
|
const res = await formValidate(formUserPassRef.value)
|
|
const res = await formValidate(formUserPassRef.value)
|
|
if (res) {
|
|
if (res) {
|
|
- const form = formUserPassModel.value;
|
|
|
|
|
|
+ const form = formUserPassModel.value
|
|
saveUserLoading.value = true
|
|
saveUserLoading.value = true
|
|
- const {error, code} = await userApi.updatePassword({
|
|
|
|
|
|
+ const { error, code } = await userApi.updatePassword({
|
|
oldPassword: md5(form?.oldPassword),
|
|
oldPassword: md5(form?.oldPassword),
|
|
newPassword: md5(form?.newPassword),
|
|
newPassword: md5(form?.newPassword),
|
|
newPassword1: md5(form?.newPassword1),
|
|
newPassword1: md5(form?.newPassword1),
|
|
- plaintextPassword: form?.newPassword
|
|
|
|
|
|
+ plaintextPassword: form?.newPassword,
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
saveUserLoading.value = false
|
|
saveUserLoading.value = false
|
|
@@ -459,7 +500,7 @@ const saveUpdatePassword = async () => {
|
|
formUserPassModel.value = {
|
|
formUserPassModel.value = {
|
|
oldPassword: '',
|
|
oldPassword: '',
|
|
newPassword: '',
|
|
newPassword: '',
|
|
- newPassword1: ''
|
|
|
|
|
|
+ newPassword1: '',
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
saveUserLoading.value = false
|
|
saveUserLoading.value = false
|
|
@@ -470,7 +511,7 @@ const saveUpdatePassword = async () => {
|
|
//获取默认项目
|
|
//获取默认项目
|
|
const projectKey = ref(null)
|
|
const projectKey = ref(null)
|
|
const getDefaultProject = async () => {
|
|
const getDefaultProject = async () => {
|
|
- const {error, code, data} = await userApi.getDefaultProject()
|
|
|
|
|
|
+ const { error, code, data } = await userApi.getDefaultProject()
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
projectKey.value = data['contractId']
|
|
projectKey.value = data['contractId']
|
|
}
|
|
}
|
|
@@ -489,9 +530,9 @@ const projectMenuValue = (item, items) => {
|
|
const setDefaultProjectClick = async () => {
|
|
const setDefaultProjectClick = async () => {
|
|
const pid = menuProjectId.value, cid = menuContractId.value
|
|
const pid = menuProjectId.value, cid = menuContractId.value
|
|
if (pid && cid) {
|
|
if (pid && cid) {
|
|
- const {error, code} = await userApi.setDefaultProject({
|
|
|
|
|
|
+ const { error, code } = await userApi.setDefaultProject({
|
|
projectId: pid,
|
|
projectId: pid,
|
|
- contractId: cid
|
|
|
|
|
|
+ contractId: cid,
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
window?.$message?.success('设置成功')
|
|
window?.$message?.success('设置成功')
|
|
@@ -505,13 +546,13 @@ const setDefaultProjectClick = async () => {
|
|
const searchLogForm = ref({
|
|
const searchLogForm = ref({
|
|
operationModule: null, operationView: null, operationType: null, operationMedium: null,
|
|
operationModule: null, operationView: null, operationType: null, operationMedium: null,
|
|
queryValue: null, startTime: null, endTime: null,
|
|
queryValue: null, startTime: null, endTime: null,
|
|
- current: 1, size: 10, total: 0
|
|
|
|
|
|
+ current: 1, size: 10, total: 0,
|
|
})
|
|
})
|
|
|
|
|
|
//业务模块
|
|
//业务模块
|
|
const operationModuleData = ref([])
|
|
const operationModuleData = ref([])
|
|
const queryBusinessModule = async () => {
|
|
const queryBusinessModule = async () => {
|
|
- const {error, code, data} = await userApi.queryBusinessModule()
|
|
|
|
|
|
+ const { error, code, data } = await userApi.queryBusinessModule()
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
operationModuleData.value = data
|
|
operationModuleData.value = data
|
|
} else {
|
|
} else {
|
|
@@ -528,8 +569,8 @@ const BusinessModuleValue = () => {
|
|
//页面
|
|
//页面
|
|
const operationViewData = ref([])
|
|
const operationViewData = ref([])
|
|
const queryOperationView = async () => {
|
|
const queryOperationView = async () => {
|
|
- const {error, code, data} = await userApi.queryOperationView({
|
|
|
|
- businessModule: searchLogForm.value?.operationModule || ''
|
|
|
|
|
|
+ const { error, code, data } = await userApi.queryOperationView({
|
|
|
|
+ businessModule: searchLogForm.value?.operationModule || '',
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
operationViewData.value = data
|
|
operationViewData.value = data
|
|
@@ -545,9 +586,9 @@ const OperationViewValue = () => {
|
|
//操作类型
|
|
//操作类型
|
|
const operationTypeData = ref([])
|
|
const operationTypeData = ref([])
|
|
const operationTypeStatus = async () => {
|
|
const operationTypeStatus = async () => {
|
|
- const {error, code, data} = await userApi.queryOperationTypeList({
|
|
|
|
|
|
+ const { error, code, data } = await userApi.queryOperationTypeList({
|
|
businessModule: searchLogForm.value?.operationModule || '',
|
|
businessModule: searchLogForm.value?.operationModule || '',
|
|
- operationView: searchLogForm.value?.operationView || ''
|
|
|
|
|
|
+ operationView: searchLogForm.value?.operationView || '',
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
operationTypeData.value = data
|
|
operationTypeData.value = data
|
|
@@ -557,20 +598,20 @@ const operationTypeStatus = async () => {
|
|
}
|
|
}
|
|
|
|
|
|
//设备
|
|
//设备
|
|
-const deviceData = ref([{label: "APP", value: "APP"}, {label: "PC", value: "PC"}])
|
|
|
|
|
|
+const deviceData = ref([{ label: 'APP', value: 'APP' }, { label: 'PC', value: 'PC' }])
|
|
//表格数据
|
|
//表格数据
|
|
const logTableColumn = ref([
|
|
const logTableColumn = ref([
|
|
- {key: 'operationModule', name: '业务模块', width: '180'},
|
|
|
|
- {key: 'operationTypeValue', name: '操作类型', width: '220'},
|
|
|
|
- {key: 'operationMedium', name: '设备', align: 'center', width: '80'},
|
|
|
|
- {key: 'operationContent', name: '操作内容'},
|
|
|
|
- {key: 'createTime', name: '操作时间', align: 'center', width: '180'},
|
|
|
|
|
|
+ { key: 'operationModule', name: '业务模块', width: '180' },
|
|
|
|
+ { key: 'operationTypeValue', name: '操作类型', width: '220' },
|
|
|
|
+ { key: 'operationMedium', name: '设备', align: 'center', width: '80' },
|
|
|
|
+ { key: 'operationContent', name: '操作内容' },
|
|
|
|
+ { key: 'createTime', name: '操作时间', align: 'center', width: '180' },
|
|
])
|
|
])
|
|
-const logTableData = ref([]);
|
|
|
|
|
|
+const logTableData = ref([])
|
|
|
|
|
|
//日期时间被选择
|
|
//日期时间被选择
|
|
const betweenTime = ref(null)
|
|
const betweenTime = ref(null)
|
|
-const betweenDateUpdate = ({val, arr}) => {
|
|
|
|
|
|
+const betweenDateUpdate = ({ val, arr }) => {
|
|
betweenTime.value = arr
|
|
betweenTime.value = arr
|
|
searchLogForm.value.startTime = val?.start
|
|
searchLogForm.value.startTime = val?.start
|
|
searchLogForm.value.endTime = val?.end
|
|
searchLogForm.value.endTime = val?.end
|
|
@@ -578,20 +619,20 @@ const betweenDateUpdate = ({val, arr}) => {
|
|
|
|
|
|
//回车搜索
|
|
//回车搜索
|
|
const keyUpEvent = (e) => {
|
|
const keyUpEvent = (e) => {
|
|
- if (e.key === "Enter") {
|
|
|
|
- searchLogForm.value.current = 1;
|
|
|
|
|
|
+ if (e.key === 'Enter') {
|
|
|
|
+ searchLogForm.value.current = 1
|
|
getLogTableData()
|
|
getLogTableData()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//搜索
|
|
//搜索
|
|
const searchClick = () => {
|
|
const searchClick = () => {
|
|
- searchLogForm.value.current = 1;
|
|
|
|
|
|
+ searchLogForm.value.current = 1
|
|
getLogTableData()
|
|
getLogTableData()
|
|
}
|
|
}
|
|
|
|
|
|
//分页被点击
|
|
//分页被点击
|
|
-const pageLogChange = ({current, size}) => {
|
|
|
|
|
|
+const pageLogChange = ({ current, size }) => {
|
|
searchLogForm.value.current = current
|
|
searchLogForm.value.current = current
|
|
searchLogForm.value.size = size
|
|
searchLogForm.value.size = size
|
|
getLogTableData()
|
|
getLogTableData()
|
|
@@ -601,10 +642,10 @@ const pageLogChange = ({current, size}) => {
|
|
const logTableLoading = ref(false)
|
|
const logTableLoading = ref(false)
|
|
const getLogTableData = async () => {
|
|
const getLogTableData = async () => {
|
|
logTableLoading.value = true
|
|
logTableLoading.value = true
|
|
- const {error, code, data} = await userApi.getOperationLog({
|
|
|
|
|
|
+ const { error, code, data } = await userApi.getOperationLog({
|
|
projectId: projectId.value,
|
|
projectId: projectId.value,
|
|
contractId: contractId.value,
|
|
contractId: contractId.value,
|
|
- ...searchLogForm.value
|
|
|
|
|
|
+ ...searchLogForm.value,
|
|
})
|
|
})
|
|
logTableLoading.value = false
|
|
logTableLoading.value = false
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
@@ -627,9 +668,9 @@ const tableOperationContent = (row) => {
|
|
|
|
|
|
//个人和全部切换
|
|
//个人和全部切换
|
|
const userTypeKey = ref('1')
|
|
const userTypeKey = ref('1')
|
|
-const userTypeTab = ref([{key: '1', name: '个人'}, {key: '2', name: '全部'}]);
|
|
|
|
|
|
+const userTypeTab = ref([{ key: '1', name: '个人' }, { key: '2', name: '全部' }])
|
|
const userTypeChange = (item) => {
|
|
const userTypeChange = (item) => {
|
|
- userTypeKey.value = item?.key;
|
|
|
|
|
|
+ userTypeKey.value = item?.key
|
|
if (item?.key === '1') {
|
|
if (item?.key === '1') {
|
|
searchRecycleForm.value.createUserName = ''
|
|
searchRecycleForm.value.createUserName = ''
|
|
} else {
|
|
} else {
|
|
@@ -641,12 +682,12 @@ const userTypeChange = (item) => {
|
|
//结构类型tab数据和相关处理
|
|
//结构类型tab数据和相关处理
|
|
const tabTypeKey = ref('1')
|
|
const tabTypeKey = ref('1')
|
|
const tabTypeTab = ref([
|
|
const tabTypeTab = ref([
|
|
- {key: '1', name: '文件资料'},
|
|
|
|
- {key: '2', name: '工程划分'}
|
|
|
|
-]);
|
|
|
|
|
|
+ { key: '1', name: '文件资料' },
|
|
|
|
+ { key: '2', name: '工程划分' },
|
|
|
|
+])
|
|
const tabTypeChange = (item) => {
|
|
const tabTypeChange = (item) => {
|
|
- tabTypeKey.value = item?.key;
|
|
|
|
- tabTypeKey.value = item?.key;
|
|
|
|
|
|
+ tabTypeKey.value = item?.key
|
|
|
|
+ tabTypeKey.value = item?.key
|
|
searchRecycleForm.value.current = 1
|
|
searchRecycleForm.value.current = 1
|
|
searchRecycleForm.value.delType = item?.key
|
|
searchRecycleForm.value.delType = item?.key
|
|
getRecycleTableData()
|
|
getRecycleTableData()
|
|
@@ -655,22 +696,22 @@ const tabTypeChange = (item) => {
|
|
//搜索和分页数据
|
|
//搜索和分页数据
|
|
const searchRecycleForm = ref({
|
|
const searchRecycleForm = ref({
|
|
projectId: projectId.value, contractId: contractId.value, createUserName: '',
|
|
projectId: projectId.value, contractId: contractId.value, createUserName: '',
|
|
- delType: tabTypeKey.value, current: 1, size: 20, total: 0
|
|
|
|
|
|
+ delType: tabTypeKey.value, current: 1, size: 20, total: 0,
|
|
})
|
|
})
|
|
|
|
|
|
//表格数据
|
|
//表格数据
|
|
const recycleTableRef = ref(null)
|
|
const recycleTableRef = ref(null)
|
|
const recycleTableColumn = ref([
|
|
const recycleTableColumn = ref([
|
|
- {key: 'fileName', name: '删除内容'},
|
|
|
|
- {key: 'position', name: '父节点名称'},
|
|
|
|
- {key: 'createUserName', name: '操作人'},
|
|
|
|
- {key: 'operationTime', name: '删除时间', align: 'center', width: '180'},
|
|
|
|
|
|
+ { key: 'fileName', name: '删除内容' },
|
|
|
|
+ { key: 'position', name: '父节点名称' },
|
|
|
|
+ { key: 'createUserName', name: '操作人' },
|
|
|
|
+ { key: 'operationTime', name: '删除时间', align: 'center', width: '180' },
|
|
])
|
|
])
|
|
const recycleTableLoading = ref(false)
|
|
const recycleTableLoading = ref(false)
|
|
-const recycleTableData = ref(null);
|
|
|
|
|
|
+const recycleTableData = ref(null)
|
|
|
|
|
|
//分页被点击
|
|
//分页被点击
|
|
-const pageRecycleChange = ({current, size}) => {
|
|
|
|
|
|
+const pageRecycleChange = ({ current, size }) => {
|
|
searchRecycleForm.value.current = current
|
|
searchRecycleForm.value.current = current
|
|
searchRecycleForm.value.size = size
|
|
searchRecycleForm.value.size = size
|
|
getRecycleTableData()
|
|
getRecycleTableData()
|
|
@@ -678,11 +719,11 @@ const pageRecycleChange = ({current, size}) => {
|
|
|
|
|
|
//获取数据
|
|
//获取数据
|
|
const getRecycleTableData = async () => {
|
|
const getRecycleTableData = async () => {
|
|
- const {error, code, data} = await userApi.queryRecycleBinList({
|
|
|
|
|
|
+ const { error, code, data } = await userApi.queryRecycleBinList({
|
|
projectId: projectId.value,
|
|
projectId: projectId.value,
|
|
contractId: contractId.value,
|
|
contractId: contractId.value,
|
|
delType: tabTypeKey.value,
|
|
delType: tabTypeKey.value,
|
|
- ...searchRecycleForm.value
|
|
|
|
|
|
+ ...searchRecycleForm.value,
|
|
})
|
|
})
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
recycleTableData.value = getArrValue(data['records'])
|
|
recycleTableData.value = getArrValue(data['records'])
|
|
@@ -694,7 +735,7 @@ const getRecycleTableData = async () => {
|
|
}
|
|
}
|
|
|
|
|
|
//多选
|
|
//多选
|
|
-const RecycleCheckedKeys = ref([]);
|
|
|
|
|
|
+const RecycleCheckedKeys = ref([])
|
|
const recycleTableSelectionChange = (val) => {
|
|
const recycleTableSelectionChange = (val) => {
|
|
RecycleCheckedKeys.value = val
|
|
RecycleCheckedKeys.value = val
|
|
}
|
|
}
|
|
@@ -706,11 +747,11 @@ const recycleBtnClick = async () => {
|
|
if (rows.length > 0) {
|
|
if (rows.length > 0) {
|
|
//请求数据
|
|
//请求数据
|
|
recycleBtnLoading.value = true
|
|
recycleBtnLoading.value = true
|
|
- const {error, code} = await userApi.recycleBinRegain({
|
|
|
|
|
|
+ const { error, code } = await userApi.recycleBinRegain({
|
|
projectId: projectId.value,
|
|
projectId: projectId.value,
|
|
contractId: contractId.value,
|
|
contractId: contractId.value,
|
|
delType: tabTypeKey.value,
|
|
delType: tabTypeKey.value,
|
|
- regainIds: rows
|
|
|
|
|
|
+ regainIds: rows,
|
|
})
|
|
})
|
|
recycleBtnLoading.value = false
|
|
recycleBtnLoading.value = false
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|