Compare commits
	
		
			3 Commits
		
	
	
		
			7328df959d
			...
			bc9fd221a5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bc9fd221a5 | |||
| 256edf264e | |||
| d01ce5d4a4 | 
| @@ -14,7 +14,7 @@ | |||||||
|         <el-input v-model="formData.processInstanceKey" disabled placeholder="请输入流程标识" /> |         <el-input v-model="formData.processInstanceKey" disabled placeholder="请输入流程标识" /> | ||||||
|       </el-form-item> |       </el-form-item> | ||||||
|       <el-form-item label="规则类型" prop="type"> |       <el-form-item label="规则类型" prop="type"> | ||||||
|         <el-select v-model="formData.type" clearable style="width: 100%"> |         <el-select v-model="formData.type" clearable style="width: 100%" disabled> | ||||||
|           <el-option |           <el-option | ||||||
|             v-for="dict in getIntDictOptions(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE)" |             v-for="dict in getIntDictOptions(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE)" | ||||||
|             :key="dict.value" |             :key="dict.value" | ||||||
| @@ -165,7 +165,7 @@ const open = async (row) => { | |||||||
|   resetForm() |   resetForm() | ||||||
|   // 2. 再设置表单 |   // 2. 再设置表单 | ||||||
|   if (row != null) { |   if (row != null) { | ||||||
|     formData.value.type = undefined as unknown as number |     formData.value.type = 30 | ||||||
|     formData.value.taskName = row.name |     formData.value.taskName = row.name | ||||||
|     formData.value.taskId = row.id |     formData.value.taskId = row.id | ||||||
|     formData.value.processInstanceName = row.processInstance.name |     formData.value.processInstanceName = row.processInstance.name | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ | |||||||
|       @current-change="currentChange" |       @current-change="currentChange" | ||||||
|     > |     > | ||||||
|       <template #category="{ row }"> |       <template #category="{ row }"> | ||||||
|         <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="row.category || ''" /> |         <dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="row.category || ''"/> | ||||||
|       </template> |       </template> | ||||||
|       <template #status="scope"> |       <template #status="scope"> | ||||||
|         <dict-tag |         <dict-tag | ||||||
| @@ -39,7 +39,8 @@ | |||||||
|       </template> |       </template> | ||||||
|       <template #menu-left> |       <template #menu-left> | ||||||
|         <el-button type="primary" v-hasPermi="['bpm:process-instance:query']" @click="handleCreate"> |         <el-button type="primary" v-hasPermi="['bpm:process-instance:query']" @click="handleCreate"> | ||||||
|           <Icon icon="ep:plus" class="mr-5px" /> 发起流程 |           <Icon icon="ep:plus" class="mr-5px"/> | ||||||
|  |           发起流程 | ||||||
|         </el-button> |         </el-button> | ||||||
|       </template> |       </template> | ||||||
|       <!-- 自定义操作栏 --> |       <!-- 自定义操作栏 --> | ||||||
| @@ -52,7 +53,7 @@ | |||||||
|         > |         > | ||||||
|           详情 |           详情 | ||||||
|         </el-button> |         </el-button> | ||||||
|         <!-- <el-button |         <el-button | ||||||
|           link |           link | ||||||
|           type="danger" |           type="danger" | ||||||
|           v-if="row.result === 1" |           v-if="row.result === 1" | ||||||
| @@ -60,21 +61,21 @@ | |||||||
|           @click="handleCancel(row)" |           @click="handleCancel(row)" | ||||||
|         > |         > | ||||||
|           取消 |           取消 | ||||||
|         </el-button> --> |         </el-button> | ||||||
|       </template> |       </template> | ||||||
|     </avue-crud> |     </avue-crud> | ||||||
|   </ContentWrap> |   </ContentWrap> | ||||||
| </template> | </template> | ||||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||||
| import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' | import {DICT_TYPE, getIntDictOptions} from '@/utils/dict' | ||||||
| import { dateFormatter, getSearchDate } from '@/utils/formatTime' | import {dateFormatter, getSearchDate} from '@/utils/formatTime' | ||||||
| import * as ProcessInstanceApi from '@/api/bpm/processInstance' | import * as ProcessInstanceApi from '@/api/bpm/processInstance' | ||||||
|  |  | ||||||
| defineOptions({ name: 'BpmCCProcessInstance' }) | defineOptions({name: 'BpmCCProcessInstance'}) | ||||||
| const router = useRouter() // 路由 | const router = useRouter() // 路由 | ||||||
| const message = useMessage() // 消息弹窗 | const message = useMessage() // 消息弹窗 | ||||||
| const { t } = useI18n() // 国际化 | const {t} = useI18n() // 国际化 | ||||||
| const { getCurrPermi } = useCrudPermi() | const {getCurrPermi} = useCrudPermi() | ||||||
|  |  | ||||||
| const loading = ref(true) // 列表的加载中 | const loading = ref(true) // 列表的加载中 | ||||||
| const tableOption = reactive({ | const tableOption = reactive({ | ||||||
| @@ -104,7 +105,7 @@ const tableOption = reactive({ | |||||||
|       type: 'select', |       type: 'select', | ||||||
|       span: 12, |       span: 12, | ||||||
|       dicData: getIntDictOptions(DICT_TYPE.BPM_MODEL_CATEGORY), |       dicData: getIntDictOptions(DICT_TYPE.BPM_MODEL_CATEGORY), | ||||||
|       rules: [{ required: true, message: '流程分类不能为空', trigger: 'blur' }] |       rules: [{required: true, message: '流程分类不能为空', trigger: 'blur'}] | ||||||
|     }, |     }, | ||||||
|     tasks: { |     tasks: { | ||||||
|       label: '当前审批任务' |       label: '当前审批任务' | ||||||
| @@ -115,7 +116,7 @@ const tableOption = reactive({ | |||||||
|       type: 'select', |       type: 'select', | ||||||
|       span: 12, |       span: 12, | ||||||
|       dicData: getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS), |       dicData: getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS), | ||||||
|       rules: [{ required: true, message: '状态不能为空', trigger: 'blur' }] |       rules: [{required: true, message: '状态不能为空', trigger: 'blur'}] | ||||||
|     }, |     }, | ||||||
|     result: { |     result: { | ||||||
|       label: '结果', |       label: '结果', | ||||||
| @@ -123,7 +124,7 @@ const tableOption = reactive({ | |||||||
|       type: 'select', |       type: 'select', | ||||||
|       span: 12, |       span: 12, | ||||||
|       dicData: getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT), |       dicData: getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT), | ||||||
|       rules: [{ required: true, message: '结果不能为空', trigger: 'blur' }] |       rules: [{required: true, message: '结果不能为空', trigger: 'blur'}] | ||||||
|     }, |     }, | ||||||
|     createTime: { |     createTime: { | ||||||
|       label: '提交时间', |       label: '提交时间', | ||||||
| @@ -203,7 +204,8 @@ const searchChange = (params, done) => { | |||||||
|  |  | ||||||
| /** 清空按钮操作 */ | /** 清空按钮操作 */ | ||||||
| const resetChange = () => { | const resetChange = () => { | ||||||
|   searchChange({}, () => {}) |   searchChange({}, () => { | ||||||
|  |   }) | ||||||
| } | } | ||||||
|  |  | ||||||
| const sizeChange = (pageSize) => { | const sizeChange = (pageSize) => { | ||||||
| @@ -218,7 +220,7 @@ const currentChange = (currentPage) => { | |||||||
| /** 取消按钮操作 */ | /** 取消按钮操作 */ | ||||||
| const handleCancel = async (row) => { | const handleCancel = async (row) => { | ||||||
|   // 二次确认 |   // 二次确认 | ||||||
|   const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', { |   const {value} = await ElMessageBox.prompt('请输入取消原因', '取消流程', { | ||||||
|     confirmButtonText: t('common.ok'), |     confirmButtonText: t('common.ok'), | ||||||
|     cancelButtonText: t('common.cancel'), |     cancelButtonText: t('common.cancel'), | ||||||
|     inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格 |     inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格 | ||||||
|   | |||||||
							
								
								
									
										175
									
								
								src/views/bpm/task/copy/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								src/views/bpm/task/copy/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | |||||||
|  | <!-- 工作流,抄送我的流程 --> | ||||||
|  | <template> | ||||||
|  |   <ContentWrap> | ||||||
|  |     <avue-crud | ||||||
|  |       ref="crudRef" | ||||||
|  |       v-model="tableForm" | ||||||
|  |       v-model:page="tablePage" | ||||||
|  |       v-model:search="tableSearch" | ||||||
|  |       :data="tableData" | ||||||
|  |       :option="tableOption" | ||||||
|  |       :permission="permission" | ||||||
|  |       @search-change="searchChange" | ||||||
|  |       @search-reset="resetChange" | ||||||
|  |       @refresh-change="getTableData" | ||||||
|  |       @size-change="sizeChange" | ||||||
|  |       @current-change="currentChange" | ||||||
|  |     > | ||||||
|  |       <template #menu="{ row }"> | ||||||
|  |         <el-button link type="primary" @click="handleAudit(row)">流程</el-button> | ||||||
|  |       </template> | ||||||
|  |     </avue-crud> | ||||||
|  |   </ContentWrap> | ||||||
|  | </template> | ||||||
|  | <script lang="ts" setup> | ||||||
|  | import {dateFormatter} from '@/utils/formatTime' | ||||||
|  | import * as ProcessInstanceApi from '@/api/bpm/processInstance' | ||||||
|  |  | ||||||
|  | defineOptions({ | ||||||
|  |   name: 'BpmCopyTask' | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | // 路由 | ||||||
|  | const {push} = useRouter() | ||||||
|  | // 列表的加载中 | ||||||
|  | const loading = ref(true) | ||||||
|  |  | ||||||
|  | const {getCurrPermi} = useCrudPermi() | ||||||
|  |  | ||||||
|  | // 表格的配置 | ||||||
|  | const tableOption = reactive({ | ||||||
|  |   addBtn: false, | ||||||
|  |   editBtn: false, | ||||||
|  |   delBtn: false, | ||||||
|  |   viewBtn: true, | ||||||
|  |   viewBtnText: '详情', | ||||||
|  |   viewBtnIcon: 'none', | ||||||
|  |   align: 'center', | ||||||
|  |   headerAlign: 'center', | ||||||
|  |   searchMenuSpan: 6, | ||||||
|  |   searchMenuPosition: 'left', | ||||||
|  |   labelSuffix: ' ', | ||||||
|  |   span: 24, | ||||||
|  |   dialogWidth: '50%', | ||||||
|  |   column: { | ||||||
|  |     taskId: { | ||||||
|  |       label: '任务编号' | ||||||
|  |     }, | ||||||
|  |     taskName: { | ||||||
|  |       label: '任务名称' | ||||||
|  |     }, | ||||||
|  |     processInstanceId: { | ||||||
|  |       label: '流程编号', | ||||||
|  |       search: true, | ||||||
|  |     }, | ||||||
|  |     processInstanceName: { | ||||||
|  |       label: '所属流程', | ||||||
|  |       search: true, | ||||||
|  |     }, | ||||||
|  |     startUserNickname: { | ||||||
|  |       label: '流程发起人', | ||||||
|  |     }, | ||||||
|  |     reason: { | ||||||
|  |       label: '抄送原因' | ||||||
|  |     }, | ||||||
|  |     creatorNickname: { | ||||||
|  |       label: '抄送人' | ||||||
|  |     }, | ||||||
|  |     createTime: { | ||||||
|  |       label: '抄送时间', | ||||||
|  |       type: 'datetime', | ||||||
|  |       width: 180, | ||||||
|  |       formatter: (row: any, value: any, rowv: any, column: any) => { | ||||||
|  |         return dateFormatter(row, column, value) | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     searchCreateTime: { | ||||||
|  |       label: '抄送时间', | ||||||
|  |       display: false, | ||||||
|  |       hide: true, | ||||||
|  |       search: true, | ||||||
|  |       searchType: 'datetimerange', | ||||||
|  |       valueFormat: 'YYYY-MM-DD HH:mm:ss', | ||||||
|  |       startPlaceholder: '开始时间', | ||||||
|  |       endPlaceholder: '结束时间', | ||||||
|  |       searchRange: true, | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | const tableForm = ref<any>({}) | ||||||
|  | const tableData = ref([]) | ||||||
|  | const tableSearch = ref<any>({}) | ||||||
|  | const tablePage = ref({ | ||||||
|  |   currentPage: 1, | ||||||
|  |   pageSize: 10, | ||||||
|  |   total: 0 | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | const permission = getCurrPermi(['bpm:task']) | ||||||
|  |  | ||||||
|  | const crudRef = ref() | ||||||
|  | useCrudHeight(crudRef) | ||||||
|  |  | ||||||
|  | const getTableData = async () => { | ||||||
|  |   // 列表的加载中... | ||||||
|  |   loading.value = true | ||||||
|  |   // 拼接查询参数 | ||||||
|  |   let searchObj = { | ||||||
|  |     ...tableSearch.value, | ||||||
|  |     pageNo: tablePage.value.currentPage, | ||||||
|  |     pageSize: tablePage.value.pageSize | ||||||
|  |   } | ||||||
|  |   // 处理时间参数,如果为空则去掉这个属性 | ||||||
|  |   if (!searchObj.createTime?.length) delete searchObj.createTime | ||||||
|  |   // 去掉空字符串属性 | ||||||
|  |   for (let key in searchObj) if (searchObj[key] === '') delete searchObj[key] | ||||||
|  |  | ||||||
|  |   // 请求我的待阅数据 | ||||||
|  |   try { | ||||||
|  |     const data = await ProcessInstanceApi.getProcessInstanceCCPage(searchObj) | ||||||
|  |     tableData.value = data.list | ||||||
|  |     tablePage.value.total = data.total | ||||||
|  |   } finally { | ||||||
|  |     // 无论请求成功或者失败,这里都需要将加载中关闭 | ||||||
|  |     loading.value = false | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const searchChange = (params: any, done: any) => { | ||||||
|  |   tablePage.value.currentPage = 1 | ||||||
|  |   // 获取数据 | ||||||
|  |   getTableData().finally(() => done()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const resetChange = () => { | ||||||
|  |   searchChange({}, () => { | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const sizeChange = (pageSize) => { | ||||||
|  |   tablePage.value.pageSize = pageSize | ||||||
|  |   resetChange() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const currentChange = (currentPage) => { | ||||||
|  |   tablePage.value.currentPage = currentPage | ||||||
|  |   getTableData() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const handleAudit = (row: any) => { | ||||||
|  |   push({ | ||||||
|  |     name: 'BpmProcessInstanceDetail', | ||||||
|  |     query: { | ||||||
|  |       id: row.processInstanceId | ||||||
|  |     } | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** 初始化 **/ | ||||||
|  | onMounted(async () => { | ||||||
|  |   await getTableData() | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | </script> | ||||||
| @@ -26,7 +26,7 @@ | |||||||
|       </template> |       </template> | ||||||
|       <template #menu="{ row }"> |       <template #menu="{ row }"> | ||||||
|         <el-button link type="primary" @click="handleAudit(row)">审批</el-button> |         <el-button link type="primary" @click="handleAudit(row)">审批</el-button> | ||||||
| <!--        <el-button link type="primary" @click="handleCC(row)">抄送</el-button>--> |         <el-button link type="primary" @click="handleCC(row)">抄送</el-button> | ||||||
|       </template> |       </template> | ||||||
|     </avue-crud> |     </avue-crud> | ||||||
|     <TaskCCDialogForm ref="taskCCDialogForm" /> |     <TaskCCDialogForm ref="taskCCDialogForm" /> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user