瀏覽代碼

恢复提醒修改

duy 1 周之前
父節點
當前提交
09f412b0da
共有 2 個文件被更改,包括 145 次插入112 次删除
  1. 32 0
      src/api/modules/userInfo/index.js
  2. 113 112
      src/views/user/index.vue

+ 32 - 0
src/api/modules/userInfo/index.js

@@ -89,4 +89,36 @@ export default {
             data: form,
         })
     },
+    //回收站分页新增的
+    async recycleBinPage(form) {
+        return HcApi({
+            url: '/api/blade-business/recycleBin/page',
+            method: 'get',
+            params: form,
+        })
+    },
+    //查询同一批删除数据
+    async queryOperation(form) {
+        return HcApi({
+            url: '/api/blade-business/recycleBin/queryOperation',
+            method: 'get',
+            params: form,
+        })
+    },
+    //查询用户
+      async queryUser(form) {
+        return HcApi({
+            url: '/api/blade-business/recycleBin/queryUser',
+            method: 'get',
+            params: form,
+        })
+    },
+    //恢复工程划分 
+  async recover(form) {
+        return HcApi({
+            url: '/api/blade-business/recycleBin/recover',
+            method: 'post',
+            data: form,
+        })
+    },
 }

+ 113 - 112
src/views/user/index.vue

@@ -232,18 +232,18 @@
                         <hc-date-picker :dates="tabBetweenTime" clearable @change="tabBetweenTimeUpdate" />
                     </div>
                     <div class="ml-2 w-200px">
-                        <el-select v-model="searchRecleForm.userId" placeholder="操作人" filterable block>
-                            <el-option v-for="item in userData" :key="item.id" :label="item.contractName" :value="item.id" />
+                        <el-select v-model="searchRecycleForm.userId" placeholder="操作人" filterable clearable block>
+                            <el-option v-for="item in userData" :key="item.id" :label="item.name" :value="item.id" />
                         </el-select>
                     </div>
                     <div class="ml-2 w-40">
-                        <el-select v-model="searchRecleForm.dataStatus" placeholder="是否资料节点" filterable clearable block>
+                        <el-select v-model="searchRecycleForm.isData" placeholder="是否资料节点" filterable clearable block>
                             <el-option label="是" :value="1" />
-                            <el-option label="未引用" :value="0" />
+                            <el-option label="" :value="0" />
                         </el-select>
                     </div>
                     <div class="ml-2 w-72">
-                        <el-input v-model="searchRecleForm.queryValue" clearable placeholder="请输入工程划分" @keyup="keyUpEvent" />
+                        <el-input v-model="searchRecycleForm.content" clearable placeholder="请输入工程划分" @keyup="keyUpEvent" />
                     </div>
                     <div class="ml-2">
                         <el-button type="primary" @click="searchRecleClick">
@@ -251,7 +251,7 @@
                             <span>搜索</span>
                         </el-button>
                     </div>
-                    <div v-if="tabTypeKey === '1'" class="position-absolute right-0">
+                    <div v-if="tabTypeKey === '0'" class="position-absolute right-0">
                         <el-button type="success" :disabled="RecycleCheckedKeys.length < 1" @click="recoverClick">
                             <hc-icon name="arrow-go-back" />
                             <span>恢复</span>
@@ -268,20 +268,15 @@
                             {{ row?.fileName }}
                         </div>
                     </template>
+                    <template #isData="{ row }">
+                        {{ row?.isData === 1 ? '是' : '否' }}
+                    </template>
                     <template #action="{ row }">
                         <el-link type="success" @click="recoverClick(row)">恢复</el-link>
                     </template>
                 </HcTable>
                 <template #action>
                     <div class="foot-recycle">
-                        <el-button
-                            :loading="recycleBtnLoading" hc-btn type="primary"
-                            :disabled="userTypeKey === '2'"
-                            @click="recycleBtnClick"
-                        >
-                            <HcIcon fill name="reply" />
-                            <span>恢复</span>
-                        </el-button>
                         <HcPages :pages="searchRecycleForm" @change="pageRecycleChange" />
                     </div>
                 </template>
@@ -294,7 +289,7 @@
             <div v-html="saveData" />
         </hc-new-dialog>
         <!-- 恢复提醒 -->
-        <hc-new-dialog v-model="recoverModal" title="恢复提醒">
+        <hc-new-dialog v-model="recoverModal" title="恢复提醒" :loading="recoverLoading" @save="recoverSave">
             <div class="felx-col flex items-center justify-start font-bold">
                 <div class="mr-4 text-24px">
                     <HcIcon name="error-warning" class="text-orange" />
@@ -302,8 +297,8 @@
                 <div>
                     <p class="mb-2">
-                        <span v-for="(item, index) in cheVal" :key="item.id" class="mb-2">
-                            {{ index === cheVal.length - 1 ? item.fileName : `${item.fileName}、` }}
+                        <span v-for="(item, index) in showData" :key="item.id" class="mb-2">
+                            {{ index === showData.length - 1 ? item.delRootName : `${item.delRootName}、` }}
                         </span>
                         存在多条删除信息
@@ -317,7 +312,7 @@
 </template>
 
 <script setup>
-import { onMounted, ref } from 'vue'
+import { onActivated, onMounted, ref } from 'vue'
 import { useAppStore } from '~src/store'
 import userApi from '~api/userInfo/index'
 import { useRoute, useRouter } from 'vue-router'
@@ -325,6 +320,7 @@ import avatarPng from '~src/assets/images/avatar.png'
 import { getHeader } from 'hc-vue3-ui'
 import { arrIndex, formValidate, getArrValue, isPhone } from 'js-fast-way'
 import { getContractUserList } from '~api/other'
+
 import md5 from 'js-md5'
 
 //初始变量
@@ -408,6 +404,16 @@ const handleMenuValue = (item) => {
 }
 //获取用户列表
 const userListData = ref([])
+const getUserData = async () => {
+    const { data } = await userApi.queryUser({
+        contractId: contractId.value,
+        isRecycleBin:tabTypeKey.value,
+
+    })
+    userData.value = getArrValue(data)
+  
+    
+}
 const getUserListData = async () => {
     const { data } = await getContractUserList({
         contractId: contractId.value,
@@ -417,10 +423,14 @@ const getUserListData = async () => {
 //渲染完成
 onMounted(() => {
     menuObjItem()
-    getPageTypeData(menuKey.value)
+    // getPageTypeData(menuKey.value)
+    getUserData()
     getUserListData()
 })
 
+onActivated(()=>{
+ getPageTypeData(menuKey.value)
+})
 //根据类型,获取相关数据
 const getPageTypeData = (key) => {
     //编辑状态
@@ -754,74 +764,66 @@ const tableOperationContent = (row) => {
 }
 
 
-//个人和全部切换
-const userTypeKey = ref('1')
-const userTypeTab = ref([{ key: '1', name: '个人' }, { key: '2', name: '全部' }])
-const userTypeChange = (item) => {
-    userTypeKey.value = item?.key
-    if (item?.key === '1') {
-        searchRecycleForm.value.createUserName = ''
-    } else {
-        searchRecycleForm.value.createUserName = 'ALL'
-    }
-    getRecycleTableData()
-}
+
+
 
 //结构类型tab数据和相关处理
-const tabTypeKey = ref('1')
+const tabTypeKey = ref('0')
 const tabTypeTab = ref([
-    { key: '1', name: '删除台账' },
-    { key: '2', name: '恢复台账' },
+    { key: '0', name: '删除台账' },
+    { key: '1', name: '恢复台账' },
 ])
 const tabTypeChange = (item) => {
     tabTypeKey.value = item?.key
     tabTypeKey.value = item?.key
     searchRecycleForm.value.current = 1
-    searchRecycleForm.value.delType = item?.key
+    searchRecycleForm.value.recycleType = item?.key
+
+
     getRecycleTableData()
-    recycleTableColumn.value = tabTypeKey.value === '1' ? recycleTableColumn1 : recycleTableColumn2
+    recycleTableColumn.value = tabTypeKey.value === '0' ? recycleTableColumn1 : recycleTableColumn2
 
 }
 
 //搜索和分页数据
 const searchRecycleForm = ref({
-    projectId: projectId.value, contractId: contractId.value, createUserName: '',
-    delType: tabTypeKey.value, current: 1, size: 20, total: 0,
+    projectId: projectId.value, contractId: contractId.value, userId: '',
+    recycleType: tabTypeKey.value, current: 1, size: 20, total: 0, content:'',
 })
 
 //表格数据
 const recycleTableRef = ref(null)
 const recycleTableColumn = ref([
-     { key: 'fileName', name: '删除位置' },
-    { key: 'fileName', name: '工程划分' },
-    { key: 'fileName', name: '是否资料节点', width: '100' },
+     { key: 'delRootName', name: '删除位置' },
+    { key: 'position', name: '工程划分' },
+    { key: 'isData', name: '是否资料节点', width: '100' },
     { key: 'fileName', name: '文件题名(施工)' },
-    { key: 'fileName', name: '文件题名(监理)' },
+    { key: 'jlFileName', name: '文件题名(监理)' },
     { key: 'createUserName', name: '删除人' },
     { key: 'operationTime', name: '删除时间', align: 'center', width: '180' },
     { key: 'action', name: '操作', width: '80' },
 ])
 const recycleTableColumn1 = [
    
-    { key: 'fileName', name: '删除位置' },
-    { key: 'fileName', name: '工程划分' },
-    { key: 'fileName', name: '是否资料节点', width: '100' },
+    { key: 'delRootName', name: '删除位置' },
+    { key: 'position', name: '工程划分' },
+    { key: 'isData', name: '是否资料节点', width: '100' },
     { key: 'fileName', name: '文件题名(施工)' },
-    { key: 'fileName', name: '文件题名(监理)' },
+    { key: 'jlFileName', name: '文件题名(监理)' },
     { key: 'createUserName', name: '删除人' },
     { key: 'operationTime', name: '删除时间', align: 'center', width: '180' },
     { key: 'action', name: '操作', width: '80' },
    
 ]
 const recycleTableColumn2 = [
-    { key: 'fileName', name: '删除位置' },
-    { key: 'fileName', name: '工程划分' },
-    { key: 'fileName', name: '是否资料节点', width: '100' },
+    { key: 'delRootName', name: '删除位置' },
+    { key: 'position', name: '工程划分' },
+    { key: 'isData', name: '是否资料节点', width: '100' },
     { key: 'fileName', name: '文件题名(施工)' },
-    { key: 'fileName', name: '文件题名(监理)' },
+    { key: 'jlFileName', name: '文件题名(监理)' },
     { key: 'createUserName', name: '恢复人' },
     { key: 'operationTime', name: '恢复时间', align: 'center', width: '180' },
-    { key: 'createUserName', name: '删除信息' },
+    { key: 'delInfo', name: '删除信息' },
    
    
    
@@ -841,19 +843,19 @@ const pageRecycleChange = ({ current, size }) => {
 
 //获取数据
 const getRecycleTableData = async () => {
-    // const { error, code, data } = await userApi.queryRecycleBinList({
-    //     projectId: projectId.value,
-    //     contractId: contractId.value,
-    //     delType: tabTypeKey.value,
-    //     ...searchRecycleForm.value,
-    // })
-    // if (!error && code === 200) {
-    //     recycleTableData.value = getArrValue(data['records'])
-    //     searchRecycleForm.value.total = data.total || 0
-    // } else {
-    //     recycleTableData.value = []
-    //     searchRecycleForm.value.total = 0
-    // }
+    const { error, code, data } = await userApi.recycleBinPage({
+        projectId: projectId.value,
+        contractId: contractId.value,
+ 
+        ...searchRecycleForm.value,
+    })
+    if (!error && code === 200) {
+        recycleTableData.value = getArrValue(data['records'])
+        searchRecycleForm.value.total = data.total || 0
+    } else {
+        recycleTableData.value = []
+        searchRecycleForm.value.total = 0
+    }
 }
 
 //多选
@@ -862,70 +864,33 @@ const recycleTableSelectionChange = (val) => {
     RecycleCheckedKeys.value = val
 }
 
-//恢复
-const recycleBtnLoading = ref(false)
-const recycleBtnClick = async () => {
-    const rows = RecycleCheckedKeys.value
-        let hasUnoperableData = false
 
-    // 遍历每一行数据,检查 status 字段
-    for (const row of rows) {
-        if (row.status === 2) {
-            hasUnoperableData = true
-            break
-        }
-    }
 
-    // 如果存在 status = 2 的数据,则提示用户并返回
-    if (hasUnoperableData) {
-        window.$message.warning('存在不可操作的数据,请检查后再操作。')
-        return
-    }
-
-    if (rows.length > 0) {
-        //请求数据
-        recycleBtnLoading.value = true
-        const { error, code, msg } = await userApi.recycleBinRegain({
-            projectId: projectId.value,
-            contractId: contractId.value,
-            delType: tabTypeKey.value,
-            regainIds: rows,
-        })
-        recycleBtnLoading.value = false
-        if (!error && code === 200) {
-            window?.$message?.success('操作成功')
-            searchRecycleForm.value.current = 1
-            getRecycleTableData()
-        } else {
-            window?.$message?.error(msg || '操作失败')
-        }
-    } else {
-        window.$message?.warning('请先勾选要恢复的数据')
-    }
-}
 
 
 const tabBetweenTime = ref(null)
-const searchRecleForm = ref({
 
-})
 const userData = ref([])
 
 //日期时间被选择
 const tabBetweenTimeUpdate = ({ arr, val, query }) => {
     betweenTime.value = arr
-    console.log('val', val)
-    console.log('arr', arr)
-    console.log('query', query)
+
+    if (arr.length > 0) {
+        searchRecycleForm.value.startTime = arr[0]
+        searchRecycleForm.value.endTime = arr[1]
+     
+    } else {
+           searchRecycleForm.value.startTime = ''
+        searchRecycleForm.value.endTime = ''
+    }
 }
 const searchRecleClick = () => {
-    // getRecycleTableData()
+    getRecycleTableData()
 }
 const recoverModal = ref(false)
-const recoverClick = (row)=>{
+const recoverClick = async (row)=>{
     console.log(row, 'row')
-    
-    recoverModal.value = true
 
    if (RecycleCheckedKeys.value.length === 0) {
        cheVal.value = [row]
@@ -933,8 +898,44 @@ const recoverClick = (row)=>{
     cheVal.value = RecycleCheckedKeys.value
 
    }
+ await getQueryOperation(row)
+ recoverModal.value = true
+ 
+}
+const showData = ref([])
+const getQueryOperation = async (row )=>{
+    const { error, code, data } = await userApi.queryOperation({
+       id:cheVal.value.map(item => item.id).join(','),
+    })
+
+    if (!error && code === 200) {
+      console.log(data, 'data')
+      
+       showData.value = getArrValue(data)
+     
+
+    } else {
+         showData.value = []
+         recoverModal.value = false
+    }
+   
 }
 const cheVal = ref([])
+const recoverLoading = ref(false)
+const recoverSave = async ()=>{
+    recoverLoading.value = true
+    const { error, code, msg } = await userApi.recover({
+       ids: cheVal.value.map(item => item.id).join(','),
+       recoverOperationData:1,
+ 
+    })
+    recoverLoading.value = false
+    if (!error && code === 200) {
+       window.$message.success(msg)
+        getRecycleTableData()
+    }
+     recoverModal.value = false
+}
 </script>
 
 <style lang="scss" scoped>