Browse Source

REVIEW 已完成的任务列表

YunaiV 1 year ago
parent
commit
bb88e3d77c

+ 1 - 1
build/vite/index.ts

@@ -98,7 +98,7 @@ export function createVitePlugins() {
       deleteOriginFile: false //压缩后是否删除源文件
     }),
     ViteEjsPlugin(),
-    topLevelAwait({
+    topLevelAwait({ // https://juejin.cn/post/7152191742513512485
       // The export name of top-level await promise for each chunk module
       promiseExportName: '__tla',
       // The function to generate import names of top-level await promise in each chunk module

+ 1 - 0
package.json

@@ -13,6 +13,7 @@
     "build:dev": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode dev",
     "build:test": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode test",
     "build:static": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode static",
+    "build:front": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode front",
     "serve:pro": "vite preview --mode pro",
     "serve:dev": "vite preview --mode dev",
     "serve:test": "vite preview --mode test",

+ 0 - 12
src/router/modules/remaining.ts

@@ -317,18 +317,6 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '查看 OA 请假',
           activeMenu: 'bpm/oa/leave/detail'
         }
-      },
-      {
-        path: '/bpm/task/done',
-        component: () => import('@/views/bpm/task/done/index.vue'),
-        name: 'TaskDone',
-        meta: {
-          noCache: true,
-          hidden: true,
-          canTo: true,
-          title: '已办任务',
-          activeMenu: 'bpm/task/done/index'
-        }
       }
     ]
   },

+ 6 - 4
src/views/bpm/task/done/Taskdetail.vue → src/views/bpm/task/done/TaskDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="500" width="800">
+  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="500">
     <el-descriptions border :column="1">
       <el-descriptions-item label="任务编号" min-width="120">
         {{ detailData.id }}
@@ -14,7 +14,7 @@
         {{ detailData.processInstance.startUserNickname }}
       </el-descriptions-item>
       <el-descriptions-item label="状态">
-        {{ detailData.result }}
+        <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="detailData.result" />
       </el-descriptions-item>
       <el-descriptions-item label="原因">
         {{ detailData.reason }}
@@ -26,14 +26,16 @@
   </Dialog>
 </template>
 <script setup lang="ts">
+import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import * as TaskApi from '@/api/bpm/task'
+
 const dialogVisible = ref(false) // 弹窗的是否展示
 const detailLoading = ref(false) // 表单的加载中
 const detailData = ref() // 详情数据
 
 /** 打开弹窗 */
-const openModal = async (data: TaskApi.TaskVO) => {
+const open = async (data: TaskApi.TaskVO) => {
   dialogVisible.value = true
   // 设置数据
   detailLoading.value = true
@@ -43,5 +45,5 @@ const openModal = async (data: TaskApi.TaskVO) => {
     detailLoading.value = false
   }
 }
-defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 </script>

+ 41 - 60
src/views/bpm/task/done/index.vue

@@ -14,36 +14,30 @@
           placeholder="请输入任务名称"
           clearable
           @keyup.enter="handleQuery"
+          class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
-          <el-option
-            v-for="dict in getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT)"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker
+          v-model="queryParams.createTime"
+          value-format="YYYY-MM-DD HH:mm:ss"
+          type="daterange"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
+          class="!w-240px"
+        />
       </el-form-item>
       <el-form-item>
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button
-          type="success"
-          plain
-          @click="handleExport"
-          :loading="exportLoading"
-          v-hasPermi="['bpm:task:done:export']"
-        >
-          <Icon icon="ep:download" class="mr-5px" /> 导出
-        </el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
+
   <!-- 列表 -->
   <ContentWrap>
-    <el-table v-loading="loading" :data="list" align="center">
+    <el-table v-loading="loading" :data="list">
       <el-table-column label="任务编号" align="center" prop="id" width="300px" />
       <el-table-column label="任务名称" align="center" prop="name" />
       <el-table-column label="所属流程" align="center" prop="processInstance.name" />
@@ -63,8 +57,8 @@
       />
       <el-table-column label="操作" align="center">
         <template #default="scope">
-          <el-button link type="primary" @click="openModal(scope.row)"> 流程信息 </el-button>
-          <el-button link type="primary" @click="handleAudit(scope.row)"> 流程详情 </el-button>
+          <el-button link type="primary" @click="openDetail(scope.row)">详情</el-button>
+          <el-button link type="primary" @click="handleAudit(scope.row)">流程</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -76,46 +70,28 @@
       @pagination="getList"
     />
   </ContentWrap>
+
   <!-- 表单弹窗:详情 -->
-  <TaskDoneDetail ref="modalRef" @success="getList" />
+  <TaskDetail ref="detailRef" @success="getList" />
 </template>
 <script setup lang="tsx">
+import { DICT_TYPE } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
-import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as TaskApi from '@/api/bpm/task'
-import download from '@/utils/download'
-import TaskDoneDetail from './Taskdetail.vue'
+import TaskDetail from './TaskDetail.vue'
+const { push } = useRouter() // 路由
 
 const loading = ref(true) // 列表的加载中
 const total = ref(0) // 列表的总页数
 const list = ref([]) // 列表的数据
-const message = useMessage() // 消息弹窗
-const exportLoading = ref(false) // 导出的加载中
-const queryFormRef = ref() // 搜索的表单
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   name: '',
-  status: undefined,
   createTime: []
 })
+const queryFormRef = ref() // 搜索的表单
 
-/** 搜索按钮操作 */
-const handleQuery = () => {
-  queryParams.pageNo = 1
-  getList()
-}
-/** 详情操作 */
-const modalRef = ref()
-const openModal = (data: TaskApi.TaskVO) => {
-  modalRef.value.openModal(data)
-}
-
-/** 重置按钮操作 */
-const resetQuery = () => {
-  queryFormRef.value.resetFields()
-  handleQuery()
-}
 /** 查询任务列表 */
 const getList = async () => {
   loading.value = true
@@ -127,22 +103,26 @@ const getList = async () => {
     loading.value = false
   }
 }
-/** 导出按钮操作 */
-const handleExport = async () => {
-  try {
-    // 导出的二次确认
-    await message.exportConfirm()
-    // 发起导出
-    exportLoading.value = true
-    const data = await TaskApi.exportTask(queryParams)
-    download.excel(data, '任务列表.xls')
-  } catch {
-  } finally {
-    exportLoading.value = false
-  }
+
+/** 搜索按钮操作 */
+const handleQuery = () => {
+  queryParams.pageNo = 1
+  getList()
 }
-const { push } = useRouter() // 路由
-// 处理审批按钮
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+  queryFormRef.value.resetFields()
+  handleQuery()
+}
+
+/** 详情操作 */
+const detailRef = ref()
+const openDetail = (row: TaskApi.TaskVO) => {
+  detailRef.value.open(row)
+}
+
+/** 处理审批按钮 */
 const handleAudit = (row) => {
   push({
     name: 'BpmProcessInstanceDetail',
@@ -151,6 +131,7 @@ const handleAudit = (row) => {
     }
   })
 }
+
 /** 初始化 **/
 onMounted(() => {
   getList()