瀏覽代碼

remove 删除无用组件 调整修改办理人,已完成单据可查看审批记录等

gssong 2 年之前
父節點
當前提交
9defb9a669
共有 3 個文件被更改,包括 21 次插入325 次删除
  1. 0 301
      src/components/Process/selectSysUser.vue
  2. 5 2
      src/views/workflow/leave/index.vue
  3. 16 22
      src/views/workflow/task/allTaskWaiting.vue

+ 0 - 301
src/components/Process/selectSysUser.vue

@@ -1,301 +0,0 @@
-<template>
-  <el-dialog v-model="visible" draggable :title="title" :width="width" :height="height" append-to-body :close-on-click-modal="false">
-    <div class="p-2">
-      <el-row :gutter="20">
-        <!-- 部门树 -->
-        <el-col :lg="4" :xs="24" style="">
-          <el-card shadow="hover">
-            <el-input v-model="deptName" placeholder="请输入部门名称" prefix-icon="Search" clearable />
-            <el-tree
-              ref="deptTreeRef"
-              class="mt-2"
-              node-key="id"
-              :data="deptOptions"
-              :props="{ label: 'label', children: 'children' }"
-              :expand-on-click-node="false"
-              :filter-node-method="filterNode"
-              highlight-current
-              default-expand-all
-              @node-click="handleNodeClick"
-            ></el-tree>
-          </el-card>
-        </el-col>
-        <el-col :lg="20" :xs="24">
-          <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
-            <div v-show="showSearch" class="search">
-              <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="68px">
-                <el-form-item label="用户名称" prop="userName">
-                  <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter="handleQuery" />
-                </el-form-item>
-                <el-form-item label="用户昵称" prop="nickName">
-                  <el-input v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable style="width: 240px" @keyup.enter="handleQuery" />
-                </el-form-item>
-                <el-form-item>
-                  <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-                  <el-button icon="Refresh" @click="resetQuery">重置</el-button>
-                </el-form-item>
-              </el-form>
-            </div>
-          </transition>
-
-          <el-card shadow="hover">
-            <template #header>
-              <el-row :gutter="10">
-                <right-toolbar v-model:showSearch="showSearch" :search="true" @query-table="getUserList"></right-toolbar>
-              </el-row>
-            </template>
-
-            <el-table ref="multipleTableRef" v-loading="loading" :data="userList" row-key="userId" @selection-change="handleSelectionChange">
-              <el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
-              <el-table-column key="userId" label="用户编号" align="center" prop="userId" />
-              <el-table-column key="userName" label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" />
-              <el-table-column key="nickName" label="用户昵称" align="center" prop="nickName" :show-overflow-tooltip="true" />
-              <el-table-column key="phonenumber" label="手机号码" align="center" prop="phonenumber" width="120" />
-              <el-table-column label="创建时间" align="center" prop="createTime" width="160">
-                <template #default="scope">
-                  <span>{{ scope.row.createTime }}</span>
-                </template>
-              </el-table-column>
-            </el-table>
-
-            <pagination
-              v-show="total > 0"
-              v-model:page="queryParams.pageNum"
-              v-model:limit="queryParams.pageSize"
-              :total="total"
-              @pagination="getUserList"
-            />
-          </el-card>
-          <el-card shadow="hover">
-            <el-tag v-for="(user, index) in chooseUserList" :key="user.userId" style="margin: 2px" closable @close="handleCloseTag(user, index)"
-              >{{ user.userName }}
-            </el-tag>
-          </el-card>
-        </el-col>
-      </el-row>
-    </div>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button type="primary" @click="submitFileForm">确 定</el-button>
-        <el-button @click="visible = false">取 消</el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup name="User" lang="ts">
-import { deptTreeSelect } from '@/api/system/user';
-import { getPageByUserList, getUserListByIds } from '@/api/workflow/workflowUser';
-import { UserVO } from '@/api/system/user/types';
-import { DeptVO } from '@/api/system/dept/types';
-import { ComponentInternalInstance } from 'vue';
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-
-const props = defineProps({
-  // 宽
-  width: {
-    type: String,
-    default: '70%'
-  },
-  // 高
-  height: {
-    type: String,
-    default: '100%'
-  },
-  // 标题
-  title: {
-    type: String,
-    default: '用户'
-  },
-  //是否多选
-  multiple: {
-    type: Boolean,
-    default: true
-  },
-  //回显用户id
-  userIdList: {
-    type: Array,
-    default: () => []
-  }
-});
-const deptTreeRef = ref<ElTreeInstance>();
-const multipleTableRef = ref<ElTableInstance>();
-
-const userList = ref<UserVO[]>();
-const loading = ref(true);
-const showSearch = ref(true);
-const visible = ref(false);
-const total = ref(0);
-const deptName = ref('');
-const deptOptions = ref<DeptVO[]>([]);
-const chooseUserList = ref(ref<UserVO[]>());
-const userIds = ref<Array<number | string>>([]);
-//查询参数
-const queryParams = ref<Record<string, any>>({
-  pageNum: 1,
-  pageSize: 10,
-  userName: undefined,
-  nickName: undefined,
-  deptId: undefined
-});
-/** 查询用户列表 */
-const getUserList = async (userIdList: Array<number | string>) => {
-  deptOptions.value = [];
-  getTreeSelect();
-  userIds.value = userIdList;
-  visible.value = true;
-  loading.value = true;
-  const res = await getPageByUserList(queryParams.value);
-  loading.value = false;
-  userList.value = res.rows;
-  total.value = res.total;
-  if (userList.value && userIds.value.length > 0) {
-    const data = await getUserListByIds(userIds.value);
-    if (data.data && data.data.length > 0) {
-      chooseUserList.value = data.data;
-      data.data.forEach((user: UserVO) => {
-        multipleTableRef.value!.toggleRowSelection(
-          userList.value.find((item) => {
-            return item.userId == user.userId;
-          }),
-          true
-        );
-      });
-    }
-  }
-};
-
-const getList = async () => {
-  loading.value = true;
-  const res = await getPageByUserList(queryParams.value);
-  loading.value = false;
-  userList.value = res.rows;
-  total.value = res.total;
-
-  if (userList.value && userIds.value.length > 0) {
-    const data = await getUserListByIds(userIds.value);
-    if (data.data && data.data.length > 0) {
-      chooseUserList.value = data.data;
-      data.data.forEach((user: UserVO) => {
-        multipleTableRef.value!.toggleRowSelection(
-          userList.value.find((item) => {
-            return item.userId == user.userId;
-          }),
-          true
-        );
-      });
-    }
-  }
-};
-
-/** 搜索按钮操作 */
-const handleQuery = () => {
-  queryParams.value.pageNum = 1;
-  getUserList(userIds.value);
-};
-
-/** 重置按钮操作 */
-const resetQuery = () => {
-  queryParams.value.pageNum = 1;
-  queryParams.value.deptId = undefined;
-  queryParams.value.userName = undefined;
-  queryParams.value.nickName = undefined;
-  deptTreeRef.value.setCurrentKey(null);
-  handleQuery();
-};
-
-/** 选择条数  */
-const handleSelectionChange = (selection: UserVO[]) => {
-  console.log(selection);
-  if (props.multiple) {
-    chooseUserList.value = selection.filter((element, index, self) => {
-      return self.findIndex((x) => x.userId === element.userId) === index;
-    });
-    selection.forEach((u) => {
-      if (chooseUserList.value && !chooseUserList.value.includes(u)) {
-        multipleTableRef.value!.toggleRowSelection(u, undefined);
-      }
-    });
-    userIds.value = chooseUserList.value.map((item) => {
-      return item.userId;
-    });
-  } else {
-    chooseUserList.value = selection;
-    if (selection.length > 1) {
-      let delRow = selection.shift();
-      multipleTableRef.value!.toggleRowSelection(delRow, undefined);
-    }
-    if (selection.length === 0) {
-      chooseUserList.value = [];
-    }
-  }
-};
-/** 查询部门下拉树结构 */
-const getTreeSelect = async () => {
-  const res = await deptTreeSelect();
-  deptOptions.value = res.data;
-};
-
-/** 通过条件过滤节点  */
-const filterNode = (value: string, data: any) => {
-  if (!value) return true;
-  return data.label.indexOf(value) !== -1;
-};
-/** 根据名称筛选部门树 */
-watchEffect(
-  () => {
-    if (visible.value && deptOptions.value && deptOptions.value.length > 0) {
-      deptTreeRef.value.filter(deptName.value);
-    }
-  },
-  {
-    flush: 'post' // watchEffect会在DOM挂载或者更新之前就会触发,此属性控制在DOM元素更新后运行
-  }
-);
-/** 节点单击事件 */
-const handleNodeClick = (data: DeptVO) => {
-  queryParams.value.deptId = data.id;
-  getList();
-};
-//删除tag
-const handleCloseTag = (user: UserVO, index: any) => {
-  if (multipleTableRef.value.selection && multipleTableRef.value.selection.length > 0) {
-    multipleTableRef.value.selection.forEach((u: UserVO, i: number) => {
-      if (user.userId === u.userId) {
-        multipleTableRef.value.selection.splice(i, 1);
-      }
-    });
-  }
-  if (chooseUserList.value && chooseUserList.value.length > 0) {
-    chooseUserList.value.splice(index, 1);
-  }
-  multipleTableRef.value.toggleRowSelection(user, undefined);
-
-  if (userIds.value && userIds.value.length > 0) {
-    userIds.value.forEach((userId, i) => {
-      if (userId === user.userId) {
-        userIds.value.splice(i, 1);
-      }
-    });
-  }
-};
-const submitFileForm = async () => {
-  loading.value = true;
-  emits('submitCallback', chooseUserList);
-};
-const close = async () => {
-  visible.value = false;
-  loading.value = false;
-  emits('close');
-};
-//事件
-const emits = defineEmits(['submitCallback', 'close']);
-
-/**
- * 对外暴露子组件方法
- */
-defineExpose({
-  getUserList,
-  close
-});
-</script>

+ 5 - 2
src/views/workflow/leave/index.vue

@@ -83,7 +83,10 @@
             <el-tooltip v-if="scope.row.processInstanceVo.businessStatus === 'waiting'" content="撤销" placement="top">
             <el-tooltip v-if="scope.row.processInstanceVo.businessStatus === 'waiting'" content="撤销" placement="top">
               <el-button link type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.processInstanceVo.id)"></el-button>
               <el-button link type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.processInstanceVo.id)"></el-button>
             </el-tooltip>
             </el-tooltip>
-            <el-tooltip v-if="scope.row.processInstanceVo.businessStatus === 'waiting'" content="审批记录" placement="top">
+            <el-tooltip v-if="scope.row.processInstanceVo.businessStatus === 'waiting' || 
+            scope.row.processInstanceVo.businessStatus === 'finish'||
+            scope.row.processInstanceVo.businessStatus === 'termination'||
+            scope.row.processInstanceVo.businessStatus === 'invalid'" content="审批记录" placement="top">
               <el-button link type="primary" icon="Document" @click="handleApprovalRecord(scope.row.processInstanceVo.id)"></el-button>
               <el-button link type="primary" icon="Document" @click="handleApprovalRecord(scope.row.processInstanceVo.id)"></el-button>
             </el-tooltip>
             </el-tooltip>
           </template>
           </template>
@@ -340,7 +343,7 @@ const handleExport = () => {
 
 
 //提交申请
 //提交申请
 const handleStartWorkFlow = async (data: LeaveVO) => {
 const handleStartWorkFlow = async (data: LeaveVO) => {
-  submitFormData.value.processKey = 'leave7';
+  submitFormData.value.processKey = 'leave1';
   submitFormData.value.businessKey = data.id;
   submitFormData.value.businessKey = data.id;
   //流程变量
   //流程变量
   taskVariables.value = {
   taskVariables.value = {

+ 16 - 22
src/views/workflow/task/allTaskWaiting.vue

@@ -33,7 +33,7 @@
       <template #header>
       <template #header>
         <el-row :gutter="10" class="mb8">
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
           <el-col :span="1.5">
-            <el-button type="primary" plain icon="Edit" @click="handleUpdate">修改办理人</el-button>
+            <el-button type="primary" plain icon="Edit" :disabled="multiple" @click="handleUpdate">修改办理人</el-button>
           </el-col>
           </el-col>
           <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar>
           <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar>
         </el-row>
         </el-row>
@@ -97,30 +97,25 @@
     </el-card>
     </el-card>
     <!-- 审批记录 -->
     <!-- 审批记录 -->
     <approvalRecord ref="approvalRecordRef" />
     <approvalRecord ref="approvalRecordRef" />
-    <!-- 提交组件 -->
-    <submitVerify ref="submitVerifyRef" :task-id="taskId" @submit-callback="handleQuery" />
     <!-- 加签组件 -->
     <!-- 加签组件 -->
     <multiInstanceUser ref="multiInstanceUserRef" :title="title" @submit-callback="handleQuery" />
     <multiInstanceUser ref="multiInstanceUserRef" :title="title" @submit-callback="handleQuery" />
     <!-- 选人组件 -->
     <!-- 选人组件 -->
-    <selectSysUser ref="selectSysUserRef" :multiple="true" @submit-callback="submitCallback" />
+    <UserSelect ref="userSelectRef" :multiple="false" @confirm-call-back="submitCallback"></UserSelect>
   </div>
   </div>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee } from '@/api/workflow/task';
 import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee } from '@/api/workflow/task';
 import ApprovalRecord from '@/components/Process/approvalRecord.vue';
 import ApprovalRecord from '@/components/Process/approvalRecord.vue';
-import SubmitVerify from '@/components/Process/submitVerify.vue';
 import MultiInstanceUser from '@/components/Process/multiInstanceUser.vue';
 import MultiInstanceUser from '@/components/Process/multiInstanceUser.vue';
-import SelectSysUser from '@/components/Process/selectSysUser.vue';
+import UserSelect from '@/components/UserSelect';
 import { TaskQuery, TaskVO } from '@/api/workflow/task/types';
 import { TaskQuery, TaskVO } from '@/api/workflow/task/types';
-//提交组件
-const submitVerifyRef = ref<InstanceType<typeof SubmitVerify>>();
 //审批记录组件
 //审批记录组件
 const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
 const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
 //加签组件
 //加签组件
 const multiInstanceUserRef = ref<InstanceType<typeof MultiInstanceUser>>();
 const multiInstanceUserRef = ref<InstanceType<typeof MultiInstanceUser>>();
-//选人组件
-const selectSysUserRef = ref<InstanceType<typeof SelectSysUser>>();
+//选人组件 
+const userSelectRef = ref<InstanceType<typeof UserSelect>>();
 
 
 const queryFormRef = ref<ElFormInstance>();
 const queryFormRef = ref<ElFormInstance>();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -138,8 +133,6 @@ const showSearch = ref(true);
 const total = ref(0);
 const total = ref(0);
 // 模型定义表格数据
 // 模型定义表格数据
 const taskList = ref([]);
 const taskList = ref([]);
-// 任务id
-const taskId = ref('');
 const title = ref('');
 const title = ref('');
 // 查询参数
 // 查询参数
 const queryParams = ref<TaskQuery>({
 const queryParams = ref<TaskQuery>({
@@ -219,19 +212,20 @@ const getFinishList = () => {
     loading.value = false;
     loading.value = false;
   });
   });
 };
 };
+//打开修改选人
 const handleUpdate = () => {
 const handleUpdate = () => {
-  if (selectSysUserRef.value) {
-    selectSysUserRef.value.getUserList([]);
-  }
+  userSelectRef.value.open();
 };
 };
 //修改办理人
 //修改办理人
-const submitCallback = (data) => {
-  if (data && data.value.length > 0) {
-    updateAssignee(ids.value, data.value[0].userId).then((resp) => {
-      selectSysUserRef.value.close();
-      proxy?.$modal.msgSuccess('操作成功');
-      handleQuery();
-    });
+const submitCallback  = async (data) => {
+  if(data && data.length > 0){
+    await proxy?.$modal.confirm('是否确认提交?');
+    loading.value = true;
+    await updateAssignee(ids.value, data[0].userId)
+    handleQuery()
+    proxy?.$modal.msgSuccess('操作成功');
+  }else{
+    proxy?.$modal.msgWarning('请选择用户!');
   }
   }
 };
 };
 </script>
 </script>